Zain A. Ghias
  • About
  • CV
  • Projects
  • Blog

On this page

  • Overview
  • Project Purpose
    • Motivation
    • Core Question
    • Why These Months?
    • Tools & Stack
  • Data Summary
  • Cleaning & Validation (Excel)
    • Cleaning Steps
    • Schema Notes (2023 vs 2024)
    • Derived Columns
    • Data Issues (logged)
  • From Excel to Tableau
  • Dashboards & Insights
    • 1) Overview Dashboard
    • At a Glance
    • Usage Patterns
    • Business Interpretation
    • 2) Comparison Dashboard
    • Key Observations
    • Interpretation
    • 3) Commuter Patterns Dashboard
    • At a Glance
    • Interpretation
  • Financial Extension — Business and Revenue Analysis
    • Why a financial view?
    • Revenue Findings (Trip-Level Only)
    • Interpretation
  • How the Trip-Level Revenue Model Works
    • New Excel Fields
    • Pricing Framework (Validated)
    • Additional Data Issue
    • References, Sources, and Assumptions
  • Project Note

Bike Share Toronto Analysis

Ridership trends for March 2023 and March 2024 with an estimated financial extension. Cleaned in Excel and visualized in Tableau.
Published

October 15, 2025

Overview

This analysis explores how Bike Share Toronto usage changed between March 2023 and March 2024, focusing on hourly ridership, weekday vs weekend, and member vs casual mix.
The project shows a clear workflow from Excel cleaning to Tableau dashboards, with decisions logged for transparency. The new Financial Extension adds a simple revenue–cost–profit view based on public pricing and documented assumptions.


Project Purpose

Motivation

Living in Mississauga, I rarely saw Lime scooters or shared bikes in active use. Many looked idle or abandoned mid-trip.
That raised a question: are these systems being used effectively, or just growing in size?

I tried to access Lime GBFS but the process stalled, so I pivoted to Bike Share Toronto open data, which is clean and well structured. The work evolved into a business-style analysis that checks if ridership growth kept pace with network expansion.

Core Question

How did Bike Share Toronto usage differ between March 2023 and March 2024 by hour, by weekday vs weekend, and by user type?

Why These Months?

Each monthly file has hundreds of thousands of trips, so a single month can be representative.
I chose March 2023 and March 2024 to keep scope focused while allowing a true year-over-year comparison.

Tools & Stack

Excel (cleaning and validation) · Tableau (visualization) · Python/SQL (planned automation)


Data Summary

  • Source: Bike Share Toronto Open Data
  • Months analyzed: March 2023 and March 2024
  • Volume: ~537k trips combined
  • Key fields: Trip ID, duration, start/end stations, times, bike ID, user type
  • 2024 addition: Model (bike type)
  • Supplement: Station reference CSV with IDs, names, and coordinates for mapping

March vs March gives comparable seasonal conditions at high volume.


Cleaning & Validation (Excel)

I used a Data Issues Log rather than ad-hoc fixes.

Cleaning Steps

  1. Coerced types (timestamps to datetime, duration to minutes)
  2. Dropped incomplete rows with missing start/end station or time
  3. Removed duplicates with (start_time, end_time, bike_id)
  4. Created Start Hour, Day of Week, Same Station?, Mappable
  5. Joined station IDs to a reference file and flagged missing IDs as Unmapped

Schema Notes (2023 vs 2024)

Field 2023 2024 Notes
Trip Id ✓ ✓ Unique per trip
Trip Duration (sec) ✓ ✓ Converted to minutes
Start/End Station Id & Name ✓ ✓ Some IDs updated
Start/End Time ✓ ✓ Datetime
Bike Id ✓ ✓
User Type ✓ ✓ Annual or Casual
Model (bike type) — ✓ New in 2024
Derived columns ✓ ✓ Created during cleaning

Some 2024 station IDs were not in the 2023 map file. They are kept for totals and flagged Unmapped for maps.

Derived Columns

Column Type How it’s computed Why it matters
Trip Duration (min) Numeric duration_sec / 60 Consistent time comparison
Start Date Date date(Start Time) Day-level grouping
Start Hour Integer hour(Start Time) Hourly patterns
Day of Week Text weekday(Start Time) Weekday vs weekend
Same Station? Boolean Start Station Id == End Station Id Loops vs A→B
Mappable Boolean In station reference Map readiness

Data Issues (logged)

Issue Fix / Decision Kept? Example Count
End Station = NULL Drop row ✗ 80
Trip duration < 1 min Drop row ✗ 417
Trip duration > 24 hr Drop row ✗ 43
Start = End station Keep, flag as Same Station ✓ 6,835
Inconsistent station names Standardize by ID ✓ 15,942
Station ID missing (new) Keep, mark Unmapped ✓ 22,000

From Excel to Tableau

The two months were unioned and joined to the station reference. Trips with missing reference stayed in totals but were marked Unmapped for mapping.
Key fields used: duration (min), hour, weekday, user type, station names, and Model for 2024.


Dashboards & Insights

1) Overview Dashboard

At a Glance

  • Total Trips: 537,045 (both months)
  • Avg Duration: ~15 minutes
  • Network Size: 7,028 bikes across 815 stations (about 8.6 bikes per station)
  • Annual Members: ~21.5% share

Usage Patterns

  • Peaks at 8–9 AM and 5–7 PM fit office commutes
  • Midday and weekend rides are steady
  • Tuesday to Thursday is slightly higher, matching hybrid schedules

Business Interpretation

  • Peaks support dock rebalancing and staffing
  • Short average duration fits a first/last-mile role
  • A ~1-in-5 membership share suggests room to convert frequent casuals

