Skip to content

johnnyli-dev/CPR-CA-DA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EPSAL — CPR Education Gap Analysis in California High Schools

Data analysis quantifying the gap in hands-on CPR training requirements across California high schools. This project supports legislative advocacy for mandatory CPR and heart screening education for youth by providing data-driven evidence of curriculum gaps and their disproportionate impact on underserved communities.

Key Findings (2024-25)

Metric Value
Total CA High School Students 1,890,303
Students without CPR requirement 757,679 (40.1%)
Districts without CPR requirement 186
Schools without CPR requirement 1,147
Combined Black + Hispanic students without CPR 494,071
Socioeconomically disadvantaged students without CPR 493,041 (41.4%)

Hispanic/Latino students (42.6%) and Black/African American students (41.7%) are disproportionately affected compared to White students (36.4%).

Data Sources

All data used in this project comes from publicly available government sources:

  • CDE Census Day Enrollment Data (2024-25) — Official student enrollment headcounts by school, grade, race/ethnicity, and socioeconomic status
  • CDE Title I School Allocations (2024-25) — Federal Title I funding designations for low-income schools
  • American Heart Association District Survey — District-level data on CPR graduation requirements (parsed into data/no_cpr_districts.csv)
  • California Legislature — Public legislator contact info and district-to-zip mappings

Repository Structure

├── ca_cpr_analysis.ipynb                          # Main analysis notebook
│
├── data/                                          # Input/source data files
│   ├── no_cpr_districts.csv                       # 186 no-CPR districts (AHA survey)
│   ├── title1_school_allocations_2425.xlsx        # Title I school allocations
│   ├── assembly_members.xlsx                      # CA Assembly member info
│   ├── senate_members.xlsx                        # CA Senate member info
│   ├── assembly_district_to_zip.xlsx              # Assembly district-to-zip mapping
│   └── senate_district_to_zip.xlsx                # Senate district-to-zip mapping
│
├── output/                                        # Generated analysis CSVs
│   ├── ca_high_schools_enrollment.csv             # All CA high schools with enrollment
│   ├── districts_without_cpr_with_enrollment.csv  # No-CPR districts with student counts
│   ├── cpr_gap_by_race_ethnicity.csv              # Race/ethnicity breakdown
│   ├── cpr_gap_sed_analysis.csv                   # Socioeconomically disadvantaged analysis
│   ├── cpr_analysis_summary.csv                   # Summary statistics
│   ├── no_cpr_districts_with_zipcodes.csv         # No-CPR districts with zip codes
│   ├── no_cpr_district_zipcodes.txt               # Zip code list (plain text)
│   ├── no_cpr_schools_with_addresses.csv          # Schools in no-CPR districts
│   ├── no_cpr_districts_legislators.csv           # Districts mapped to state legislators
│   ├── no_cpr_districts_legislators_full.csv      # Full legislator mapping detail
│   ├── assembly_members_no_cpr_districts.csv      # Assembly members with no-CPR districts
│   └── senators_no_cpr_districts.csv              # Senators with no-CPR districts
│
├── output/visualizations/                         # Generated chart images
│   ├── cpr_gap_pie.png                            # CPR gap pie chart
│   ├── cpr_impact_statement.png                   # Impact statement graphic
│   └── cpr_gap_by_race.png                        # Racial disparity bar chart
│
├── output/regional/                               # San Diego regional analysis
│   ├── greater_san_diego_zipcodes.csv             # Greater SD area zip codes
│   └── greater_san_diego_no_cpr_enrollment.csv    # SD no-CPR enrollment data
│
└── docs/                                          # Documentation & methodology
    ├── data_source_explanation.md                  # Detailed data source documentation
    ├── title1_race_ethnicity_methodology.md        # Methodology notes
    ├── legislative_advocacy_summary.md             # Advocacy summary document
    └── legislative_data_mining_notes.md            # Legislative data mining notes

Running the Analysis

Requirements

  • Python 3.x
  • pandas, numpy, matplotlib, seaborn

Install dependencies:

pip install pandas numpy matplotlib seaborn openpyxl

Run

jupyter notebook ca_cpr_analysis.ipynb

The notebook fetches live CDE enrollment data and processes it against the local district list to generate all output files and visualizations.

Methodology

  1. CDE Census Day enrollment data is filtered to school-level (AggregateLevel='S') total enrollment (ReportingCategory='TA')
  2. Grades 9-12 are summed to calculate high school enrollment per school
  3. Schools are matched to the 186 districts without CPR graduation requirements via case-insensitive string comparison
  4. Race/ethnicity and socioeconomic breakdowns use CDE reporting category codes
  5. Legislative district mapping connects no-CPR school zip codes to state Assembly and Senate districts

For full methodology details, see data_source_explanation.md and title1_race_ethnicity_methodology.md.

Visualizations

The analysis generates advocacy-ready visualizations showing:

  • Racial/ethnic disparities in CPR education access
  • Overall proportion of students lacking CPR requirements
  • Impact statement graphics for legislative presentations

License

This project uses publicly available government data for educational and legislative advocacy purposes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors