Rishabh Jain / City economics
New York City / January to December 2023

NYC Yellow Taxis
in 2023

The busiest hours are also among the slowest. A year of trip records shows how demand, geography and congestion shape the work of a yellow taxi.

38.3 millionrecords form the source population.
0.75%of records are sampled by date and hour.

Compare weekday and weekend patterns, explore pickup and dropoff zones, and switch between speed and fare measures. Hover for values, use chart controls to zoom, or read and download the underlying aggregate data.

01 / Dataset

A large population, a manageable sample.

The project studies yellow taxis. It does not describe all journeys in New York City.

Twelve monthly Parquet files contain 38,310,226 trip records. The analysis draws a fixed-seed sample within each pickup date and hour, then cleans the resulting 287,296 records. A total of 283,908 records remains for analysis.

Dataset componentCoverage and interpretation
Trip recordsFields describe pickup and dropoff times, zone IDs, distance, passenger count, payment type and charges. They describe recorded journeys rather than people seeking a taxi.
GeographyThe shapefile contains 263 taxi-zone records. IDs 264 and 265 represent unknown and outside-NYC locations and do not have polygons.
SamplingThe 0.75% sample preserves date-and-hour strata. Each month's sample share matches its share of the source population to within 0.01 percentage points.
Full-year estimatesSample counts and payment sums are divided by 0.0075. Averages, shares and ratios are not multiplied by this factor.
Time coverageThe report uses the recorded pickup and dropoff hours in the 2023 source files. It does not estimate waiting time before pickup.

The sample supports broad temporal and geographic comparisons. Rare routes and sparsely observed zones are less stable. The report does not attach confidence intervals to its scaled annual estimates.

02 / Method and engineering

Fix the records before interpreting them.

Cleaning decisions affect payments, tips and passenger counts as well as the size of the sample.

  1. Read and sample the monthly files.PyArrow reads Parquet metadata and pandas samples each pickup date-and-hour group with a fixed seed. This avoids loading the entire year's population into the exploratory workflow at once.
  2. Reconcile the schema and remove reversals.The January airport-fee field and the differently capitalised later field are combined. The offline-upload flag is removed. There are 2,855 records with negative charges; 87% match a corresponding positive record by time, zones and amount, supporting the reversal interpretation.
  3. Handle missing values without inventing payment behaviour.Missing passenger counts and rate codes use their modal values. Zero passengers are set to one, and rate code 99 is treated as missing. Payment type zero remains a separate category called "Not recorded".
  4. Infer missing fees from the charge breakdown.The residual between the total and known components is used to infer congestion and airport charges. This assumes the other charge components are complete. It is an imputation, not a directly observed fee.
  5. Remove implausible trips.Seven records with more than six passengers and 526 records with impossible combinations of distance, duration, fare or speed are removed. The rules include durations above five hours, distances above 250 miles and speeds above 80 mph.
  6. Calculate measures with the right denominator.Speed is total distance divided by total trip hours. Fare per mile is total fares divided by total miles. Recorded tip rate is total tips divided by total fares for qualifying credit card trips. These avoid unstable averages of per-trip ratios.
Technical layerLibraries and responsibilities
Data processingPython 3.12, pandas, NumPy and PyArrow support sampling, cleaning, grouping and Parquet storage.
Spatial analysisGeoPandas joins trip aggregates to taxi zones by LocationID and reads the public shapefile. The interactive map uses simplified copies of those boundaries.
ExplorationMatplotlib and seaborn produce the notebook's 27 saved figures. Jupyter records the code, outputs and interpretations together.
Report deliveryLocal Plotly.js, plain JavaScript, HTML and CSS produce the interactive report on GitHub Pages. Only aggregated data and public zone geometry are shipped to the browser.

This is an exploratory analysis, not a forecasting or dispatch-optimisation model. There is no trained predictive framework or measured intervention effect to report.

03 / Demand

The weekday commute and the weekend night are different markets.

Averages are normalised by the number of days in each group.

Compare demand through the day.

Figure 01

View the data table.

Weekdays build towards 18:00.

Pickups increase steeply from 06:00 to 08:00 and peak with the evening commute. Across all days, the 18:00 hour accounts for an estimated 2.68 million trips over the year.

Weekend activity extends later.

Average midnight pickups are about 2.5 times the weekday level. Weekend mornings rise about two hours later. These patterns support different schedules by day type rather than one fixed daily supply profile.

Compare monthly trip counts and recorded payments.

Figure 02

View the data table.

May and October are the busiest months, with about 3.47 million estimated trips each, while August has about 2.79 million. Estimated recorded payments total approximately $1.10 billion. These amounts include recorded fees and tips and are not driver profit or net operating revenue.

04 / Geography

Manhattan and the airports dominate the observed market.

Use the map to distinguish pickup sources from dropoff destinations.

Explore sampled trip activity by taxi zone.

Figure 03

View the data table.

JFK Airport is the busiest individual pickup zone, with 5.2% of sampled trips. Eight of the ten busiest zones are in Manhattan. Sparse yellow taxi pickups elsewhere do not prove that travel demand is low; travellers may use other modes or find taxis unavailable.

