ConsigneRemplacez les NaN par la moyenne de la colonne
Les valeurs manquantes sont représentées par NaN (Not a Number). Pandas a des outils dédiés pour les détecter et les traiter.
df.isnull() # DataFrame de booléens (True = NaN)df.isnull().sum() # nb de NaN par colonnedf.isnull().any() # True si au moins un NaN par colonnedf['col'].notnull() # inversedf.dropna() # supprime toute ligne contenant ≥ 1 NaNdf.dropna(subset=['note']) # uniquement si NaN dans 'note'df.dropna(how='all') # seulement si TOUTE la ligne est NaNdf.dropna(axis=1) # supprime les colonnes avec NaNdf.fillna(0) # remplacer par 0df.fillna('Inconnu') # par une strdf.fillna(df.mean()) # par la moyenne de chaque colonnedf['note'] = df['note'].fillna(df['note'].mean()) # cible une colonnedf.fillna(method='ffill') # forward fill (propage la précédente)df.fillna(method='bfill') # backward fillimport pandas as pdimport numpy as npdf = pd.DataFrame({'note': [14, np.nan, 17, np.nan, 11]})moyenne = df['note'].mean() # 14.0 (NaN ignorés)df['note'] = df['note'].fillna(moyenne)print(df)# note# 0 14.0# 1 14.0# 2 17.0# 3 14.0# 4 11.0Par défaut, fillna et autres NE modifient pas le DataFrame. Il faut réassigner (df = df.fillna(...) ou df.fillna(..., inplace=True)).
Stratégies d'imputation courantes :
- moyenne / médiane (numérique) — la médiane est plus robuste aux outliers
- mode (catégoriel)
- constante ('Inconnu', 0)
- imputation par groupe : df.groupby('cat').transform('mean')
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →