| severity | where | what |
|---|---|---|
| high | country | only one distinct value (JP) |
| high | country_copy | only one distinct value (JP) |
| high | notes | every value is missing |
| high | cabin | 87.5% missing (105 of 120) |
| high | signup_date | each of its 12 values maps to exactly one 'purchased' class |
| warn | purchased | smallest class 8.3% vs largest 91.7% across 2 classes |
| warn | signup_date | values parse as dates but are stored as text |
| warn | country, country_copy | identical values in country, country_copy |
| warn | fare | skew 6.16 (right-tailed) |
| warn | age, age_months | correlation +1.000 |
| warn | amount_text, salary | correlation +1.000 |
| warn | salary | 11.7% missing (14 of 120) |
| info | purchased | skew 3.05 (right-tailed) |
| info | record_id | every value is distinct (looks like an identifier) |
| info | fare | 3 values beyond 1.5×IQR (2.5%) |
| column | kind | missing | unique | distribution | summary |
|---|---|---|---|---|---|
| age | numeric | — | 45 | mean 41.625 · range 20–64 | |
| salary | numeric | 11.7% | 106 | mean 38,169.594 · range 30,137–46,303 | |
| cabin | categorical | 87.5% | 15 | top: C0 (1), C8 (1), C16 (1) | |
| notes | empty | 100.0% | 0 | — | |
| country | categorical | — | 1 | top: JP (120) | |
| record_id | text | — | 120 | length 7–7 | |
| fare | numeric | — | 11 | mean 259.175 · range 5–10,000 · skew +6.16 · 3 outliers | |
| amount_text | numeric | — | 120 | mean 1,059.5 · range 1,000–1,119 | |
| signup_date | categorical | — | 12 | top: 2024-01-15 (10), 2024-02-15 (10), 2024-03-15 (10) | |
| age_months | numeric | — | 45 | mean 499.5 · range 240–768 | |
| country_copy | categorical | — | 1 | top: JP (120) | |
| outcome_code | categorical | — | 2 | top: class-0 (60), class-1 (60) | |
| purchased | numeric | — | 2 | mean 0.083 · range 0–1 · skew +3.05 |
Every row shares the same value, so the column cannot help distinguish rows and contributes nothing to a model.
Options
Every value in this column is missing, so it carries no information about any row.
Options
More than half of this column's values are absent. Imputing a majority of a column invents most of its content, and the imputed value itself becomes the dominant signal.
Options
This column predicts the target almost perfectly. That usually means it was recorded at the same time as the outcome or after it, and will not be available when the model is actually used.
Options
The target's classes are unevenly represented. Accuracy becomes misleading: a model that always predicts the majority class can look strong while being useless for the minority class.
Options
The values parse as dates but are stored as strings, so sorting is lexicographic and no time arithmetic is possible.
Options
Two or more columns contain exactly the same values, so they carry the same information twice.
Options
The column's values are concentrated on one side with a long tail on the other. Models that assume roughly symmetric inputs — linear and distance based ones — are most affected; tree ensembles are largely indifferent.
Options
The two columns move together almost perfectly. They contribute overlapping information, which destabilises linear-model coefficients and splits feature importance between them.
Options
Some values are absent. Most estimators cannot train on missing values, so they must be filled or the affected rows removed.
Options
The column has a different value in every row, which is the signature of an identifier (a key, an order number, a hash) rather than a feature.
Options
Some values sit far outside the interquartile range (beyond 1.5×IQR from the quartiles). They may be recording errors, or they may be the real, important tail of the distribution.
Options