Citibike NYC
Optimizing Bike-Sharing Logistics: A Data-Driven Analysis of User Behavior to Enhance Bike Availability and Identify Expansion Opportunities for Citi Bike NYC.
PYTHONDASBHBOARDGEOSPATIAL ANALYSISLOGISTICS & OPERATIONS
10/19/20264 min read
PROJECT BACKGROUND
I analysed 9.9 million Citi Bike trips from 2022 to find out why riders in New York keep finding empty stations, or full ones where they can't return a bike.
Citi Bike is the largest bike-sharing programme in the US, with around 25,000 bikes and more than 1,500 stations across Manhattan, Brooklyn, Queens, the Bronx, Jersey City and Hoboken. Demand has grown steadily since its 2013 launch and rose further after the Covid-19 pandemic.
That growth created a distribution problem: popular stations run out of bikes at peak times, others fill up, and customer complaints follow. My role was to act as an analyst for the business strategy team: diagnose where the imbalance comes from and recommend how to fix it.
The goal was a descriptive analysis that answers one question: is the shortage driven by total demand, by seasonal swings, or by where and when people ride?
To answer it, I looked at four angles:
Who rides: members versus casual users, and classic versus electric bikes.
When they ride: by season, day of the week and hour of the day.
How weather affects demand: daily trips against average temperature.
Where they ride: the most popular start and end stations, and the routes between them.
Objectives and Approach
DATA
TOOLS
CHALLENGES
Open Source data set from Citi Bike (2022).
Weather data using NOAA´s API ( 2022)
Gather data via an API
Geospatial plot : Kepler.gl
Visualizations: plotly
Multi-page dashboard: Streamlit
The raw 2022 data contained over 29M records; after cleaning and merging with weather data, the analysis covers 9.9M trips.
GitHub imposes a 100MB limit.
Solution: Downsampled for memory efficiency and
The shortage is not a matter of total fleet size: demand is concentrated in a few months, a few hours and a few Manhattan stations.
1. Weather drives demand. Daily rides and average temperature are strongly correlated (r = 0.85). Days below freezing average about 10,100 rides, compared with 37,200 on days above 20 °C. Demand peaks from June to September and is lowest in January, February and December, when average daily rides are about 62% lower than in summer.
2. Members commute, casual riders explore. Members account for 78% of trips and ride mostly on weekdays. Casual riders take longer trips (a median of about 15 minutes versus 9 for members) and ride more at weekends: 37% of their trips, compared with 24% for members.
3. Commuting hours create the pressure. Weekdays are busier than weekends, with the highest demand mid-week. On weekdays, rides peak around 8:00 and again at 17:00–18:00, the busiest hour of the day. Weekends show one broad afternoon peak instead.
4. A handful of stations carry the load. The busiest stations are in Chelsea, Midtown and Lower Manhattan: W 21 St & 6 Ave, West St & Chambers St and Broadway & W 58 St lead both starts and ends. For casual riders, the top station is Central Park S & 6 Ave, followed by stations along the Hudson River waterfront.
5. Bike type matters less than expected. Classic bikes account for about 60% of trips, and trip durations are almost identical for classic and electric bikes.
The data points to rebalancing bikes in time and space rather than simply buying more of them.
Scale the fleet with the seasons. Reduce available bikes by 30–40% from November to April. Winter demand is about 62% below summer, so this still leaves a buffer, and the off-season can be used for maintenance. Keep availability high around transit hubs and business districts, where members keep riding all year.
Rebalance before the evening peak. Move bikes to the busiest stations, such as W 21 St & 6 Ave, West St & Chambers St and Broadway & W 58 St, ahead of the 17:00 weekday peak. Use temperature forecasts to plan, given how closely demand follows the weather.
Reward riders who help balance the network. Offer discounts or points for returning bikes to stations that tend to run empty.
Expand along the waterfront. Casual riders favour Central Park and the Hudson River. Map trip density there to find gaps between stations, and add docks where weekend and summer demand is highest.
RECOMMENDATIONS
KEY INSIGHTS
INTERACTIVE DASHBOARD
I built the dashboard in Streamlit so the strategy team can explore the findings themselves. Use the selector on the left to move between pages, and the filters to compare members and casual riders or different seasons.
WHAT I LEARNED AND NEXT STEPS
The hardest part of this project was not the analysis but getting it into people's hands.
Working with large data: sampling and pre-aggregating made a multi-million-row dataset usable in a free, public web app.
Deployment: publishing the dashboard meant keeping library versions compatible and the repository small and well organised.
Storytelling: every chart answers one business question, and each insight is backed by a number on the page.
Next, I would add station-level data on bike availability (docks empty or full over time) to measure the imbalance directly, and build a demand forecast using temperature and time of day.
Links: Interactive dashboard · Code on GitHub