2) Comparison Dashboard

Key Observations

  • Trip Volume: +39% (224k → 312k)
  • Average Duration: +12.8% (14.4 → 16.2 min)
  • Assets: +9% bikes and +20% stations
  • Member Share: −2.1 pp (22.7% → 20.6%), casuals grew faster
  • Saturday Spread: wider range of use, likely leisure and tourism

Interpretation

  • Supply scaled with demand, not an overcapacity story
  • Longer trips likely reflect leisure or extended routes
  • Commute peaks remain; lighter Mondays and Fridays show hybrid effects
  • More casuals in the funnel opens up retention and conversion plays

3) Commuter Patterns Dashboard

Routes with a single location such as Tommy Thompson Park are round trips. Trips with Unmapped stations were excluded from route mapping.

At a Glance

  • ~97% of trips are point-to-point commuting
  • Top corridors: Union Station, Front St, Bay St, Yonge St
  • Loop routes: recreational trips like Tommy Thompson Park remain active
  • 2024 growth: most high-traffic routes increased further, showing consolidation rather than fragmentation

Interpretation

  • Bike Share Toronto serves primarily urban commuters with consistent weekday use
  • Loop trips reflect weekend leisure demand
  • Operational priority: dock turnover and rebalancing in core corridors during peaks
  • Marketing insight: weekend casuals are candidates for day-pass → subscription funnels

Bottom line: the commuter network is expanding efficiently, sustaining weekday reliability while attracting weekend explorers.


Financial Extension — Business and Revenue Analysis

Why a financial view?

Bike Share Toronto’s open data does not include pricing, membership fees, taxes, or cost information.
To connect ridership trends to business outcomes, I added a trip-level revenue model using only publicly available pricing rules from the City of Toronto (2023 and 2024).

This keeps the analysis fully transparent:

  • Revenue is modeled purely at the trip level (duration × bike model × user type)
  • Membership fees, taxes, discounts, and account-level billing are not included
  • Costs and profit are not yet modeled, because system-wide operational cost data is not available in the open dataset
  • Any cost/profit KPIs visible in the dashboard are temporary placeholders, included only to show what a complete financial dashboard layout could look like

I have found official cost-per-trip figures provided by Bike Share Toronto, which will allow a more accurate cost model.
These will be integrated in a future update.

The financial portion of this project will remain trip-level only, meaning it will not include external costs such as:

  • bike purchase and depreciation
  • maintenance and repairs
  • staff labour
  • rebalancing/relocation costs
  • charging infrastructure
  • administration and overhead

Those are outside the scope of the ridership dataset, but the trip-level approach provides a realistic and defensible baseline.


Revenue Findings (Trip-Level Only)

  • March 2023 Revenue: $628,748
  • March 2024 Revenue: $711,804
  • YoY Growth: +13.2%

Additional observations:

  • Midweek (Wed/Thu) shows the strongest revenue, matching commuter behaviour
  • Classic bikes contribute ~94 percent of total revenue due to their volume
  • Casual riders generate the highest per-trip revenue and represent a strong conversion opportunity

Interpretation

  • Ridership and revenue increased year-over-year across both commuter and leisure segments
  • Longer trip durations in 2024 suggest stronger leisure/tourism momentum
  • Casual riders remain the key source of per-trip dollars
  • Midweek revenue stability demonstrates reliable commuter demand

Note: Revenue is modeled accurately using official rate rules.
Cost and profit values shown in the dashboard are placeholders and will be replaced by a trip-level cost model using verified figures from Bike Share Toronto.


How the Trip-Level Revenue Model Works

New Excel Fields

New Field Purpose Description
Est. Trip Revenue ($) Revenue per trip Applies rate rules by year, duration, bike model, and user type
Pricing Basis Transparency Labels such as “2024 casual classic per-min rate”

Pricing Framework (Validated)

2023 Pricing

User Type Bike Rule Formula
Casual Classic Base 30 min $3.25 flat + $4 per extra 30-min block
Annual Classic Included $0 per trip (overage not identifiable)

2024 Pricing

User Type Bike Rule Formula
Casual Classic Unlock + per-min $1 + $0.12 × minutes
Casual E-bike Unlock + per-min $1 + $0.20 × minutes
Annual Classic Overage only MAX(0, minutes − 30) × $0.12
Annual E-bike Per-min $0.10 × minutes

Additional Data Issue

Issue Year Count Likely Cause Action
Annual member trips > 30 minutes 2023 806 Billing data not available Excluded from revenue (cannot be priced reliably)

References, Sources, and Assumptions

# Source What it provides How it was used
1 City of Toronto Background File (2023) 2023 pricing structure Used for 2023 casual/annual trip-level pricing rules
2 City of Toronto Background File (2024) 2024 updated pricing Used for 2024 unlock fees and per-minute rate rules
3 Bike Share Toronto Pricing Public reference pricing Validated trip pricing logic for modeling
4 Upcoming: Bike Share Toronto trip-level cost metrics Verified system cost-per-trip values Will replace placeholder cost/profit KPIs in the next update

All financial figures reflect trip-level modeling only, based on publicly available pricing.
Membership fees, overhead costs, rebalancing, repairs, depreciation, and other operational expenses are outside the scope of the dataset.
A refined version with verified cost-per-trip values will be added once integrated.


Project Note

This financial extension is part of a personal data analytics project.
It is designed to demonstrate how trip-level modeling can be applied to an open mobility dataset.
The financial section is intentionally limited to fields available in the data.
A refined version with verified cost-per-trip values will be published soon.

Zain Ghias, University of Toronto @ 2025

 

This page is built with Quarto.