Exercice 65 / 100

Pandas — Nettoyage

Cré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.

Supprimer les doublons

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 occurrence

Détecter sans supprimer :

df.duplicated() Series booléenne (True si doublon) df.duplicated().sum() nombre de doublons
drop_duplicates rassemble les lignes identiques et n'en laisse ressortir qu'une par groupe : c'est la première rencontrée qui reste, sauf à demander keep='last'

Traiter les NaN

Supprimer

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-NaN

Exemple complet

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)) # 5 print('NaN:', df.isnull().sum().sum()) # 2
df_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)

⚠ Le piège SettingWithCopyWarning

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 explicite

Pour 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.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →