Exercices Machine Learning Detecter les valeurs manquantes
🎉

Bravo!

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

Detecter les valeurs manquantes

Tu recois un dataset du service marketing et surprise : il est plein de trous. Un client qui n'a pas renseigne son email, un capteur qui a plante, une colonne a moitie vide. Avant de faire quoi que ce soit, tu dois savoir ou sont ces trous. En pandas, les valeurs manquantes sont representees par NaN (Not a Number).

Avant de construire un modèle, tu dois savoir ou sont les trous dans tes données. Pandas te donne deux outils :
df.isnull() renvoie un DataFrame de True/False (True = valeur manquante)
df.isnull().sum() compte les True par colonne

Écris une fonction detecter_manquantes(df) qui prend un DataFrame et renvoie un dictionnaire avec :
'total_manquantes' : le nombre total de valeurs manquantes dans tout le DataFrame
'par_colonne' : un dictionnaire colonne -> nombre de valeurs manquantes (seulement les colonnes qui en ont)

Exemple :

import pandas as pd, numpy as np
df = pd.DataFrame({'a': [1, np.nan, 3], 'b': [4, 5, 6]})
detecter_manquantes(df)
# renvoie {'total_manquantes': 1, 'par_colonne': {'a': 1}}

Tests (4/4)

Une valeur manquante
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1, np.nan, 3], 'b': [4, 5, 6]})
result = detecter_manquantes(df)
assert result['total_manquantes'] == 1
assert result['par_colonne'] == {'a': 1}
Aucune manquante
import pandas as pd
df = pd.DataFrame({'x': [1, 2], 'y': [3, 4]})
result = detecter_manquantes(df)
assert result['total_manquantes'] == 0
assert result['par_colonne'] == {}
Plusieurs colonnes
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [np.nan, np.nan], 'b': [1, np.nan], 'c': [1, 2]})
result = detecter_manquantes(df)
assert result['total_manquantes'] == 3
assert result['par_colonne']['a'] == 2
assert result['par_colonne']['b'] == 1
assert 'c' not in result['par_colonne']
DataFrame vide
import pandas as pd
df = pd.DataFrame()
result = detecter_manquantes(df)
assert result['total_manquantes'] == 0

Indices (3 disponibles)

solution.py