| id | course-da-eda | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| type | course | ||||||||
| title | Exploratory Data Analysis with an Agent | ||||||||
| summary | A challenge course — point your agent at a messy shop export and produce a verified EDA summary (results.json) whose numbers are checked against ground truth. First non-stdlib course in the catalog; pandas is managed with uv. | ||||||||
| lang | en-US | ||||||||
| content_version | 1 | ||||||||
| status | reviewed | ||||||||
| reviewed_on | 2026-09-12 | ||||||||
| badge |
|
||||||||
| course_id | course-da-eda |
TL;DR: this is a challenge course — you solve it, your agent is the tool. Point it at
scenario/shop-export/transactions.csv(142 messy rows), implement the contract instarter/eda.py, and finish with aresults.jsonwhose numbers are objectively checked against ground truth. Optional guided mode:COURSE.md+lessons/still work as an agent-taught path if you want a tour instead of a challenge.
A pandas script that loads a real-world-messy transactions export, cleans it (duplicates, unparseable amounts, bad dates), and writes a verified summary: clean row counts, total revenue, revenue by region, top category, date range.
This is the first course in the catalog that leaves the standard library:
cd courses/da-eda
uv sync # or: pip install -r requirements.txtverify.py checks for pandas and prints this hint if it is missing.
| # | Challenge | Gate |
|---|---|---|
| L01 | What messy data looks like — profile the CSV before touching code | self-attested |
| L02 | Define the answer first — write down the expected results.json shape | self-attested |
| L03 | Clean and summarize — implement clean_transactions + summarize |
objective (starter suite) |
| L04 | Check against ground truth — both suites green | objective (both suites) |
| L05 | Run it on your own data — swap in an export you actually have | self-attested |
- Badge: EDA Challenger (badge id
da-eda) — earned by claiming all five checkpoints. - Challenges: L01–L05, 10 points each; +50 course-badge bonus when all five are claimed on flypython.com.
- Evidence:
python verify.py— L03 and L04 are objectively gated by the suite; L01/L02/L05 are learner-attested. - Submission: each test-passed checkpoint prints a deterministic claim code; a reflection checkpoint prints one only after you answer its questions and run
python verify.py --attest ID; record it on flypython.com against your account. Self-reported evidence, never a certificate.
Visualization (see da-visualization), reporting (see da-report),
statistics theory, SQL, or notebooks. The dataset is synthetic but the
quality issues are the ones you will meet in real exports.
COURSE.md / COURSE_cn.md this file (EN / 中文)
lessons/L01.md … L05.md challenge notes (each has an _cn.md pair)
scenario/shop-export/ transactions.csv (messy input data)
TASK.md / TASK_cn.md the contract your code must satisfy
starter/eda.py the deliberately unfinished implementation
solution/eda.py the reviewed solution
tests/test_eda.py the contract suite (read-only)
verify.py objective pass/fail + claim codes
requirements.txt pinned pandas dependency
REVIEW.md maintainer run-through record
Reviewed content: REVIEW.md records the run-through. Code is
MIT-licensed; lesson prose is CC BY 4.0 (see repository LICENSE).