
Data Cleaning Pipeline
- 516 installs
- 305 repo stars
- Updated March 4, 2026
- aj-geddes/useful-ai-prompts
Data Cleaning Pipeline is a skill that guides developers through systematic missing-value imputation, outlier treatment, deduplication, and format standardization to turn messy raw datasets into analysis-ready tables.
About
Data Cleaning Pipeline is a Skillselion skill from aj-geddes/useful-ai-prompts that structures end-to-end preprocessing for messy tabular and semi-structured datasets. The skill walks through missing-value strategies, duplicate removal, outlier detection, type coercion, and repeatable transformation steps so cleaned outputs are safe for pandas, SQL warehouses, ML training jobs, or AI agent ingestion. Developers reach for Data Cleaning Pipeline when exploratory analysis keeps breaking on nulls, inconsistent encodings, or schema drift, and they need a documented, automatable quality gate instead of one-off notebook fixes. The workflow emphasizes data quality checks, standardized column formats, and pipeline automation patterns that keep downstream models and APIs from inheriting silent data defects.
- Handles missing values via deletion and imputation strategies
- Detects and treats outliers with multiple treatment options
- Performs duplicate removal, normalization, scaling and text cleaning
- Builds automated data preprocessing workflows for pipelines
- Includes 6 core components and 4 distinct cleaning strategies
Data Cleaning Pipeline by the numbers
- 516 all-time installs (skills.sh)
- Ranked #444 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill data-cleaning-pipelineAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 516 |
|---|---|
| repo stars | ★ 305 |
| Last updated | March 4, 2026 |
| Repository | aj-geddes/useful-ai-prompts ↗ |
How do you automate data cleaning for messy datasets?
Turn messy raw datasets into clean, standardized data ready for analysis, modeling, or feeding into AI agents.
Who is it for?
Backend and data engineers preparing raw CSV, JSON, or warehouse extracts before analytics, ML training, or agent context loading.
Skip if: Developers who only need a one-line pandas dropna() in a notebook and do not require documented, repeatable pipeline automation.
When should I use this skill?
Raw datasets arrive with missing values, duplicate rows, inconsistent formats, or outliers that block analysis, modeling, or AI agent ingestion.
What you get
Standardized dataset, imputation rules, outlier treatment log, deduplicated records, and a repeatable preprocessing pipeline definition.
- cleaned dataset
- preprocessing pipeline definition
- data quality checklist
Files
Data Cleaning Pipeline
Overview
Data cleaning pipelines transform raw, messy data into clean, standardized formats suitable for analysis and modeling through systematic handling of missing values, outliers, and data quality issues.
When to Use
- Preparing raw datasets for analysis or modeling
- Handling missing values and data quality issues
- Removing duplicates and standardizing formats
- Detecting and treating outliers
- Building automated data preprocessing workflows
- Ensuring data integrity and consistency
Core Components
- Missing Value Handling: Imputation and removal strategies
- Outlier Detection & Treatment: Identifying and handling anomalies
- Data Type Standardization: Ensuring correct data types
- Duplicate Removal: Identifying and removing duplicates
- Normalization & Scaling: Standardizing value ranges
- Text Cleaning: Handling text data
Cleaning Strategies
- Deletion: Removing rows or columns
- Imputation: Filling with mean, median, or predictive models
- Transformation: Converting between formats
- Validation: Ensuring data integrity rules
Implementation with Python
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.impute import SimpleImputer, KNNImputer
# Load raw data
df = pd.read_csv('raw_data.csv')
# Step 1: Identify and handle missing values
print("Missing values:\n", df.isnull().sum())
# Strategy 1: Delete rows with critical missing values
df = df.dropna(subset=['customer_id', 'transaction_date'])
# Strategy 2: Impute numerical columns with median
imputer = SimpleImputer(strategy='median')
df['age'] = imputer.fit_transform(df[['age']])
# Strategy 3: Use KNN imputation for related features
knn_imputer = KNNImputer(n_neighbors=5)
numeric_cols = df.select_dtypes(include=[np.number]).columns
df[numeric_cols] = knn_imputer.fit_transform(df[numeric_cols])
# Strategy 4: Fill categorical with mode
df['category'] = df['category'].fillna(df['category'].mode()[0])
# Step 2: Handle duplicates
print(f"Duplicate rows: {df.duplicated().sum()}")
df = df.drop_duplicates()
# Duplicate on specific columns
df = df.drop_duplicates(subset=['customer_id', 'transaction_date'])
# Step 3: Outlier detection and handling
Q1 = df['amount'].quantile(0.25)
Q3 = df['amount'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# Remove outliers
df = df[(df['amount'] >= lower_bound) & (df['amount'] <= upper_bound)]
# Alternative: Cap outliers
df['amount'] = df['amount'].clip(lower=lower_bound, upper=upper_bound)
# Step 4: Data type standardization
df['transaction_date'] = pd.to_datetime(df['transaction_date'])
df['customer_id'] = df['customer_id'].astype('int64')
df['amount'] = pd.to_numeric(df['amount'], errors='coerce')
# Step 5: Text cleaning
df['name'] = df['name'].str.strip().str.lower()
df['name'] = df['name'].str.replace('[^a-z0-9\s]', '', regex=True)
# Step 6: Normalization and scaling
scaler = StandardScaler()
df[['age', 'income']] = scaler.fit_transform(df[['age', 'income']])
# MinMax scaling for bounded range [0, 1]
minmax_scaler = MinMaxScaler()
df[['score']] = minmax_scaler.fit_transform(df[['score']])
# Step 7: Create data quality report
def create_quality_report(df_original, df_cleaned):
report = {
'Original rows': len(df_original),
'Cleaned rows': len(df_cleaned),
'Rows removed': len(df_original) - len(df_cleaned),
'Removal percentage': ((len(df_original) - len(df_cleaned)) / len(df_original) * 100),
'Original missing': df_original.isnull().sum().sum(),
'Cleaned missing': df_cleaned.isnull().sum().sum(),
}
return pd.DataFrame(report, index=[0])
quality = create_quality_report(df, df)
print(quality)
# Step 8: Validation checks
assert df['age'].isnull().sum() == 0, "Age has missing values"
assert df['transaction_date'].dtype == 'datetime64[ns]', "Date not datetime"
assert (df['amount'] >= 0).all(), "Negative amounts detected"
print("Data cleaning pipeline completed successfully!")Pipeline Architecture
class DataCleaningPipeline:
def __init__(self):
self.cleaner_steps = []
def add_step(self, func, description):
self.cleaner_steps.append((func, description))
return self
def execute(self, df):
for func, desc in self.cleaner_steps:
print(f"Executing: {desc}")
df = func(df)
return df
# Usage
pipeline = DataCleaningPipeline()
pipeline.add_step(
lambda df: df.dropna(subset=['customer_id']),
"Remove rows with missing customer_id"
).add_step(
lambda df: df.drop_duplicates(),
"Remove duplicate rows"
).add_step(
lambda df: df[(df['amount'] > 0) & (df['amount'] < 100000)],
"Filter invalid amount ranges"
)
df_clean = pipeline.execute(df)Advanced Cleaning Techniques
# Step 9: Feature-specific cleaning
df['phone'] = df['phone'].str.replace(r'\D', '', regex=True) # Remove non-digits
# Step 10: Datetime handling
df['created_date'] = pd.to_datetime(df['created_date'], errors='coerce')
df['days_since_creation'] = (pd.Timestamp.now() - df['created_date']).dt.days
# Step 11: Categorical standardization
df['status'] = df['status'].str.lower().str.strip()
df['status'] = df['status'].replace({
'active': 'active',
'inactive': 'inactive',
'pending': 'pending',
})
# Step 12: Numeric constraint checking
df['age'] = df['age'].where((df['age'] >= 0) & (df['age'] <= 150), np.nan)
df['percentage'] = df['percentage'].where((df['percentage'] >= 0) & (df['percentage'] <= 100), np.nan)
# Step 13: Create data quality score
quality_score = {
'Missing %': (df.isnull().sum() / len(df) * 100).mean(),
'Duplicates %': (df.duplicated().sum() / len(df) * 100),
'Complete Features': (df.notna().sum() / len(df)).mean() * 100,
}
# Step 14: Generate cleaning report
cleaning_report = f"""
DATA CLEANING REPORT
====================
Rows removed: {len(df) - len(df_clean)}
Columns: {len(df_clean.columns)}
Remaining rows: {len(df_clean)}
Completeness: {(df_clean.notna().sum().sum() / (len(df_clean) * len(df_clean.columns)) * 100):.1f}%
"""
print(cleaning_report)Key Decisions
- How to handle missing values (delete vs impute)?
- Which outliers are legitimate business cases?
- What are acceptable value ranges?
- Which duplicates are true duplicates?
- How to standardize categorical values?
Validation Steps
- Check for data type consistency
- Verify value ranges are reasonable
- Confirm no unintended data loss
- Document all transformations applied
- Create audit trail of changes
Deliverables
- Cleaned dataset with quality metrics
- Data cleaning log documenting all steps
- Validation report confirming data integrity
- Before/after comparison statistics
- Cleaning code and pipeline documentation
#!/bin/bash
# scaffold-analysis.sh - Scaffold data analysis project structure
# Usage: ./scaffold-analysis.sh <project_name>
set -euo pipefail
PROJECT="${{1:?Usage: $0 <project_name>}}"
echo "Scaffolding analysis project: $PROJECT"
# TODO: Create project structure
# - data/raw/ data/processed/
# - notebooks/
# - src/
# - reports/
# - requirements.txt
echo "Analysis project scaffolded."
# %% [markdown]
# # Analysis: [Title]
# TODO: Describe the analysis objective
# %% Setup
import pandas as pd
import numpy as np
# TODO: Add imports
# %% Data Loading
# TODO: Load data
# df = pd.read_csv('data/raw/dataset.csv')
# %% Exploratory Data Analysis
# TODO: Add EDA
# %% Analysis
# TODO: Implement analysis
# %% Results
# TODO: Summarize findings
Related skills
How it compares
Choose Data Cleaning Pipeline when you need governed, repeatable preprocessing across datasets rather than isolated notebook cleanup scripts.
FAQ
What does Data Cleaning Pipeline handle?
Data Cleaning Pipeline covers missing-value imputation, outlier handling, duplicate removal, and format standardization. The skill produces repeatable preprocessing steps so raw datasets become analysis-ready for modeling, SQL, or AI agent feeds.
When should developers use Data Cleaning Pipeline?
Data Cleaning Pipeline fits projects where exploratory analysis fails on nulls, inconsistent encodings, or schema drift. Use it before ML training, analytics dashboards, or agent ingestion when data quality must be systematic rather than ad hoc.