Guide · updated 2026-11-04
A data cleaning checklist you can defend
1. Read before you change
Start with the brief and the data dictionary, then profile every column: missing, empty, padded and distinct counts, plus the range of values. Write down every question the profile raises. A question answered by a guess becomes a silent rule in your pipeline.
2. Write the rules down
For each column, write the rule you will apply and what happens to values that break it. Decide the grain (what one row represents) and the survivor rule for duplicates. Decide the order in which validation rules are checked, because a row can break several.
- Which characters count as padding?
- Which values count as missing?
- Which formats are accepted for dates, timestamps and amounts?
- What happens to invalid rows: quarantine, make missing, or stop?
3. Normalize, then convert
Trim and normalize text first, so later comparisons see the real value. Then convert each column to its type with an explicit format. Never let a tool infer types for identifiers, and never parse money as floating point.
4. Validate and quarantine
Apply the validation rules in the declared order and send each invalid row to an exception table with the first failing reason. Exceptions are not waste; they are the report someone needs to fix the source.
5. Deduplicate at the grain
Deduplicate after validation, so a broken copy can never beat a valid one. Use a complete order that ends in a unique tie-break, so the same input always keeps the same row.
6. Reconcile and hand off
Check that input rows equal clean rows plus exceptions plus rows filtered as out of scope. Hand off the clean table, the exception report with counts by reason, the rules you applied, and the open questions.