← Back to Portfolio Project Brief

India Fuel & EV Transition Dashboard

A state-level dashboard tracking India's shift from petrol to electric vehicles — and why absolute numbers alone hide the real story.

The Problem

India's EV transition is usually reported in absolute numbers — which state has the most EVs, which consumes the most fuel. But absolute figures conflate population size with actual behavior. A state can look "fuel dependent" simply because it has more people, or look like an EV leader simply because it counts e-rickshaws the same way it counts electric cars. This dashboard normalizes for population and vehicle mix to find the real pattern underneath.

The Data

State-level petrol consumption (2008–09 through 2024–25), population, total registered vehicles, and EV registrations, merged and normalized into per-capita consumption and EV-penetration metrics per state.

3.6× growth, 2008–2026 10 states ≈ 70% of demand

Key Finding — The UP Paradox

Uttar Pradesh is #1 in absolute petrol consumption (4,833 thousand MT) but drops to #10 per capita once its 241M population is accounted for. Kerala flips the pattern entirely — #8 in absolute terms, but #1 per capita. A Keralite consumes several times more petrol per person than a UP resident, a fact invisible in the raw absolute ranking.

The Four Quadrants

States classified by median petrol-per-capita vs. median EV penetration:

TransitioningHigh petrol use, high EV adoption
LeapfroggingLow petrol use, high EV adoption
Fuel DependentHigh petrol use, low EV adoption
Low MobilityLow petrol use, low EV adoption

Honest Limitation — The UP Caveat

UP's 4.7% EV penetration looks like strong "Leapfrogging" progress — but it's dominated by e-rickshaws, a completely different vehicle category from petrol cars. Strip e-rickshaws out and UP likely lands in "Low Mobility," not "Leapfrogging." This isn't a rounding error to smooth over — e-rickshaw electrification and 4-wheeler EV adoption need genuinely different policy interventions, and collapsing them into one number would mislead anyone using this data to make a decision.

Stack

Python Pandas Streamlit Plotly
View Live Demo → GitHub Repo