Busy zones have different daily rhythms.

Figure 04

View the data table.

JFK remains busy from the afternoon to midnight, with pickups peaking at 22:00. Many Manhattan zones peak earlier. A citywide curve is therefore not enough to decide where a taxi should wait.

Compare zones where trips start and where they end.

Figure 05

View the data table.

Airport flows are asymmetric.

JFK has about 4.29 pickups per dropoff and LaGuardia has 2.51. East Elmhurst, near LaGuardia, has 8.24. These ratios identify repositioning questions, but the records do not measure how taxis reached those zones.

Residential destinations have the opposite pattern.

Roosevelt Island records about 0.04 pickups per dropoff. Low ratios can make a return pickup less likely within the same yellow taxi market. Actual empty mileage would need vehicle-linked trajectories to verify.

05 / Speed and price

The busiest part of the day is slow and expensive per mile.

These are observed associations. Trip length, geography and fare rules also change through the day.

Switch between average speed and fare per mile.

Figure 06

View the data table.
Average speed falls from 25.0 mph at 05:00 to 10.9 mph at 17:00.Fare per mile rises from $4.37 at 05:00 to about $6.00 in the afternoon. Metered time charges are consistent with this pattern, but the analysis does not isolate congestion's causal contribution.
Observed routePickup hourAverage speed
Greenwich Village South to Greenwich Village North13:001.7 mph
Midtown South to Garment District17:002.4 mph
Penn Station/Madison Square West to Garment District14:002.9 mph

These are zone-pair and hour combinations with at least five sampled trips. They are not street-level speed measurements, and a small qualifying group can still be uncertain.

Different charges apply at different times.

Figure 07

View the data table.

The congestion surcharge appears on 92.3% of cleaned trips. The extra charge is concentrated from late afternoon through the night, consistent with rush-hour and overnight rules. Charge frequency is not a direct measure of congestion intensity.

06 / Passenger behaviour

Payment coverage changes what can be inferred about tips.

Recorded tips are observed only for credit card transactions.

Most trips are paid by credit card.

Figure 08

View the data table.

Shorter card trips have higher recorded tip rates.

Figure 09

View the data table.

For qualifying card trips, recorded tips equal 22.3% of fares. The ratio is 26.3% for trips of up to two miles and 20.0% for trips over five miles. This is a share of total fares, not the average passenger's chosen percentage, and a lower percentage does not necessarily mean a smaller dollar tip.

Single-passenger trips dominate the cleaned records.

Figure 10

View the data table.

Single-passenger trips represent 77.4% of the cleaned sample, and the mean group size is 1.38. Since the fare is largely independent of passenger count, sharing the same fare reduces the cost per passenger. That arithmetic does not, by itself, establish demand for a new group product.

07 / Conclusion

Use the patterns to design tests, not to claim an optimum.

The report identifies where an operational decision deserves closer examination.

What the year of records establishes.

The cleaned sample shows a clear weekday evening peak, stronger weekend late-night activity and a concentrated yellow taxi geography. Airports are major pickup sources, while some residential zones are primarily destinations. Lower daytime speeds coincide with higher fares per mile, and recorded tip rates vary with trip length.

These findings support time-specific and location-specific planning. They do not establish that more taxis, different fares or a particular repositioning policy would improve outcomes. Those decisions require demand, queueing, driver cost and service-quality information that the trip records do not contain.

Decision to evaluateEvidence from this projectWhat should be measured next
Test a later weekend supply profile.Midnight pickups per day are about 2.5 times the weekday level.Measure passenger waits, available vehicles and driver utilisation before and during a trial.
Evaluate airport positioning separately from Manhattan positioning.JFK peaks later and has substantially more pickups than dropoffs.Include airport queue time, access rules, empty mileage and revenue per working hour.
Investigate slow zone-pair journeys.Several short Midtown and Lower Manhattan routes average below 3 mph in selected hours.Use street-level paths and larger samples before recommending routing changes.
Review pricing with an explicit service objective.Fare per mile already rises during slow daytime conditions.Test affordability, demand response and driver earnings rather than inferring a benefit from another surcharge.
Assess long-trip economics in dollars and time.Longer card trips have lower tip percentages.Compare total earnings, duration, tolls and return opportunities. Tip percentage alone is insufficient.

Limits that matter to a decision-maker.

  • Completed trip records do not measure unmet demand, failed hails, passenger waiting or actual empty driving.
  • A 0.75% sample is useful for large patterns but unstable for rare routes. The five-trip route threshold is a screening rule, not a guarantee of precision.
  • Passenger and fee imputations influence the corresponding charts. Cash tips remain unobserved, so card-tip findings should not be generalised to every passenger.
  • The observations are from 2023. Current fare rules, travel behaviour and competing services may differ.

Technical handover and reproducibility.

The repository separates data download, the analysis notebook, written methods and the browser report. Re-running the notebook regenerates the cleaned sample and static figures. The report exporter then creates aggregate JavaScript data from the cleaned sample and public zone boundaries; it does not publish trip-level records.