ConsigneCrée un DataFrame avec des valeurs manquantes (NaN) et des doublons. Utilise dropna(), fillna() et drop_duplicates() pour nettoyer
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% identiquesdf.drop_duplicates(subset=['nom']) identiques SUR la colonne nomdf.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 NaNdf.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.ffill() propage la précédente non-NaN (l'ancienne écriture df.fillna(method='ffill') est dépréciée depuis pandas 2.1)df = 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)) # 5print('NaN:', df.isnull().sum().sum()) # 2df_clean = df.drop_duplicates().copy() # 4 lignes (le .copy() de l'encadré plus bas)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 →