Skip to content

Bikeshare Insights: Summer in the Windy City

This dataset contains information on Divvy Bikes, a bikeshare program that provides residents and visitors of Chicago with a convenient way to explore the city.

The workspace is set up with one CSV file containing bikeshare activities at the peak of the summer-July 2023. Columns include ride ID, bike type, start and end times, station names and IDs, location coordinates, and member type. Feel free to make this workspace yours by adding and removing cells, or editing any of the existing cells.

Source: Divvy Bikes

🌎 Some guiding questions to help you explore this data:

  1. How many observations are in the dataset? Are there null values?
  2. How would you clean and prepare the data for analysis?
  3. Which bike types are popular and which ones aren't? Check if being a member or casual rider makes a difference in bike choice.
  4. Time check! What are the peak and off-peak riding times during the day?

📊 Visualization ideas

  • Bar chart: Display the number of times each bike type is used to identify the most and least used bikes.
  • Grouped bar chart: Compare bike usage by member type (member vs. casual) to see if it affects bike choice.
  • Heatmap: Vividly illustrate the popularity of bikes at different times during the day and week.

You can query the pre-loaded CSV files using SQL directly. The query result becomes available as a Python data frame divvy.

Spinner
DataFrameas
divvy
variable
SELECT rideable_type, start_station_name
FROM '202307-divvy-tripdata.parquet'
LIMIT 100
divvy.head()
divvy.shape[0]
divvy.isnull().sum()

Most Popular Bikes

Spinner
DataFrameas
df
variable
SELECT rideable_type, COUNT(*) AS count
FROM '202307-divvy-tripdata.parquet'
GROUP BY rideable_type
ORDER BY count DESC;
# Check for duplicates in the 'divvy_jan2023' DataFrame
duplicates = divvy_jan2023.duplicated()

# Display the duplicate rows
duplicate_rows = divvy_jan2023[duplicates]
duplicate_rows
Spinner
DataFrameas
df1
variable
SELECT member_casual, rideable_type, COUNT(*) AS ride_count
FROM '202307-divvy-tripdata.parquet'
GROUP BY member_casual, rideable_type;

There seems to be a difference between casual and members, because members don't use docked bikes. Perhaps th significant difference between members and not members. Can use a statistics test