Data Science
Road Accident Fatalities across Indian States: An Applied Statistical Study of MoRTH Open Data
What five years of state-wise crash data say about where and why Indian roads kill — cleaned, tested and visualised
- Python
- pandas
- NumPy
- +5
From CPCB's open data to policy-ready dashboards for four metro cities
Mapped to your syllabusMumbai University B.Sc IT 2022-23 (autonomous-college mirror) · Project Dissertation · Semester 5Air Quality in Indian Metro Cities is a beginner-friendly analytics study for the B.Sc. IT Phase I project dissertation (Semester 5) at the University of Mumbai. It turns the Central Pollution Control Board's open data — published on the Government of India's data.gov.in portal as the Real Time Air Quality Index from Various Locations resource — into a clean, reproducible analysis of how air quality actually behaves in Delhi, Mumbai, Kolkata and Chennai, and then presents the findings in an interactive Power BI dashboard.
The study answers questions news headlines usually blur: How much worse is Delhi's winter air than its monsoon air, numerically? Which of the four metro cities has the highest share of days in the Poor or worse AQI categories? Do two stations in the same city disagree, and what does that say about siting? The work stays deliberately beginner-level: one scripted pipeline (fetch → clean → aggregate), plain pandas operations, matplotlib charts for the report, and Power BI Desktop's drag-and-drop interface for the dashboard — no forecasting models, no cloud deployment.
Everything is designed to be re-run by anyone: the pipeline is a handful of short scripts, the data is free government open data accessed with a personal API key from data.gov.in, the historical baseline comes from a CPCB-derived city-level dataset (2015–2020), and every chart regenerates from the cleaned CSV files. The deliverable is a Phase I dissertation that reads like an honest policy brief — plus a dashboard the viva panel can click through.
Syllabus alignment
Indian metro cities debate air quality every winter, but the public conversation runs on single-day numbers: today's AQI, this week's emergency order. The Central Pollution Control Board actually publishes the underlying measurements as open government data on data.gov.in, yet the resource arrives as long-format station rows with missing readings, inconsistent station names and no aggregation — unusable for citizens, journalists or students without a cleaning pipeline. As a result, comparisons that matter for policy — how deep the winter spike is relative to the monsoon trough in each city, which stations are chronically the worst, whether the share of days in Poor-or-worse categories is changing year over year — get asserted without being shown.
This project fills that gap at beginner scale: a documented, reproducible Python pipeline plus a Power BI dashboard that turns CPCB's open data for Delhi, Mumbai, Kolkata and Chennai into clear, honest, sourceable findings that a non-technical reader can verify.
This study analyses Central Pollution Control Board (CPCB) air-quality data for four Indian metro cities using Python and Power BI. A scripted pipeline acquires data from the data.gov.in open-government portal and a CPCB-derived 2015–2020 city-level dataset, cleans it into a tidy table, and produces exploratory, trend and cross-city analyses: monthly and seasonal patterns, pollutant profiles, and city-to-city and station-to-station comparisons. Findings are presented as an interactive Power BI dashboard and a policy-relevant dissertation chapter.
Air quality is the most visible environmental issue in Indian cities, and Delhi-NCR's winter smog makes national news every November. Yet the underlying data is public: CPCB publishes station-level readings through data.gov.in under the government's open-data policy. The gap is not data availability but usability — the raw resource is a long list of station-pollutant-value rows that a citizen cannot directly interpret. This project converts that raw feed into context: trends, seasons and honest comparisons, built with beginner-level tools the B.Sc. IT syllabus already teaches.
A three-layer study. The pipeline layer is two Python scripts: fetch (download the data.gov.in resource via its API using a personal key, or load the bundled historical CSV) and prepare (parse dates, map AQI categories, resolve station-name variants, handle missing readings, aggregate to city-month level). The analysis layer is Jupyter notebooks producing the EDA, seasonal decomposition by month, year-over-year comparisons and the three headline findings. The presentation layer is a Power BI Desktop dashboard with city, year and pollutant slicers and a map visual of station locations.
In scope
Out of scope (and why)
The study follows a descriptive analytics research design: define questions → acquire → clean → aggregate → visualise → interpret, executed as a 12-week pipeline mapped to the Phase I (Semester 5) project-dissertation slot. Each phase ends with a versioned artefact (raw CSV, clean CSV, notebook, dashboard), so the guide can review concrete outputs at every meeting.
| Phase | Weeks | Activities | Deliverable |
|---|---|---|---|
| Question setting | 1 | Pick the three comparison questions; register at data.gov.in and obtain the API key; record sources | Question list, source register |
| Acquisition | 2–3 | Fetch the resource via API and download the 2015–2020 historical dataset; log row counts and gaps | raw/ folder with fetch log |
| Cleaning | 4–5 | prepare.py: date parsing, station-name normalisation, AQI category mapping, missing-value policy (documented, not hidden), long-to-wide reshape | data/clean CSVs + data dictionary |
| EDA | 6–7 | Notebook 01: distributions, monthly means, pollutant profiles, missing-data map | EDA notebook and figures |
| Trends and comparisons | 8–9 | Notebook 02: seasonal month-by-month pattern, year-over-year changes, city and station comparisons, winter deep dive | Findings tables and charts |
| Dashboard | 10 | Build the Power BI model (City, Station, Reading, Date dimensions), measures and slicers; test filters | .pbix dashboard |
| Writing and review | 11–12 | Dissertation draft (Phase I format), README, reproducibility pass, guide review | Phase I report |
Quality checks built in: after cleaning, the script prints row counts before and after each rule so nothing is dropped silently; three known readings are spot-checked against the live portal table; and every figure caption in the report names the generating notebook cell, so the external can trace any chart back to code.
The architecture is a simple one-way pipeline with a CSV hand-off — deliberately beginner-shaped, with no database or cloud dependency in Phase I (MySQL remains available if the guide prefers a database deliverable, since the syllabus includes it). Everything on the left of the hand-off is scripted Python; everything on the right is notebooks and Power BI, both reading the same clean files so the dashboard and the dissertation can never disagree.
flowchart TD
DG["data.gov.in resource: Real Time AQI from Various Locations"] --> F["fetch.py with personal API key"]
KG["CPCB-derived 2015-2020 city-level CSV"] --> F
F --> RAW["raw/ folder with fetch log"]
RAW --> P["prepare.py: clean, normalise, map AQI categories"]
P --> QC["Quality gate: row counts, spot-checks vs portal"]
QC --> CL["data/clean CSVs + data dictionary"]
CL --> N1["Notebook 01: EDA and distributions"]
CL --> N2["Notebook 02: trends and comparisons"]
N1 --> FIG["Figures for the dissertation"]
N2 --> FIG
CL --> PBI["Power BI Desktop: City, Station, Date, Reading tables"]
PBI --> DASH["Dashboard with slicers and station map"]
FIG --> RPT["Phase I dissertation"]
DASH --> RPTThe dashboard reads a small star-shaped layout — one fact table of readings plus three lookup tables — which keeps DAX measures simple and is the gentlest possible introduction to dimensional thinking:
erDiagram
CITY ||--o{ STATION : "has"
STATION ||--o{ READING : "records"
DATE ||--o{ READING : "dates"
CITY {
string city_id PK
string city_name
string state
}
STATION {
string station_id PK
string city_id FK
string station_name
real latitude
real longitude
}
DATE {
date date_id PK
int month
string season
int year
}
READING {
string reading_id PK
string station_id FK
date date_id FK
string pollutant
real value
int aqi
string aqi_category
}Design choices worth defending: a long-format fact table (one row per station-date-pollutant) matches how the portal publishes data and makes slicers trivial; a Season column derived from the month carries the study's central comparison; and keeping raw data immutable under raw/ means any cleaning mistake can be fixed by re-running, not by patching.
Package 01
Registers at data.gov.in, stores the API key in an environment variable (never in code), fetches the Real Time AQI resource as CSV/JSON with a logged download date, and downloads the CPCB-derived 2015–2020 city-level dataset as the historical baseline.
Package 02
prepare.py parses dates, normalises station-name spellings into a lookup table, maps pollutant names, fills or flags missing readings under a written policy, maps AQI values to CPCB's six categories, reshapes long rows and writes tidy city-day and station-day CSVs with a data dictionary.
Package 03
Notebook 01 computes city-level summaries, pollutant distributions and monthly means, plots PM2.5 versus PM10 behaviour, and charts the missing-data footprint per station, so the report's later claims rest on a visible data-quality foundation.
Package 04
Notebook 02 builds the month-by-month seasonal curve per city, quantifies the winter-to-monsoon ratio for PM2.5, compares year-over-year monthly means across 2015–2020, and adds the Delhi winter deep dive covering the November–February window.
Package 05
Ranks the four cities on share of days in Poor-or-worse categories each year, compares all-station medians within each city to expose intra-city spread, and identifies each city's chronically worst station with its siting context (industrial, kerbside, residential).
Package 06
Loads the clean CSVs into Power BI Desktop as a star schema, defines measures such as monthly mean AQI, peak AQI and Poor-or-worse day share, and lays out pages with city/year/pollutant slicers, a station map, and a findings page that mirrors the dissertation's headline tables.
Package 07
A written module that states the three headline findings with their exact supporting charts, annotates each with data-gap caveats, and closes with a one-page policy-relevant summary (season-timed advisories, station-level targeting) that never overclaims causation.
Slide 1
Air Quality in Indian Metro Cities
Slide 2
The Problem: Data-Rich, Insight-Poor
Slide 3
Study Questions
Slide 4
Data Sources
Slide 5
Pipeline Architecture
Slide 6
Cleaning Decisions
Slide 7
EDA Findings
Slide 8
Trend and Seasonality Results
Slide 9
City and Station Comparison
Slide 10
Power BI Dashboard Demo
Slide 11
Limitations
Slide 12
Conclusion and Phase II Plan
Bullets, speaker notes and the .pptx · ₹2,000
Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.
CPCB computes a sub-index for each of eight pollutants from its concentration breakpoints, and the overall AQI is the worst of those sub-indices. The single number then falls into six colour-coded categories from Good to Severe, which is what the study's aqi_category column reproduces from the published breakpoints.
Daily readings are noisy and gappy, and the study's questions are about seasonal structure and year-over-year change, not single days. Monthly means smooth sensor noise, make missing days less damaging, and produce charts a policy reader can interpret — while the data-quality module still reports how many days fed each monthly mean.
PM10 is inhalable coarse particles up to 10 microns; PM2.5 is the fine fraction under 2.5 microns that penetrates deepest into the lungs. PM2.5 drives the AQI in most Delhi winter days, which is why the study's headline ratios are computed on PM2.5 rather than on the coarser PM10 series.
+11 more questions, with answers
Unlocks with the project · ₹2,000
Unlock for ₹2,000What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.
Unlocks with the project · ₹2,000
Unlock for ₹2,000How to study it, adapt it and walk your examiner through it, step by step.
Unlocks with the project · ₹2,000
Unlock for ₹2,000OnlyProjects. (2026). Air Quality in Indian Metro Cities: An Analytics Study of CPCB Open Data (Python and Power BI): B.Sc Data Science project bundle [Educational resource]. https://onlyprojects.online/projects/bsc-ds-metro-air-quality-cpcb-analytics
Keep browsing
Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.
Data Science
What five years of state-wise crash data say about where and why Indian roads kill — cleaned, tested and visualised
Data Science
Baselines, confusion matrices and thresholds on UCI's ILPD — screening, not diagnosis
Agriculture
Cattle-dung blends with paddy straw, leaf litter and market waste, benchmarked against FCO Schedule IV specifications
Biochemistry
A p-nitrophenyl phosphate assay read at 405 nm, non-linear Michaelis-Menten fitting, and competitive inhibition by inorganic phosphate
Biotechnology
Four disinfestation protocols, 144 nodal explants on MS medium, and chi-square tests that decide which protocol actually wins
Botany
Frequency, density, abundance and IVI from 20 nested quadrats, with Shannon, Simpson and Jaccard comparisons of a protected and a disturbed plot