Data & ML · Beginner
DataLab: Clean and Chart a Real Dataset
Take a messy public CSV, clean and reshape it, then produce labeled charts and a short findings write-up in a notebook.
Beginner6-10 hoursPython
You download a real, imperfect public dataset (such as a city 311 log or Kaggle survey), clean it with pandas or Polars, and produce a set of labeled charts that tell a coherent story. The project forces you to confront the full analyst workflow rather than a pre-cleaned toy, building habits that transfer directly to job work. By the end you have a Jupyter notebook that doubles as a shareable report with prose, code, and figures in one place.
What you build
- Load a raw CSV with missing values, inconsistent types, and duplicate rows, then document every cleaning decision
- Detect and handle nulls, outliers, and mixed-format date or category columns
- Reshape data between wide and long formats using melt and pivot operations
- Produce at least four chart types: bar, line, histogram, and scatter, each with titles, axis labels, and a source note
- Write a short findings section in Markdown cells that interprets each chart in plain language
- Export the cleaned dataset to a new CSV so downstream consumers get a stable artifact
What it teaches
- Pandas DataFrame operations: filtering, groupby, merge, melt, and pivot
- Null handling strategies and when to drop versus impute
- Matplotlib and Seaborn figure anatomy: axes, titles, tick formatting, and legends
- Exploratory data analysis workflow from raw file to documented findings
- Jupyter notebook best practices: cell ordering, Markdown narrative, and reproducibility via requirements.txt
How it works
- 1
Ingest
- pd.read_csv()
- df.info() / df.describe()
- 2
Clean
- Drop duplicates
- Fix dtypes and dates
- Handle nulls
- 3
Reshape
- melt / pivot
- groupby aggregations
- 4
Visualize
- Bar, line, histogram, scatter
- Labels, titles, source notes
- 5
Report
- Markdown findings cells
- Export cleaned CSV
Sign in to open the build guide
Free account. Get the step-by-step build and every resource link.
Take it further
- Swap pandas for Polars on the same dataset and benchmark load plus groupby time, then write a one-paragraph comparison
- Add an interactive chart using Plotly Express so readers can hover for exact values without re-running code
- Schedule the notebook to run automatically with Papermill against a fresh data export each week and diff the summary stats


