data-cleaning-pipeline

Transforms messy raw data into analysis-ready datasets through scripted, reproducible cleaning stages.

1|Updated Jul 3, 2026
One-click install
npx skills add https://github.com/Nandansai08/skillz --skill data-cleaning-pipeline-nandansai08
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: data-cleaning-pipeline
Source: https://github.com/Nandansai08/skillz/tree/main/skills/data-analytics/data-cleaning-pipeline
Command: npx skills add https://github.com/Nandansai08/skillz --skill data-cleaning-pipeline-nandansai08

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Hand-edited spreadsheets and one-off data fixes cannot be re-run, reviewed, or trusted. This Skill turns data cleaning into versioned code: raw data stays immutable, every mutation is a counted stage, rejects go to a queryable lane, and the run ends with an exact row-level reconciliation. ## Core Features & Use Cases - Ordered cleaning stages: type coercion, structural fixes, value normalization, sentinel/null handling, deduplication, and validation, sequenced so each stage builds on the previous one's guarantees. - Reject lanes and reconciliation: failed coercions are counted and exported with reasons, and the final report proves raw = clean + rejects + deduped, to the row. - Reviewable mappings and drift gates: fuzzy matching only proposes candidates for a human-approved mapping table in git, and recurring feeds get drift checks via Great Expectations, pandera, or dbt tests. - Use Case: A monthly 200k-row vendor CSV arrives with mixed date formats, currency symbols in amounts, free-text vendor names, and 3% duplicate shipments. The pipeline cleans it as six scripted functions, rejects 1,882 unparseable rows back to the vendor, dedupes with a latest-file-date survivor rule, and catches a vendor schema change in month 3 via a null-rate drift gate. ## Quick Start Clean this messy CSV into an analysis-ready dataset as a reproducible scripted pipeline with a rejects file and a row-count reconciliation report.

Frequently Asked Questions about data-cleaning-pipeline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I clean a messy CSV file reproducibly in Python?▼

Write the cleaning as code that reads raw data and writes a new clean artifact, never editing the original. Order stages as type coercion, structural fixes, normalization, sentinel handling, deduplication, then validation, and end with a reconciliation report counting every mutation.

How to deduplicate records without losing the wrong rows?▼

Define a match key after normalization, then apply an explicit survivor rule such as most recent by updated_at, most complete, or source priority. Using drop_duplicates(keep='first') on unsorted data keeps a random row; log the dedupe count and keep losers queryable.

Should I use fuzzy matching to merge company or vendor names?▼

Fuzzy matching should only propose candidates for a human-reviewed mapping table checked into version control. Auto-merging on string similarity is unsafe because names like 'Johnson Ltd' and 'Johnsen Ltd' clear 90% similarity while being different companies.

Why is pd.to_numeric with errors='coerce' risky for data cleaning?▼

It silently converts unparseable values to NaN, which can quietly delete a significant share of a column. Always count the new NaNs after coercion and route failed rows to a rejects file with reasons so the data loss is visible.

When should I run data cleaning versus exploratory data analysis?▼

Run exploratory data analysis first to profile grain, nulls, sentinels, and outliers; cleaning without profiling is guessing. The EDA findings become the worklist that drives each cleaning stage and its per-column null policy.

How do I catch schema changes in a recurring data feed?▼

Add drift gates using tools like Great Expectations, pandera, or dbt tests that compare today's null rates and schema against historical tolerances. This catches vendor changes, such as a renamed column, at load time instead of in a quarterly report.