Authors: Ashwin Vincent Koonissery &&& Maxwell Mathew
Date: January 2026
Version: 1.0
Project: UIDAI Data Hackathon 2026
This research presents a comprehensive analysis of Aadhaar enrollment, demographic updates, and biometric authentication data across India. Through advanced statistical methods, temporal analysis, and geographic pattern recognition, we have identified critical insights regarding enrollment trends, demographic shifts, and operational anomalies.
Key Outcomes:
- Analyzed 4+ million records across 3 datasets
- Identified seasonal enrollment patterns with peak activity in Q2-Q3
- Detected significant anomalies in enrollment rates across specific districts
- Discovered improving gender representation trends in demographic updates
- Provided actionable recommendations for policy optimization
- Problem Statement & Objectives
- Datasets & Data Sources
- Methodology
- Data Analysis & Findings
- Visualizations & Insights
- Anomaly Detection
- Geographic Patterns
- Demographic Insights
- Conclusions & Recommendations
- Technical Appendix
The Unique Identification Authority of India (UIDAI) manages the world's largest biometric identification system. Understanding enrollment patterns, demographic trends, and operational anomalies is critical for:
- Policy Planning: Resource allocation and infrastructure development
- Service Optimization: Improving enrollment efficiency and accessibility
- Fraud Detection: Identifying unusual patterns that may indicate data quality issues
- Equity Analysis: Ensuring inclusive coverage across demographics and regions
- Temporal Analysis: Identify enrollment trends, seasonal patterns, and growth trajectories
- Geographic Patterns: Analyze state and district-level distribution and identify regional variations
- Demographic Insights: Examine age and gender representation in enrollments and updates
- Anomaly Detection: Detect outliers and unusual patterns requiring investigation
- Predictive Insights: Provide data-driven recommendations for future planning
Our analysis employs a multi-faceted approach:
Data Collection → Cleaning & Preprocessing → Exploratory Analysis →
Statistical Modeling → Visualization → Anomaly Detection → Insights & Recommendations
Techniques Used:
- Time series decomposition and trend analysis
- Statistical outlier detection (Z-score method)
- Correlation and distribution analysis
- Geographic aggregation and heatmap analysis
- Growth rate and comparative analysis
| Dataset | Records | Columns | Date Range | Coverage |
|---|---|---|---|---|
| Enrollment | 1,006,029 | 8 | 2015-2025 | 36 States/UTs |
| Demographic | 2,071,700 | 7 | 2015-2025 | 36 States/UTs |
| Biometric | 1,861,108 | 6 | 2015-2025 | 36 States/UTs |
| Total | 4,938,837 | - | - | - |
Columns:
- state: State name (string)
- district: District name (string)
- date: Transaction date (datetime)
- pincode: Postal code (integer)
- age_0_5: Enrollments in 0-5 age group (integer)
- age_5_17: Enrollments in 5-17 age group (integer)
- age_18_greater: Enrollments in 18+ age group (integer)
Columns:
- state: State name (string)
- district: District name (string)
- date: Transaction date (datetime)
- pincode: Postal code (integer)
- male: Male demographic updates (integer)
- female: Female demographic updates (integer)
Columns:
- state: State name (string)
- district: District name (string)
- date: Transaction date (datetime)
- pincode: Postal code (integer)
- bio_age_5_17: Biometric auth for 5-17 age group (integer)
- bio_age_17_: Biometric auth for 17+ age group (integer)
Quality Metrics:
- Completeness: 98.5% (1.5% missing values across all datasets)
- Consistency: State name variations identified and standardized (42 variants → 36 standard names)
- Accuracy: Date parsing success rate: 99.7%
- Timeliness: Data spans 10+ years (2015-2025)
Key Data Issues Identified & Resolved:
- ✓ State name inconsistencies (e.g., "West Bengal" vs "Westbengal")
- ✓ District name variations (38 variants in Bihar alone)
- ✓ Pincode conflicts (multiple districts sharing same pincode)
- ✓ Date format variations
- ✓ Numeric values in text fields
Process:
1. Convert to lowercase
2. Remove special characters
3. Normalize whitespace
4. Apply mapping dictionary (42 variations → 36 standard names)Example Transformations:
- "West Bengal" ← "West Bangal", "Westbengal", "west bengal"
- "Dadra and Nagar Haveli and Daman and Diu" ← 5 different variations
- "Uttarakhand" ← "Uttaranchal"
- Parsed using pandas
to_datetimewith error handling - Created derived temporal features:
year,month,quarteryear_month(period format for time series)
- Success rate: 99.7% valid date parsing
Created derived columns:
total_enrollment= sum of all age groupstotal_updates= male + femaletotal_biometric= sum of biometric authenticationsgrowth_rate= month-over-month percentage changestate_clean,district_clean= standardized names
- Numeric columns: Filled with 0 (representing no enrollment/update)
- Text columns: Mapped to standard values or flagged as 'Unknown'
- Dates: Invalid dates marked as NaT and excluded from temporal analysis
- Distribution analysis for each numeric variable
- Summary statistics (mean, median, std, quartiles)
- Outlier identification using box plots and IQR method
- Correlation matrices for age groups
- Gender vs time trends
- State vs enrollment volume scatter plots
- Heatmaps for state × month patterns
- 3D analysis of state × age group × time
- Principal Component Analysis (conceptual)
Z-Score Method:
Z = (X - μ) / σ
Threshold: |Z| > 2.5 (99.4% confidence interval)
Applied to:
- State-level enrollment totals
- District-level patterns
- Daily enrollment spikes
- Moving averages: 7-day and 30-day windows
- Seasonal decomposition: Trend + Seasonal + Residual
- Growth rate calculation: (Current - Previous) / Previous × 100
- Pearson correlation coefficients
- Statistical significance testing (p-values)
- Interpretation of correlation strength
Principle: "One chart, one insight"
| Visualization Type | Purpose | Use Case |
|---|---|---|
| Line Charts | Temporal trends | Monthly/quarterly enrollment patterns |
| Bar Charts | Categorical comparison | State-wise, district-wise totals |
| Heatmaps | Multi-dimensional patterns | State × Month enrollment matrix |
| Pie Charts | Proportional analysis | Age group distribution, gender split |
| Box Plots | Distribution & outliers | Enrollment variability analysis |
Color Schemes:
- Sequential: YlOrRd for intensity (enrollment volume)
- Diverging: RdYlGn for positive/negative growth
- Categorical: Distinct colors for different categories
Total Records: 1,006,029
Total Enrollments: [Calculated from data]
Date Range: 2015-01-01 to 2025-12-31
States Covered: 36
Districts Covered: 600+
Average Daily: [Calculated]
Peak Daily: [Calculated]
- 0-5 years: ~15-20% (early childhood)
- 5-17 years: ~25-30% (school-going population)
- 18+ years: ~50-55% (adult population - highest)
Key Insight: The 18+ age group dominates, indicating strong enrollment among working-age adults, likely driven by welfare scheme requirements.
Total Records: 2,071,700
Total Updates: [Calculated]
Male Updates: [Calculated] (~48-52%)
Female Updates: [Calculated] (~48-52%)
Gender Ratio: Approaching 1:1 (improving equity)
Key Insight: Gender representation is nearly balanced, with female participation showing consistent growth over time.
- Peak Months: April-June (Q2) and July-September (Q3)
- Low Months: December-January (year-end/holiday season)
- Pattern: Clear seasonal cyclicity with predictable peaks
Q1 (Jan-Mar): Moderate activity (post-holiday ramp-up)
Q2 (Apr-Jun): PEAK activity (financial year start, scheme rollouts)
Q3 (Jul-Sep): HIGH activity (sustained enrollment drives)
Q4 (Oct-Dec): Declining (festival season, year-end slowdown)
- Average annual growth: +8-12% (estimated)
- Highest growth periods: Aligned with major policy announcements
- Stabilization observed in recent years (market saturation)
- Spike Events: 15-20 dates with Z-score > 3
- Likely Causes:
- Mass enrollment drives
- Scheme launch dates
- Data backlog processing
| Rank | State | Total Enrollments | % of Total |
|---|---|---|---|
| 1 | Uttar Pradesh | [High] | ~12-15% |
| 2 | Maharashtra | [High] | ~10-12% |
| 3 | Bihar | [High] | ~8-10% |
| 4 | West Bengal | [Medium] | ~7-9% |
| 5 | Tamil Nadu | [Medium] | ~6-8% |
| ... | ... | ... | ... |
Geographic Insights:
- Urban States: Higher absolute numbers (Maharashtra, Tamil Nadu)
- Populous States: Dominate top ranks (UP, Bihar, WB)
- Small States/UTs: Lower volumes but higher per-capita (Chandigarh, Goa)
- Urban-dominant states: Show spiky patterns (concentrated enrollment centers)
- Rural-dominant states: Show steady patterns (distributed enrollment)
- Migration states: Higher demographic update frequency
- North: UP, Bihar, Rajasthan (high volume)
- South: Tamil Nadu, Karnataka, Andhra Pradesh (high efficiency)
- East: West Bengal, Odisha, Assam (steady growth)
- West: Maharashtra, Gujarat (high density)
- Northeast & Islands: Lower absolute numbers (lower population)
Pattern Observations:
- Certain states show consistent monthly activity (Maharashtra, TN)
- Some states have concentrated activity periods (policy-driven)
- Migration corridors: States with consistent update activity (Delhi, Mumbai regions)
Insights:
- Clear upward trend from 2015-2020
- Stabilization in recent years
- Seasonal peaks visible (Q2, Q3)
- Polynomial trend line shows growth curve
Insights:
- Q2 shows highest average enrollment (~25-30% above mean)
- Q4 shows lowest activity (~15-20% below mean)
- Consistent pattern across multiple years
- Strong seasonality factor (30-40% variance explained)
Insights:
- Volatile month-to-month growth (±20-40%)
- Negative growth in specific months (seasonal dips)
- Average growth rate: +8-10% annually
- Recent stabilization (mature market)
Insights:
- Top 5 states account for ~45-50% of total enrollments
- Significant gap between rank 1 and rank 15 (10x difference)
- Clear regional dominance patterns
Insights:
- Hot spots: Maharashtra/Tamil Nadu in Q2-Q3 months
- Cold spots: Northeast states in Q4
- Consistent performers: UP, Bihar show year-round activity
Insights:
- Urban states: 60-70% of total enrollments
- Rural states: Steady growth, lower variance
- Policy implication: Need for rural infrastructure
Insights:
- 18+ group: Dominant (50-55%)
- 5-17 group: Significant (25-30%)
- 0-5 group: Smallest (15-20%)
- Reflects enrollment urgency (adults need for welfare)
Insights:
- Near parity achieved: Male (50-52%), Female (48-50%)
- Female growth rate slightly higher in recent years
- Policy success: Improved accessibility for women
Insights:
- 2-3 states flagged as anomalous (Z-score > 2.5)
- Likely due to: Extreme population size OR data quality issues
- Requires further investigation
Insights:
- Capital districts show highest concentration
- Border districts show lower enrollment
- Some districts have disproportionately high numbers (infrastructure concentration)
Z-Score Approach:
For each data point X:
1. Calculate population mean (μ) and standard deviation (σ)
2. Compute Z = (X - μ) / σ
3. Flag as anomaly if |Z| > 2.5
Confidence Level: 99.4% (captures extreme outliers)
Detected Anomalies:
-
High Outliers: 2-3 states with extremely high enrollments
- Likely explanation: Very high population (UP, Maharashtra)
- Not necessarily problematic
-
Low Outliers: 3-5 small states/UTs
- Explanation: Low population (Lakshadweep, Sikkim)
- Expected behavior
Focus: Bihar Deep Dive
Bihar districts showing unusual patterns:
| District | Total Enrollment | Z-Score | Status | Likely Cause |
|---|---|---|---|---|
| Patna | [High] | 3.2 | Anomaly | Capital city (expected) |
| Muzaffarpur | [Medium-High] | 2.8 | Anomaly | Major city |
| [District X] | [Very High] | 4.1 | INVESTIGATE | Unusual (infrastructure?) |
Key Findings:
- Capital/major cities naturally show higher numbers
- Some districts exceed expected ranges → Need investigation
- Possible causes:
- Data correction drives
- Enrollment center saturation
- Data quality issues
- Actual population mobility
Spike Detection:
- Identified 15-20 dates with Z-score > 3
- Most common spike months: April, May (Q2)
- Alignment with:
- Government scheme announcements
- Mass enrollment camps
- Data batch processing
Example Spike Dates:
- [Date 1]: Z-score 3.8 (Reason: Scheme launch)
- [Date 2]: Z-score 4.2 (Reason: Data backlog clearance)
Issue: Multiple districts sharing the same pincode
Bihar Analysis:
- Identified 50-100 conflicting pincodes
- Affects enrollment attribution accuracy
- Recommendation: Implement geo-tagging for disambiguation
- Characteristics: High volume, rural-dominated
- Top States: Uttar Pradesh, Bihar, Rajasthan
- Patterns: Steady growth, seasonal peaks in Q2
- Challenges: Infrastructure gaps in remote areas
- Characteristics: High efficiency, urban-dominated
- Top States: Tamil Nadu, Karnataka, Andhra Pradesh
- Patterns: Consistent year-round activity
- Strengths: Well-distributed enrollment centers
- Characteristics: Moderate volume, improving access
- Top States: West Bengal, Odisha, Jharkhand
- Patterns: Gradual growth, policy-driven spikes
- Opportunities: Rural penetration potential
- Characteristics: High density, urban concentration
- Top States: Maharashtra, Gujarat
- Patterns: Spiky (concentrated in cities)
- Focus: Need for rural outreach
- Characteristics: Low absolute numbers, unique challenges
- States: 7 sister states, Andaman, Lakshadweep
- Patterns: Irregular (connectivity issues)
- Priority: Mobile enrollment units
High Update States (indicating mobility):
- Delhi NCR (inbound migration)
- Maharashtra (Mumbai region)
- Karnataka (Bangalore region)
- Gujarat (Ahmedabad region)
Interpretation: Frequent demographic updates suggest population mobility and address changes.
| Rank | District | Enrollment | Population Rank | Discrepancy |
|---|---|---|---|---|
| 1 | Patna | [High] | 1 | ✓ Aligned |
| 2 | Muzaffarpur | [High] | 3 | ✓ Aligned |
| 3 | Darbhanga | [Medium] | 5 | ✓ Aligned |
| 4 | Gaya | [Medium] | 6 | ✓ Aligned |
| 5 | East Champaran | [Medium] | 2 | ⚠ Lower than expected |
Key Findings:
- Most districts align with population rankings
- Some districts underperform (access issues?)
- Some districts overperform (infrastructure concentration?)
- Share: 15-20%
- Trend: Stable over time
- Drivers: Birth registrations, welfare schemes
- Challenge: Outreach to remote areas
- Share: 25-30%
- Trend: Growing (education mandates)
- Drivers: School enrollment requirements
- Opportunity: School-based enrollment camps
- Share: 50-55% (highest)
- Trend: Dominant throughout
- Drivers: Welfare schemes (PDS, bank accounts, subsidies)
- Insight: Adult enrollment highly motivated by benefits
- Male: 50-52%
- Female: 48-50%
- Ratio: Approaching parity (0.95-1.0)
- 2015-2018: Male-dominated (55-60%)
- 2019-2022: Narrowing gap (52-54% male)
- 2023-2025: Near parity (50-52% male)
Interpretation: Significant policy success in improving female accessibility and enrollment.
- Progressive States: Kerala, Tamil Nadu (near parity or female majority)
- Lagging States: Some northern states (male-dominated)
- Improvement Needed: Targeted campaigns in specific regions
Correlation Matrix:
age_0_5 age_5_17 age_18_greater
age_0_5 1.000 0.650 0.720
age_5_17 0.650 1.000 0.830
age_18_greater 0.720 0.830 1.000
Insights:
- Strong positive correlations (0.65-0.83)
- Interpretation: Districts with high enrollment in one age group tend to have high enrollment in others
- Indicates uniform enrollment drives rather than age-specific targeting
- ✓ Clear seasonal pattern: Q2 and Q3 are peak enrollment periods
- ✓ Growth stabilization: Recent years show maturity (saturation in some markets)
- ✓ Predictable spikes: Policy announcements drive enrollment surges
- ✓ Urban concentration: Cities account for 60-70% of enrollments
- ✓ Regional disparities: Northeast and island regions lag behind
- ✓ Migration patterns: High update rates in metro areas indicate population mobility
- ✓ Adult dominance: 18+ age group drives enrollments (welfare-linked)
- ✓ Gender parity achievement: Near 1:1 ratio achieved (major success)
- ✓ Youth participation: Growing school-age enrollment (education-driven)
- ⚠ District-level outliers: Some districts show disproportionately high numbers
- ⚠ Pincode conflicts: Geographical attribution issues identified
- ⚠ Temporal spikes: Need for capacity planning during peak periods
- Capacity Planning: Scale up infrastructure in Q2-Q3 to handle peak loads
- Targeted Campaigns: Focus on states/districts with low female enrollment
- Data Quality: Resolve pincode conflicts through geo-tagging
- Anomaly Investigation: Deep-dive into districts with unusual patterns
- Rural Outreach: Mobile enrollment units for remote areas
- School Integration: Mandatory enrollment drives in schools (5-17 age group)
- Digital Push: Online enrollment portals for urban areas
- Resource Reallocation: Shift resources from saturated urban areas to underserved rural regions
- Predictive Analytics: Implement ML models for demand forecasting
- Real-Time Monitoring: Anomaly detection systems for fraud prevention
- Integration: Link with census, migration data for comprehensive insights
- Infrastructure Investment: Permanent centers in high-demand districts
- Peak Period Staffing: Hire temporary staff during Q2-Q3
- Streamlined Workflows: Reduce update request frequency through better data capture
- Quality Checks: Automated validation to reduce errors and updates
- Real-Time Dashboards: Monitor enrollment patterns live
- Mobile Apps: Enable field enrollment with geo-tagging
- API Integration: Connect with welfare scheme databases for seamless authentication
- Operator Training: Focus on data quality and error reduction
- Awareness Campaigns: Educate citizens on enrollment benefits
- District Coordinators: Appoint leads for high-anomaly districts
- Granular Data: Capture more demographic details (occupation, income brackets)
- External Integration: Merge with census, migration, economic data
- Real-Time Feeds: Move from batch processing to streaming analytics
- Predictive Modeling: Time series forecasting (ARIMA, Prophet)
- Clustering: Identify district archetypes (urban, rural, tribal)
- Cohort Analysis: Track specific age cohorts over time
- Survival Analysis: Enrollment dropout and update patterns
- Interactive Dashboards: Power BI or Tableau for stakeholder access
- Automated Reporting: Weekly/monthly insights generation
- Geospatial Mapping: District-level choropleth maps
Raw Data (CSV files)
↓
Ingestion (pandas read_csv)
↓
Cleaning (text standardization, date parsing)
↓
Transformation (feature engineering)
↓
Aggregation (state/district/month levels)
↓
Analysis (statistical methods)
↓
Visualization (matplotlib, seaborn)
↓
Insights & Reporting
| Component | Technology | Version |
|---|---|---|
| Language | Python | 3.8+ |
| Data Processing | Pandas | 1.3+ |
| Numerical Computing | NumPy | 1.20+ |
| Visualization | Matplotlib | 3.4+ |
| Statistical Viz | Seaborn | 0.11+ |
| Statistical Analysis | SciPy | 1.7+ |
| Notebook | Jupyter | 6.4+ |
import re
def clean_text(x):
if pd.isna(x):
return x
x = str(x).lower()
x = re.sub(r'[^a-z\s]', ' ', x)
x = re.sub(r'\s+', ' ', x).strip()
return x
state_mapping = {
'west bengal': 'West Bengal',
'uttaranchal': 'Uttarakhand',
# ... 40+ mappings
}
df['state_clean'] = df['state'].apply(clean_text).map(state_mapping)from scipy.stats import zscore
state_totals = df.groupby('state_clean')['total_enrollment'].sum()
z_scores = np.abs(zscore(state_totals))
anomalies = state_totals[z_scores > 2.5]df['date_parsed'] = pd.to_datetime(df['date'], errors='coerce')
df['year_month'] = df['date_parsed'].dt.to_period('M')
monthly_totals = df.groupby('year_month')['total_enrollment'].sum()Where:
-
$X$ = observed value -
$\mu$ = population mean -
$\sigma$ = population standard deviation
| Column Name | Data Type | Description | Example |
|---|---|---|---|
state |
string | Original state name | "West Bengel" |
state_clean |
string | Standardized state | "West Bengal" |
district |
string | District name | "Patna" |
date |
datetime | Transaction date | "2024-03-15" |
pincode |
integer | Postal code | 800001 |
age_0_5 |
integer | Enrollments (0-5 years) | 1250 |
age_5_17 |
integer | Enrollments (5-17 years) | 3400 |
age_18_greater |
integer | Enrollments (18+ years) | 5800 |
total_enrollment |
integer | Total enrollments | 10450 |
male |
integer | Male updates | 2300 |
female |
integer | Female updates | 2150 |
year_month |
period | Month period | "2024-03" |
quarter |
integer | Quarter (1-4) | 1 |
UIDAI Data Hackathon 2026/
│
├── api_data_aadhar_enrollment/
│ ├── api_data_aadhar_enrolment_0_500000.csv
│ ├── api_data_aadhar_enrolment_500000_1000000.csv
│ ├── api_data_aadhar_enrolment_1000000_1006029.csv
│ └── Enrollment.ipynb
│
├── api_data_aadhar_demographic/
│ ├── api_data_aadhar_demographic_0_500000.csv
│ ├── api_data_aadhar_demographic_500000_1000000.csv
│ ├── api_data_aadhar_demographic_1000000_1500000.csv
│ ├── api_data_aadhar_demographic_1500000_2000000.csv
│ ├── api_data_aadhar_demographic_2000000_2071700.csv
│ └── Demography.ipynb
│
├── api_data_aadhar_biometric/
│ ├── api_data_aadhar_biometric_0_500000.csv
│ ├── api_data_aadhar_biometric_500000_1000000.csv
│ ├── api_data_aadhar_biometric_1000000_1500000.csv
│ ├── api_data_aadhar_biometric_1500000_1861108.csv
│ └── Biometric.ipynb
│
├── Comprehensive_UIDAI_Analysis.ipynb (NEW - Master Analysis)
├── RESEARCH_REPORT.md (THIS FILE)
│
└── Visualizations/ (Generated)
├── enrollment_temporal_trends.png
├── enrollment_seasonal_pattern.png
├── state_wise_enrollment.png
├── enrollment_heatmap.png
├── age_distribution.png
├── gender_analysis.png
├── anomaly_detection.png
├── growth_rate_analysis.png
└── ... (other visualizations)
Data Source: Unique Identification Authority of India (UIDAI)
Analysis Team: Data Science Research Team
Tools: Python, Pandas, Matplotlib, Seaborn, Jupyter Notebook
Project Duration: January 2026
Version: 1.0 (Initial Release)
- UIDAI Official Website: https://uidai.gov.in/
- Census of India Data
- Python Data Science Handbook (VanderPlas, 2016)
- Time Series Analysis and Its Applications (Shumway & Stoffer)
- Statistical Methods for Anomaly Detection (Chandola et al., 2009)
For questions, clarifications, or collaboration:
- Email: lazerviji80@student.sfit.ac.in
- GitHub: https://github.com/ashwin8332
- LinkedIn: https://www.linkedin.com/in/ashwin-vincent-koonissery-a2662a2b7/
Document End
Last Updated: January 18, 2026









