Exercices Machine Learning Remplir les valeurs manquantes
🎉

Bravo!

Débutant 🧠 Fondamentaux 10 XP 0 personnes ont réussi

Remplir les valeurs manquantes

Tu as repere les trous dans tes donnees, maintenant il faut les boucher. Impossible de les laisser : la plupart des algorithmes de ML plantent ou donnent des resultats aberrants face a des NaN.

La stratégie la plus courante pour les colonnes numeriques, c'est de remplacer les NaN par la moyenne ou la mediane de la colonne. La moyenne est sensible aux valeurs extremes, la mediane est plus robuste.

En pandas :
df['colonne'].mean() donne la moyenne
df['colonne'].median() donne la mediane
df['colonne'].fillna(valeur) remplace les NaN par la valeur donnee

Écris une fonction remplir_manquantes(df, stratégie='moyenne') qui prend un DataFrame et remplace les valeurs manquantes de toutes les colonnes numeriques par la moyenne (si stratégie='moyenne') ou la mediane (si stratégie='mediane'). La fonction renvoie le DataFrame modifie.

Exemple :

import pandas as pd, numpy as np
df = pd.DataFrame({'a': [1.0, np.nan, 3.0], 'b': [10.0, 20.0, np.nan]})
result = remplir_manquantes(df, 'moyenne')
# a: [1.0, 2.0, 3.0], b: [10.0, 20.0, 15.0]

Tests (4/4)

Remplissage moyenne
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1.0, np.nan, 3.0]})
result = remplir_manquantes(df, 'moyenne')
assert abs(result['a'].iloc[1] - 2.0) < 1e-9
Remplissage mediane
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1.0, np.nan, 3.0, 100.0]})
result = remplir_manquantes(df, 'mediane')
assert abs(result['a'].iloc[1] - 3.0) < 1e-9
Ne modifie pas l'original
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1.0, np.nan]})
remplir_manquantes(df, 'moyenne')
assert pd.isnull(df['a'].iloc[1])
Colonnes non numeriques ignorees
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1.0, np.nan], 'b': ['x', None]})
result = remplir_manquantes(df, 'moyenne')
assert result['b'].iloc[1] is None

Indices (3 disponibles)

solution.py