See what a data handover looks like.
An invented workshop survey makes the process tangible: original data, documented decisions, prepared files, and code you can rerun.
Entirely fictional. Every response, identifier, and figure in this example was created for demonstration. It contains no real respondent data and represents no client project or outcome.
The hypothetical brief
Prepare a small adult-workshop survey export for review. Standardise the documented spellings, remove exact duplicate records, and flag missing or questionable responses while keeping their original values.
Fictional input records
Five fields, including format preferences, study hours, and session attendance.
Records retained
One exact repeated record is removed. The log identifies the original it matches.
Records need review
The other six pass the listed checks. Unresolved responses stay visible in the handover.
What changed, and what still needs a decision
The checks follow the invented questionnaire's codebook. Thresholds and mappings are explicit assumptions of this demonstration.
| Check | Raw export | Prepared handover | Decision |
|---|---|---|---|
| Total records | 13 | 12 | Keep the first exact occurrence. |
| Exact duplicate copies | 1 | 0 retained | Record 14 matches record 4 across all five raw fields. |
| Age outside 18–100 | 2 | 2 flagged | Keep the raw ages; leave the prepared ages blank for source review. |
| Study hours outside 0–20 | 1 | 1 flagged | Treat the threshold as a review rule; preserve the response. |
| Missing identifier | 1 | 1 flagged | Keep the record and request source verification. |
| Missing study hours | 1 | 1 flagged | Keep the missing value blank. |
| Unrecognised workshop format | 1 | 1 flagged | hybrid has no agreed mapping in this fictional codebook. |
“Record” uses the CSV record index including the header as record 1. Six retained records each have one unresolved flag. No values are imputed. Every original value remains in an accompanying _raw field.
A few decisions you can inspect
Make recoding explicit
“Online”, “on-line”, and “remote” map to online. “Y” and “1” map to yes. The script records 10 format and 8 attendance normalisations across retained records.
Keep a review trail
The log records the source row, field, original value, prepared value, and reason. A range flag asks for verification; it does not establish the correct answer.
State the denominator
The small descriptive summary uses only the six records that pass all listed demo checks. The six unresolved records are excluded from that example summary.
Fictional summary: among those six passing records, four attendance responses are yes and two are no. Their study hours total 37, giving a mean of 6.17 hours (37 ÷ 6, rounded). These invented responses support an arithmetic demonstration only.
Explore the sample handover
Small files you can open and compare. All data is synthetic; the Python script uses only the standard library.
Original survey export
The unchanged fictional input, including inconsistent spellings and the repeated record.
Download raw data (CSV)Prepared dataset
Original values, prepared fields, source-record references, and flags in one file.
Download prepared data (CSV)Variable codebook
Field meanings, explicit recoding, validation thresholds, and review-flag definitions.
Download codebook (Markdown)Cleaning log
A record of every recoding, exact duplicate removal, and unresolved issue.
Download cleaning log (CSV)Reproducible script
Rerun the same documented rules locally with Python 3. No extra packages are required.
Download cleaning script (Python)Generated summary
Record counts, flag counts, and the passing-record summary produced by the script.
Download summary (JSON)Repeat the demonstration
Save the raw CSV and Python script in the same folder. From that folder, run:
python3 clean-survey.py
The script writes the prepared CSV, cleaning log, and summary into a reproduced/ subfolder, so you can compare them with the supplied files. No upload or account is needed.
Define the handover for your dataset.
Share your brief, file structure, known issues, and required outputs. We agree the rules and deliverables before work begins.
Discuss data cleaning