Ingest, validate and reproducibly transform real datasets
Locked
Scored stage progress
0%
Practice and implementation
0/13
Exercises + milestone requirements owned by this stage
Evidence and gate
0 · 0/14
Artifacts · checked requirements
Why it matters
Purpose of this stage
Analysis is only half of this stage. The other half is getting data into a state worth analysing, repeatedly and on purpose. No orchestration framework is required or permitted here: plain Python functions and scripts are the whole toolset.
Subjects
9 subjects · 57 canonical topics
Each subject states what you should be able to do, an order to work through it in, what to watch for, and the questions a reviewer should be able to ask you at the end. None of it is tracked or scored.
How to work through this subject
An order that works, not a checklist. Nothing here is tracked — the steps sequence this subject’s own topics and add none.
Set up the notebook environment and confirm it uses the project's virtual environment, not a global one.
Work through a small NumPy array end to end: create it, reshape it, operate on it without a loop.
Load one dataset into pandas and look at its shape, types and first rows before anything else.
Draw one plot that answers a question you asked first, rather than plotting to see what appears.
Restart the kernel and run every cell in order, and fix whatever breaks.
Finish by moving the cleaning cells out into a script and leaving only exploration in the notebook.
What to watch for
Notebooks reward out-of-order execution and punish reproducibility. Restart and run-all before you believe any result.
Cleaning belongs in a script; exploration belongs in the notebook.
NumPy's speed comes from operating on whole arrays at once. A Python loop over an array gives back everything it bought you.
A plot is an argument. If you cannot say what question it answers, it is decoration.
A notebook that only runs on your machine is a result nobody can check, including you next month.
Curriculum topics
Jupyter
A notebook environment mixing code, output and prose. Cells can run out of order, which is why results can be irreproducible.
NumPy
The array library underpinning numerical Python, providing fast whole-array operations.
pandas
The library for tabular data — loading, cleaning, joining and summarising DataFrames.
matplotlib
The plotting library used to visualise distributions and relationships.
Resources for this subject
REFERENCENumPy — the absolute basics for beginners NumPy Arrays, shapes and vectorised operations from zero. The shape intuition built here is what makes Stage 9's tensor work tractable.Open
Need another explanation?3 more references
REFERENCEpandas User Guide pandas The reference for indexing, grouping, joining and datetime handling. Start with '10 minutes to pandas', then use the guide by topic.Open Open
REFERENCEmatplotlib Tutorials matplotlib Enough plotting to produce the visualisations the stage project requires, without adopting a second plotting library.Open
REFERENCEJupyter Documentation Project Jupyter Notebook mechanics, including execution order — the thing that makes notebook results irreproducible if you ignore it.Open
A reviewer should be able to answer these
Answer from memory, out loud, before moving on. These are not tracked and do not affect the gate — they tell you whether you actually understand this subject.
Why can a notebook produce a result that cannot be reproduced by re-running it?
What belongs in a cleaning script rather than a notebook cell?
What does NumPy give you that plain Python lists do not?
When is a plot the right output and when is a number enough?
What does restart-and-run-all prove that running cells individually does not?
What does an array's shape tell you before you compute anything with it?
Exercises
Demonstrated practice · 35% base weight
This stage defines implementation through its owned project milestone rather than a separate exercise list.
Resource status is a convenience marker only. It cannot change competencies, gates, or stage completion — in any tier below.
Start here — no canonical resource for this stage
3 available
The curriculum names no resource for this stage. These are authored suggestions, not part of the canonical library.
REFERENCECommon pitfalls and recommended practices scikit-learnThe canonical account of how preprocessing leaks information and why transformations must be fitted after splitting. Read it now for the habits; Stage 8 is where you apply them to a model.Open
REFERENCENumPy — the absolute basics for beginners NumPyArrays, shapes and vectorised operations from zero. The shape intuition built here is what makes Stage 9's tensor work tractable.Stage 6 has no primary resource in the canonical library.Open
REFERENCEpandas User Guide pandasThe reference for indexing, grouping, joining and datetime handling. Start with '10 minutes to pandas', then use the guide by topic.Open Open
Need another explanation?9 supplementary resources · not part of the canonical library
Use these for a demonstrated gap, not as a parallel course. They are authored additions and can never be the primary resource for a subject.
REFERENCEPython for Data Analysis, 3rd Edition Wes McKinneyFree full text by pandas' author. The data-cleaning and wrangling chapters map directly onto the Stage 6 project deliverables.Open
REFERENCEmatplotlib Tutorials matplotlibEnough plotting to produce the visualisations the stage project requires, without adopting a second plotting library.Open
REFERENCEJupyter Documentation Project JupyterNotebook mechanics, including execution order — the thing that makes notebook results irreproducible if you ignore it.Open
REFERENCEPublic dataset sources UCI · Kaggle · Our World in DataWhere to find the public dataset the Stage 6 project requires. Prefer one messy enough to need real cleaning.Open Open Open
REFERENCEpandas — IO tools and data cleaning pandasThe reference for reading CSV and JSON with explicit dtypes and parsers, and for the missing-data semantics every validation check depends on.Open Open
REFERENCERequests — Quickstart RequestsEnough HTTP client to pull a dataset from an API, including status handling. You already learned the protocol in Stage 4; this is only the client.Open
REFERENCEMade With ML — Data engineering Made With MLThe ETL/ELT, pipeline-stage and lineage sections of a course you will return to in Stage 12. Read only the data-engineering chapter here; the deployment material is Stage 12's.Scoped read. The rest of this course belongs to Stage 12 and would be premature now.Open
OPTIONALPandera PanderaOne example of expressing a DataFrame schema declaratively. Write your checks as plain assertions first — this stage never requires a validation framework.Optional example only. Adopting it before you have hand-written the checks inverts the framework rule in 24_SCOPE_CONTROL.md.Open
OPTIONALGreat Expectations Great ExpectationsA larger data-quality framework, listed so you know the category exists. Skim the concepts; do not add it as a project dependency at this stage.Optional example only, never a required dependency.Open
Stage gate
Readiness assessment
Not ready
Stage-specific requirements
Answer each prompt without notes. Expand a question only when you are ready to check your answer.
0/6
Independently profile an unfamiliar CSV
Answer
Load the file and report shape, column names, types and a sample of rows. Count missing values and duplicates per column, look at the extremes of every numeric column, and check that dates parsed as dates. State your schema assumptions explicitly, then say which of them the file actually violates.
Independently clean an unfamiliar CSV
Answer
Express each cleaning decision as a deterministic function that takes data and returns data, leaving the raw file untouched. Handle types, missing values, duplicates and malformed rows explicitly, recording how many rows each step affected. Write down why each decision was made, not only what it did, and keep raw and cleaned outputs in separate locations.
Independently validate an unfamiliar CSV
Answer
State the expected schema before looking at the data, then check the loaded file against it: columns present, types correct, nullability as declared. Add checks for values that are impossible rather than merely unusual, and for duplicate records where no natural identifier exists. Failures should be loud, specific and reported in full rather than one at a time.
Independently summarize an unfamiliar CSV
Answer
Report the counts first: rows used, rows dropped, missing values per column. Then give descriptive statistics per numeric column and the distribution behind them, since a mean alone hides shape. Summarise the categorical columns by their value counts, and state the question each summary answers.
Independently explain an unfamiliar CSV
Answer
Say what the dataset represents, where it came from and when it was captured, then what you had to change to trust it and what you could not resolve. Name the columns you would not use and why, including any that could not have been known at the time the row was created. Finish with what the data does not support concluding.
Rerun your own pipeline from raw data and get the same cleaned dataset
Answer
Delete every intermediate and cleaned output, then run the pipeline again from the raw data alone and compare the result to the previous cleaned dataset. They should be identical. Anything that differs is a step depending on the clock, on random values, on manual edits, or on state left behind by the earlier run.
Universal requirements
The eight conditions 01_LEARNING_RULES.md applies to every stage. Expand one to see what it actually asks for.
0/8
Core concepts can be explained from memory.
What this asks for
Every subject in this stage has review questions. The condition is met when you can answer them out loud, without notes and without looking anything up, in your own words rather than a recited definition. An explanation you can only give with the material open is recognition, not recall.
Required exercises are complete.
What this asks for
Complete means each exercise satisfies its stated requirements and its done-when criteria, not that you attempted it. Where an exercise says you should be able to explain or defend something, that explanation is part of completing it. A stage whose source lists no exercises meets this through its owned project milestone instead.
Stage project works.
What this asks for
Works means it runs end to end from a clean checkout, on the inputs it was built for, with the failure cases it claims to handle actually handled. It is not a notebook that produced a result once. Someone else following your README should be able to run it without asking you a question.
Tests or verification exist.
What this asks for
There is something that would fail if the behaviour regressed, and you have watched it fail. That can be automated tests or a written verification procedure with recorded results, depending on what the stage produces. A test that has only ever passed is evidence of nothing.
README explains decisions.
What this asks for
The README says what the project is, how to install, run and test it, and why it is built the way it is: the choices you made, the alternatives you rejected, and what you deliberately left out. A list of commands with no reasoning does not meet this condition.
You can reproduce the core implementation without copying.
What this asks for
Delete the central piece and write it again from an empty file, without your previous version, a tutorial, or generated code in front of you. It does not have to be identical, it has to work and you have to be able to explain every line. This is the condition that separates having finished from being able.
You pass the stage self-assessment at >= 80%.
What this asks for
Record a gate exam and score yourself honestly against the dimensions the roadmap defines: recall, implementation, debugging, testing and design judgment. Elapsed time, hours watched and completed resources count for nothing here. Checking the boxes without a recorded exam does not open the gate.
Claude/ChatGPT reviewer finds no foundational blocker.
What this asks for
Ask an AI reviewer to examine the work against this stage's concepts and report foundational misunderstandings, not style. A foundational blocker is a misconception that later stages would build on, such as leakage, a broken abstraction, or an explanation that is confidently wrong. Nothing in that class may remain open when you pass.
Recorded exam
No exam recorded. Checking every requirement is not sufficient.