I led a 3-person team to first place (Best in Show) at ASA DataFest 2026. This is our analysis code.
DataFest is a weekend competition. You get a large real dataset you have not seen before and one open-ended prompt, and you have a weekend to turn it into findings you present to judges.
Our data was a large de-identified electronic health record dataset, about 1.9 GB across encounters, patients, diagnoses, providers, social determinants, and census tables, from a regional US health system, provided under the DataFest data-use agreement. We built our story around two questions: how do patients actually move through the system over time, and are those journeys equitable across demographic groups?
The data is not included. It is confidential under the data-use agreement, so this repo has only the code, and the health system name and location are genericized. To run it you supply your own EHR-style CSVs matching the expected columns. The scripts print each file's columns on startup and skip any analysis whose columns are missing instead of crashing.
dataVisualization.py: exploratory analysis across every table, the first pass that mapped the data and found leads worth chasing.visualizations_part2.py: timing from intake to diagnosis to treatment, diagnosis-code instability and repeated testing, deceased-patient analysis, patient population against census demographics, and time patterns like seasonality and day of week.race_diagnosis_analysis.py: diagnosis disparities by race, using chi-square standardized residuals to show which diagnoses are over- or under-represented for each group relative to that group's overall encounter volume.visualizations_me.py: a focused deep-dive on one group's social-determinants burden and care journey, with p-values on every chart and a significance table exported to CSV.visualizations_bootstrap.py: a 100,000-iteration bootstrap test of the main disparity finding, plus a majority against minority comparison across social determinants, encounter counts, and journey length.
pandas and numpy for the joins across five tables, matplotlib and seaborn for the figures, and scipy.stats for the inference: chi-square tests of independence, standardized residuals, two-sample t-tests, and a 100,000-iteration bootstrap for the central finding. We did not stop at "there is a difference." Every disparity we reported was volume-controlled with residuals rather than raw counts, and validated with the bootstrap rather than a single p-value, so it would hold up to a skeptical question from a judge.
MIT, see LICENSE. It covers the code in this repo only, not the underlying competition data.