Exploratory data analysis of crime patterns across Indian cities — uncovering geographic, demographic, and temporal trends using real-world government data.
Crime data in India is collected across hundreds of cities and states but rarely analyzed in a way that reveals actionable patterns. Raw government datasets contain inconsistencies, missing values, and no visual context — making it difficult to identify which regions are most affected, which crime types are rising, and how gender-based crime is distributed across urban centers.
This project applies systematic EDA to transform raw crime data into clear, visual insights — helping understand the geographic spread, temporal trends, and demographic patterns of crime across India.
- Understand the geographic distribution of crimes across states and cities
- Identify trends in crimes against women
- Compare crime rates across Tier-1 and Tier-2 cities
- Reveal patterns through univariate and multivariate visualizations
- Provide data-backed insights relevant to public safety and policy
Crime Analysis India/
│
├── CrimeAnalysis.ipynb # Main Jupyter Notebook — full analysis
├── crime_dataset_india.csv # Crime dataset
└── README.md
Raw Data Processing Output
──────── ────────── ──────
CSV Dataset → Data Cleaning → Clean DataFrame
Clean Data → Univariate Analysis → Distribution Charts
Clean Data → Multivariate Analysis → Heatmaps, Grouped Plots
Insights → Visual Storytelling → Key Findings
- Handled missing and inconsistent values
- Standardized city and state name formats
- Filtered and segmented data by year, region, and crime type
- Crime type frequency distribution
- State-wise and city-wise crime counts
- Victim gender and age group distribution
- City vs crime type heatmap
- State vs gender-based crime grouped bar charts
- Year-over-year trend analysis per crime category
- Pivot tables for cross-dimensional pattern recognition
- Delhi and Mumbai report the highest number of crimes against women among all cities analyzed
- Urban Tier-1 cities show disproportionately higher gender-based crime counts compared to smaller cities
- Reported cases show a rising trend over the years in several northern states
- Southern cities like Chennai show elevated crime counts despite relatively lower overall crime rates
| Layer | Technology |
|---|---|
| Language | Python |
| Environment | Jupyter Notebook |
| Data Processing | Pandas, NumPy |
| Visualization | Matplotlib, Seaborn |
| Statistical Analysis | Scikit-learn |
- Python 3.8 or above
- Jupyter Notebook
# Clone the repository
cd Crime-Analysis-India
# Install dependencies
pip install pandas numpy matplotlib seaborn scikit-learn jupyter
# Open the notebook
jupyter notebook CrimeAnalysis.ipynb| Field | Details |
|---|---|
| File | crime_dataset_india.csv |
| Features | City, State, Year, Crime Type, Victim Gender, Crime Count |
| Coverage | Multiple Indian cities across several years |
Why EDA over a predictive model? Crime prediction requires longitudinal data with consistent feature engineering across years. The available dataset is better suited for pattern discovery — understanding what has happened and where — before building predictive models. EDA provides the foundation for any future ML work on this data.
Why focus on gender-based crimes? Crimes against women are systematically underreported and unevenly distributed across Indian cities. This makes them particularly important to visualize — small absolute numbers can represent significant concentrations when normalized by population.
- Add choropleth map visualization for state-level crime density
- Build a predictive model for crime rate forecasting
- Integrate population data for per-capita crime normalization
- Expand dataset to include rural crime statistics
MIT License — free to use, modify, and distribute.