Skip to content
techgirl.nyc

MTA · New York City Transit

Measuring how track work affects subway service.

I connected track-work records with train movements to help the MTA identify where scheduling changes could reduce disruption.

Explore the story · choose a stage or press play
Four stages · press play or pick one

Start with one train’s journey.

Each row is a station and time runs left to right, so every diagonal is one train heading downtown. The bright train takes noticeably longer between 42 St and 34 St.

One stretch of track at midday · each line is a trainSchematic
59 St50 St42 St34 St28 St12:30 p.m.12:4012:501:001:10 p.m.Time →Track work · 42 St → 34 St12:45 – 1:05 p.m.Extra running time
Selected trainOther trainsSlower segment
The missing connection
Track-work recordsWhere and when work was planned
Train movementsWhen trains passed each location
Illustrative station names, train paths, work window, and hourly pattern. The analysis compared the same segment, direction, and time of day. Findings describe train running time, not passenger hours or achieved savings.

Track maintenance keeps the subway running, but trains may need to slow down as they pass a work zone. The challenge was connecting work requests to the train trips affected, so teams could understand which work locations and times were associated with the greatest delays.

I linked 6 million train arrival records with 490,000 work orders using track, time, and location. I then compared travel times through work zones with typical times for the same segment, direction, and time of day. This estimated the additional train running time associated with track work.

The findings helped leadership align on moving high-impact midday work into overnight windows. I also automated the analysis with Airflow and Spark SQL so teams could refresh it daily and examine earlier periods. The results below describe observed additional train running time; they do not represent passenger hours or time saved after a schedule change.

≈64 sec
additional running time per affected segment
≈58 h
additional train running time on one corridor over three months
6M × 490K
arrivals matched to work orders
Built with
Python / SQLMatched baselinesAirflowSpark SQL