Skip to content

UDISE+ — School Education Data


Provider
Ministry of Education (MoE), NIEPA
Access Level
🟢 Reports free; 🟡 School-level data needs login
Formats Available
PDF, Excel, CSV (reports), School-level data
Coverage
National → Every School (1.5 million+ schools)
Updated
Annually (UDISE+ 2022-23 is latest)

What UDISE+ Covers

UDISE+ (Unified District Information System for Education Plus) collects data from every school in India — government, government-aided, and private.

For each school, UDISE+ has:

Category Indicators
Enrollment Boys/Girls by class (I to XII), SC/ST/OBC/Minority
Teachers Total, by gender, qualification, contract/regular
Infrastructure Rooms, toilets (boys/girls), drinking water, electricity, computers, library, boundary wall, ramp
Outcomes Dropout rate (class-wise), transition rate
Finances Government grants received
Location GPS coordinates, rural/urban, habitation

Key National Findings (UDISE+ 2022-23)

Indicator Value
Total schools 14,72,475
Total enrollment 25.17 crore
Girls' enrollment 48.9%
Schools with girls' toilet 95.0%
Schools with electricity 91.5%
Schools with computers 52.4%
Pupil-Teacher Ratio (PTR) — Elementary 26:1

How to Download UDISE+ Data

Method 1: Summary Reports (No Login) 🟢

  1. Go to udiseplus.gov.in
  2. Click "Reports""State/District/Block Reports"
  3. Select year → State → District
  4. Download PDF summary or Excel table
  5. Contains: enrollment, dropout, PTR, infrastructure averages by district

Method 2: School-Level Data (Login Required) 🟡

  1. Register at udiseplus.gov.in → Request school-level access
  2. After approval: download school-level CSV with UDISE codes and GPS coordinates

Method 3: Pre-Compiled Open Data 🟢

Many UDISE summary tables are available on data.gov.in:

  1. Search: "UDISE school district" or "enrollment dropout rate"
  2. Download structured CSV

Python: Pupil-Teacher Ratio Analysis

import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt

# Load UDISE district summary (from data.gov.in or udiseplus.gov.in)
udise = pd.read_csv("udise_district_2022_23.csv")

# Calculate PTR for elementary schools
udise['PTR_Elementary'] = udise['Enrollment_I_VIII'] / udise['Teachers_Elementary']

# Filter for Maharashtra
mh = udise[udise['State'] == 'Maharashtra'].copy()
mh = mh.sort_values('PTR_Elementary', ascending=False)

print("Districts with highest PTR (most overloaded):")
print(mh[['District', 'PTR_Elementary', 'Enrollment_I_VIII']].head(10).to_string())

# Map it
gadm = gpd.read_file("gadm41_IND_2.json")
gadm_mh = gadm[gadm['NAME_1'] == 'Maharashtra']
merged = gadm_mh.merge(mh, left_on='NAME_2', right_on='District')

fig, ax = plt.subplots(figsize=(10, 8))
merged.plot(column='PTR_Elementary', ax=ax, legend=True,
            cmap='OrRd', scheme='quantiles',
            legend_kwds={'title': 'Pupil-Teacher Ratio'})
ax.set_title("Elementary School PTR by District — Maharashtra (2022-23)")
ax.axis('off')
plt.tight_layout()
plt.savefig("mh_ptr_map.png", dpi=150)
plt.show()

✏️ Practice Exercise

Exercise 4.2 — School Infrastructure in Your District

Goal: Compare urban vs rural schools in your district on infrastructure indicators.

  1. Download UDISE+ block-level summary for your district (udiseplus.gov.in → Reports)
  2. Find: % schools with girls' toilet, % with electricity, % with computers
  3. Compare urban blocks vs rural blocks

Questions: - [ ] What % of schools in your district have functional girls' toilets? - [ ] What is the average PTR in your district? (Above 30 is considered overcrowded) - [ ] Which block has the worst school infrastructure? - [ ] Compare your district's PTR to the national average (26:1)


Next Dataset: HMIS Health Facility Data →