Skip to content
← All datasets
Dataset collection

Free Datasets for Python and Pandas Practice

Practice loading, cleaning, joining, and analyzing data with Python and pandas. Find free datasets, project ideas, and documented downloads.

Start with bike sharing for time-based grouping and charts. Explore ecommerce for joins, marketing for a documented cleaning challenge, or subscriptions for customer activity over time.

Compare your options

Choose a dataset for the work you want to complete

DatasetPreferred filePractice focusTime series
Ecommerce Sales & ReturnsParquet or source CSVMerging customers, orders, items, payments, and refundsAvailable
SaaS Subscriptions & ChurnParquet or source CSVSubscription periods, cohorts, invoices, and payment aggregationStrong
Marketing Campaigns & ConversionsParquet or source CSVCategory normalization, date parsing, deduplication, and attributionAvailable
Inventory & Supply ChainParquet or source CSVMovement ledgers, cumulative balances, and supplier comparisonsStrong
Bike Sharing DemandParquet or source CSVTime-series grouping, feature engineering, and demand explorationStrong
Start here

Working pandas loading example

Load the prepared Bike Sharing Parquet file, check its shape and coverage, then calculate an hourly profile.

import pandas as pd

df = pd.read_parquet("bike-sharing-v1.0.0-analysis.parquet")
df["dteday"] = pd.to_datetime(df["dteday"])
print(df.shape, df["dteday"].min(), df["dteday"].max())

hourly = df.groupby("hour", as_index=False).agg(
    average_rentals=("total_rentals", "mean")
)
print(hourly.head())
  • File: bike-sharing-v1.0.0-analysis.parquet
  • Grain: one row per observed hour
  • Do not add this output to totals from the separate daily file.
Practical guidance

Start with a useful result

Inspect the data before transforming it

Load the selected file and inspect its columns, types, missing values, and sample records. Check the date range and identifiers before joining tables or calculating a result. Keep the original download unchanged so your preparation steps remain reproducible.

Make the notebook useful to someone else

Start with the business question and dataset version. Show the loading and transformation steps, explain the important definitions, and finish with a clear result and its limitations.

Is every dataset a machine-learning benchmark?

No. Many datasets here are designed for analysis, reporting, and modeling practice. Synthetic business patterns should not be presented as evidence that a model will perform well on real-world records.

Practice the steps behind a repeatable analysis

Work through Python exercises that help you inspect, transform, and explain data—not just load a file.

Explore Python practice