freshdata clean report
backend=pandas · 0.015s
Action timeline
fix_dtypes signup_date — converted to datetime64[ns] (205 affected) low automatic
confidence
100%
drop_duplicates — dropped 5 duplicate row(s) (2.4% of rows, keep='first') (5 affected) low automatic
confidence
100%
missing email — preserved 23 missing value(s) (0 affected) medium automatic
why: identifier-like column — imputing keys would fabricate identities
confidence
100%
missing tier — filled 51 missing value(s) with sentinel "Missing" ('Missing') (51 affected) medium automatic
why: medium missingness without a dominant category; an explicit sentinel keeps the gap visible
confidence
70%
outliers revenue — preserved 5 outlier(s), 2.5% of values (method=iqr, factor=1.5) (0 affected) low automatic
why: protected column role or domain
confidence
90%
Audit ledger
⬇ JSON⬇ CSV| column | action | risk | confidence | count | description |
|---|
| signup_date | fix_dtypes | low | 100% | 205 | converted to datetime64[ns] |
| drop_duplicates | low | 100% | 5 | dropped 5 duplicate row(s) (2.4% of rows, keep='first') |
| email | missing | medium | 100% | 0 | preserved 23 missing value(s) |
| tier | missing | medium | 70% | 51 | filled 51 missing value(s) with sentinel "Missing" ('Missing') |
| revenue | outliers | low | 90% | 0 | preserved 5 outlier(s), 2.5% of values (method=iqr, factor=1.5) |
Needs review
- id column 'email' has 23 missing value(s) (11.5%); check whether those rows are joinable at all
- column 'revenue' has 5 extreme value(s) that were deliberately preserved; review them in their domain context