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)
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 officielle
import pandas as pd
import numpy as np
def detecter_manquantes(df):
manquantes = df.isnull().sum()
par_colonne = {col: int(val) for col, val in manquantes.items() if val > 0}
return {
'total_manquantes': int(df.isnull().sum().sum()),
'par_colonne': par_colonne,
}