| 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 | 89.0% missing (534 of 600) |
| high | outcome_code | each of its 2 values maps to exactly one 'purchased' class |
| warn | signup_date | values parse as dates but are stored as text |
| warn | country, country_copy | identical values in country, country_copy |
| warn | cabin | 66 distinct values across 66 rows |
| warn | fare | skew 6.87 (right-tailed) |
| warn | age, age_months | correlation +1.000 |
| warn | salary | 13.5% missing (81 of 600) |
| warn | amount_text | 100% of values parse as numbers |
| warn | fare | 37 values beyond 1.5×IQR (6.2%) |
| info | record_id | every value is distinct (looks like an identifier) |
| column | kind | missing | unique | distribution | summary |
|---|---|---|---|---|---|
| age | numeric | — | 45 | mean 42.702 · range 20–64 | |
| salary | numeric | 13.5% | 511 | mean 39,357.938 · range 19,798–56,542 · 1 outliers | |
| region | categorical | — | 4 | top: north (239), south (188), east (117) | |
| cabin | categorical | 89.0% | 66 | top: C13 (1), C37 (1), C38 (1) | |
| notes | empty | 100.0% | 0 | — | |
| country | categorical | — | 1 | top: JP (600) | |
| country_copy | categorical | — | 1 | top: JP (600) | |
| record_id | text | — | 600 | length 7–7 | |
| fare | numeric | — | 467 | mean 210.883 · range 5.29–10,000 · skew +6.87 · 37 outliers | |
| amount_text | text | — | 598 | length 5–6 | |
| signup_date | categorical | — | 11 | top: 2024-01-15 (55), 2024-02-15 (55), 2024-03-15 (55) | |
| age_months | numeric | — | 45 | mean 512.42 · range 240–768 | |
| outcome_code | categorical | — | 2 | top: class-0 (363), class-1 (237) | |
| purchased | numeric | — | 2 | mean 0.395 · range 0–1 |
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 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 holds a large number of distinct categories relative to its row count. One-hot encoding it would create a very wide, very sparse matrix.
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's values parse as numbers but are stored as strings, usually because of thousands separators, currency symbols, or a stray non-numeric marker. Left as text, they are treated as unordered categories.
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
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