Partie 2 · Imputation
Remplacer les valeurs manquantes (imputation)
L'imputation remplace les manquants avec .fillna(). Quatre familles :
| Méthode | Quand ? |
|---|---|
Constante (0, 'Inconnu') | valeur de repli explicite |
Moyenne .mean() | distribution numérique équilibrée (sensible aux extrêmes) |
Médiane .median() | distribution avec valeurs extrêmes |
Mode .mode()[0] | variables catégorielles ou discrètes |
Séquentielle (ffill, bfill) | séries temporelles : valeur précédente / suivante |
Attention au type : remplir une colonne numérique avec la chaîne 'Valeur manquante' la transforme en colonne de type object (mélange de nombres et de texte) (question du TP).
Vérifie que tu as compris
Une colonne numérique contient quelques valeurs très extrêmes. Quelle imputation est plus robuste ?
Vérifie que tu as compris
Quelle imputation convient à une colonne catégorielle comme la ville ?
À toi de coder
Propager : ffill et bfill
Pour des mesures dans le temps, on peut reporter la dernière valeur connue (ffill, forward fill) ou la suivante (bfill). Le ffill ne peut rien faire pour un manquant en tout début de série (aucune valeur précédente).
def ffill(valeurs): sortie, derniere = [], None for v in valeurs: derniere = v if v is not None else derniere sortie.append(derniere) return sortie ffill([None, 4, None, None, 7]) # [None, 4, 4, 4, 7]
Choisir
- Colonne presque entièrement vide : la supprimer.
- Peu de manquants : les remplacer.
- Toujours se demander ce que la valeur choisie fait à la distribution.
Vérifie que tu as compris
Que donne
ffill sur [None, 4, None, 7] ?À toi de coder