Use when profiling data and assessing data quality.
Scanned 9/10/2026
Install to Claude Code
npx -y skills add LoopyLuci/Skills --skill data-profiling-quality --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Data Profiling Quality?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/loopyluci-data-profiling-quality)More formats (shields.io, HTML) on the badges page.
---
name: data-profiling-quality
description: "Use when profiling data and assessing data quality."
version: 1.0.0
author: Hermes Agent
license: MIT
metadata:
hermes:
tags: [data-profiling, data-quality, validation, cleanup, pandas-profiling, great-expectations]
related_skills: [data-cleaning-patterns, feature-engineering-automation, ml-pipeline-design, data-labeling-strategies]
---
# Data Profiling and Quality
Profiling datasets and assessing data quality — from automated profiling (YData Profiling, Great Expectations) through quality dimensions, anomaly detection, and data validation.
## When to Use
- Understanding a new dataset (profiling)
- Setting up data quality checks for pipelines
- Detecting data drift between training and production
- Validating data before model training
- Building data quality dashboards
## Quality Dimensions
```python
DATA_QUALITY_DIMENSIONS = {
'completeness': 'Missing values, null rates, empty strings',
'uniqueness': 'Duplicate records, duplicate values in unique columns',
'validity': 'Values conform to schema (type, format, range, domain)',
'consistency': 'Values consistent across related columns/tables',
'accuracy': 'Values represent real-world entities correctly',
'timeliness': 'Data is current enough for the use case',
}
class DataProfiler:
"""Profile a dataset for quality assessment."""
def __init__(self, df: pd.DataFrame):
self.df = df
self.profile = {}
def analyze(self) -> Dict:
self.profile['rows'] = len(self.df)
self.profile['columns'] = len(self.df.columns)
self.profile['missing'] = {}
self.profile['duplicates'] = self.df.duplicated().sum()
for col in self.df.columns:
missing = self.df[col].isnull().mean() * 100
dtype = str(self.df[col].dtype)
unique = self.df[col].nunique()
self.profile['missing'][col] = round(missing, 1)
if dtype.startswith('float') or dtype.startswith('int'):
self.profile[col] = {
'dtype': dtype, 'missing_pct': round(missing, 1),
'unique': unique, 'min': self.df[col].min(),
'max': self.df[col].max(), 'mean': round(self.df[col].mean(), 2),
}
return self.profile
```
## Common Pitfalls
1. **Profiling without action** — running profiling once and never fixing issues
2. **No automated checks** — manual quality checks don't happen regularly
3. **Ignoring data drift** — data quality changes over time; monitor continuously
4. **Schema validation only** — valid schema doesn't mean valid data (garbage values in valid formats)
5. **No domain-specific rules** — general profiling misses business-specific quality rules
## Verification Checklist
- [ ] Automated data profiling run on new datasets
- [ ] Data quality checks defined for each pipeline stage
- [ ] Great Expectations or similar validation suite implemented
- [ ] Missing value thresholds with alerts
- [ ] Duplicate detection and handling policy
- [ ] Data drift monitoring (training vs production distributions)
- [ ] Data quality dashboard with trends over time
- [ ] Action plan for quality issues (who fixes, by when)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!