Women in India's workforce: a state-wise PLFS participation project
In this article (8 sections)
Related programme: the Data Analytics with Generative AI course (3–4 months; ₹90,000 (inclusive of GST) · EMI from ₹4,000/month).
The Periodic Labour Force Survey (PLFS) lets you compare women's labour force participation across Indian states, and the differences are large enough to make a compelling portfolio project. You will download state-wise female LFPR from MoSPI's eSankhyiki portal, keep the definitions consistent, compare rural and urban women, and show where Delhi, Haryana and Uttar Pradesh sit against the country. The output is a ranked chart and a gap table, built with enough care about definitions that a labour economist would accept it.
Getting PLFS from eSankhyiki
Go to MoSPI's eSankhyiki PLFS page. The filters we saw include frequency, indicator (for example LFPR), year type, year, age group, education, gender, religion, sector, social category, state and weekly status. The downloaded table had these columns:
Year Type, Year, Frequency, Indicator, State, Gender, Sector, Agegroup, Weekly Status,
Religion, Socialgroup, General Education, Quarter, Month, Value, UnitMonthly estimates also exist for recent periods, but for a state comparison use the annual figures, which rest on larger samples. The Metadata tab documents definitions. Read it before you filter.
Why an employer would care
Hiring, HR analytics, policy consulting and CSR teams all work with participation data, and female participation is one of the most discussed labour statistics in India. A project that ranks states correctly, keeps definitions consistent and resists over-interpreting the result shows the kind of statistical discipline a people-analytics or research team needs.
Definitions: fix them before you touch the data
The same table holds many versions of "LFPR". Choose one of each:
- Age group: 15 years and above is a common headline choice. 15–59 removes most retirement effects.
- Status approach: usual status (principal plus subsidiary) captures anyone who worked for a meaningful part of the year. Current weekly status captures the reference week. They give different numbers, and the difference is itself informative for women's work, which is often seasonal or part-time.
- Sector: rural, urban and total. National rankings on the total are dominated by rural patterns.
- Year type: calendar year or July–June agricultural year. Do not mix them.
Put these four choices in your chart subtitle, not just in the README.
Cleaning issues specific to PLFS downloads
- 1Many dimension columns are set to "All" or blank. Filter every one of them explicitly (Religion, Socialgroup, General Education and so on), or you will double-count subgroup rows.
- 2State names change over time. Check how the table names Delhi and any UT that merged or was reorganised.
- 3The Value column is a percentage, so read the Unit column and do not assume.
- 4Status labels. The synthetic sample below writes usual status as "PS+SS". Check the exact label the Weekly Status column uses in your download and match it exactly.
- 5Small states have large sampling error. PLFS is a survey. Look in the metadata for standard errors or sample sizes, and flag small-sample states rather than ranking them precisely.
Code on a synthetic extract
Every number below is synthetic. The state names are real, but the values are invented and do not describe PLFS results.
import pandas as pd
raw = pd.DataFrame({
"Year": ["2025"] * 12,
"Indicator": ["LFPR"] * 12,
"State": ["Delhi", "Delhi", "Haryana", "Haryana", "Uttar Pradesh", "Uttar Pradesh",
"Himachal Pradesh", "Himachal Pradesh", "All India", "All India", "Delhi", "All India"],
"Gender": ["female", "female", "female", "female", "female", "female",
"female", "female", "female", "female", "male", "male"],
"Sector": ["rural", "urban"] * 5 + ["urban", "urban"],
"Agegroup": ["15 years and above"] * 12,
"Weekly Status": ["PS+SS"] * 12,
"Religion": ["All"] * 12,
"Value": [28.0, 17.5, 30.2, 21.0, 34.8, 20.1, 62.5, 38.0, 45.0, 27.0, 72.0, 74.5],
"Unit": ["%"] * 12,
})
f = raw[(raw["Indicator"] == "LFPR") & (raw["Agegroup"] == "15 years and above")
& (raw["Weekly Status"] == "PS+SS") & (raw["Religion"] == "All")]
assert set(f["Unit"]) == {"%"}
women = f[f["Gender"] == "female"].pivot(index="State", columns="Sector", values="Value")
women["urban_minus_rural"] = women["urban"] - women["rural"]
national = women.loc["All India"]
women["urban_vs_india_pp"] = women["urban"] - national["urban"]
print(women.sort_values("urban", ascending=False).round(1))
gap = f[f["Sector"] == "urban"].pivot(index="State", columns="Gender", values="Value").dropna()
gap["gender_gap_pp"] = gap["male"] - gap["female"]
print(gap)The pivot will fail loudly if you forgot to filter a dimension, because duplicate index entries cannot be pivoted. That failure is useful. It is the earliest sign that you have mixed subgroups.
An analysis plan in five steps
- 1Fix the four definitions above and download one annual year, then the same definitions for earlier years.
- 2Rank states by female LFPR separately for rural and urban. Mark states with small samples.
- 3Compute the male–female gap by state and sector. A state can have low female LFPR and a small gap if male LFPR is also low.
- 4Track change over the years you have. Use percentage points, not percentages of percentages.
- 5Place Delhi, Haryana and Uttar Pradesh on the chart in a highlight colour, since they are the NCR states. Delhi is almost entirely urban, so compare it with urban figures.
What the finished work contains
| Output | Specification |
|---|---|
| Dot plot | Female LFPR by state, rural and urban dots joined by a line, sorted by urban |
| Gap table | State, female urban, male urban, gap, change since the first year |
| Small multiples | NCR states against All India over the available years |
| README | Source page, download date, the four definitions, filters, small-sample rule, limitations |
In the limitations, note that LFPR counts participation, not the quality or pay of work. It also cannot by itself explain why participation differs. Suggest candidate explanations, but do not assert them from this data.
Interview questions to prepare for
- Why do usual status and current weekly status give different female LFPR?
- Why is it misleading to rank states on the total rather than rural and urban separately?
- What is the difference between a 5-point increase and a 5% increase here?
- Two neighbouring states differ by 2 points. How would you decide whether that difference is real?
- What would you need, beyond PLFS, to explain the Delhi figure?
For a companion on the same survey, see the youth unemployment by education project. Careful filtering and clear comparison charts are central to our Data Analyst programme. You can check your starting point with the skill check.
Frequently asked questions
What is LFPR in PLFS?
The labour force participation rate is the share of people in an age group who are working or seeking work. PLFS publishes it by gender, sector, age group and state, under different activity status approaches, so always state the age group and status you used.
Pankit Kumar has 10 years in Data Science & AI, building and shipping production systems in regulated pharma and clinical environments. He is a freelance trainer at Boston Institute of Analytics, AnalytixLabs and Scaler, and has taught this material to thousands of working professionals.
This article is part of our Data Analytics with Generative AI programme — 3–4 months. The full analyst stack — Excel, SQL, Power BI and Python pipelines — then a generative-AI layer you can prove is right.
Explore Data Analytics with Generative AI