Nettoyer un DataFrame = supprimer les doublons, traiter les NaN, harmoniser les types. C'est l'étape avant toute analyse.
df.drop_duplicates() supprime les lignes 100% identiques
df.drop_duplicates(subset=['nom']) identiques SUR la colonne nom
df.drop_duplicates(keep='last') garde la dernière occurrenceDétecter sans supprimer :
df.duplicated() Series booléenne (True si doublon)
df.duplicated().sum() nombre de doublonsSupprimer
df.dropna() supprime toute ligne avec ≥ 1 NaN
df.dropna(subset=['score']) seulement si NaN dans 'score'Remplir
df['score'] = df['score'].fillna(0)
df['score'] = df['score'].fillna(df['score'].mean())
df['ville'] = df['ville'].fillna('Inconnu')
df.fillna(method='ffill') propage la précédente non-NaNdf = pd.DataFrame({
'nom': ['Alice', 'Bob', 'Alice', 'Charlie', 'Bob'],
'score': [85, np.nan, 85, 90, 78],
'ville': ['Paris', 'Lyon', 'Paris', None, 'Lyon']
})print('Avant:', len(df)) # 5
print('NaN:', df.isnull().sum().sum()) # 2df_clean = df.drop_duplicates() # 4 lignes
df_clean['score'] = df_clean['score'].fillna(df_clean['score'].mean())
df_clean['ville'] = df_clean['ville'].fillna('Inconnu')
print(df_clean)Quand tu fais df_clean = df[...] puis df_clean['col'] = ..., pandas peut afficher un avertissement disant que tu modifies une vue. Pour éviter :
df_clean = df[...].copy() # copie explicitePour des projets ML, fixe une stratégie d'imputation par colonne (mean / median / mode / 'Inconnu') et documente-la. Le choix d'imputation peut changer les performances du modèle.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →