DataManip Insights ÉPISODE 1Pandas & Préparation de donnéesGratuit
🐼 Épisode 1 · Valeurs manquantes

« On remplace les trous par la moyenne, ça ne change rien. »
Si : la dispersion et les corrélations s'effondrent.

Pandas propose deux réflexes face aux trous : <code>dropna()</code> et <code>fillna(df.mean())</code>. Le premier garde les statistiques honnêtes si les trous sont dus au hasard, mais perd des lignes. Le second garde toutes les lignes mais écrase la variabilité et affaiblit les relations entre variables. Et si les trous ne sont pas dus au hasard, aucun des deux ne vous sauve.

🎯 L'analogie clé

Un compteur qui ne relève pas les jours de forte consommation : si vous ne regardez que les relevés présents, votre moyenne est trop basse, même avec des milliers de lignes.

Le principe

Pourquoi la donnée manque
compte plus que combien.

Si la donnée manque au hasard (panne aléatoire), supprimer les lignes ne biaise pas la moyenne. Si elle manque justement parce que la valeur est élevée (compteur saturé), les lignes restantes ne représentent plus la population.

🗑️
Supprimer (dropna)
On garde les lignes complètes. La moyenne et l'écart-type restent justes si les trous sont aléatoires, mais l'échantillon rétrécit.
🟰
Imputer par la moyenne
Chaque trou reçoit la même valeur. La moyenne ne bouge pas, mais l'écart-type baisse et les corrélations s'affaiblissent.
🎯
Trous non aléatoires
Quand la probabilité de manquer dépend de la valeur elle-même, la moyenne des lignes présentes est biaisée, quelle que soit la méthode.
Le point clé : avant de choisir dropna ou fillna, demandez-vous pourquoi la donnée manque. Aucune méthode ne corrige un mécanisme que vous n'avez pas compris.
À vous de manipuler

Percez des trous
dans 1 000 relevés.

Mille consommations journalières (moyenne 100 kWh, écart-type 30) et une seconde variable corrélée à 0,59. On efface une part des valeurs, au hasard ou de préférence les plus élevées, puis on compare les deux méthodes à la vérité.

Supprimer ou imputer
Erreur de chaque méthode par rapport à la vérité (%)

Graine fixe. Remplacer par la médiane donne les mêmes résultats ici, car la distribution est symétrique. La probabilité de manquer vaut la part choisie × (1 + biais × écart réduit de la valeur).

Moyenne (lignes présentes)
-
Écart-type après imputation
-
Corrélation après imputation
-
Lignes perdues par dropna
-
sur 1 000
À retenir : avec 20 % de trous au hasard, supprimer garde la moyenne (99,9 contre 100,3) et l'écart-type (30,4 contre 30,0). Imputer par la moyenne ramène l'écart-type à 27,1 (−10 %) et la corrélation de 0,59 à 0,52. Si les trous visent les fortes valeurs, la moyenne tombe à 94,3 quelle que soit la méthode.
Ce que l'imputation écrase

Plus on comble,
plus la variabilité disparaît.

Imputer par la moyenne revient à ajouter des points sans variabilité : l'écart-type chute d'un facteur proche de √(1 − part manquante). Le graphique compare l'écart-type mesuré à la vérité (30), pour des trous au hasard.

Écart-type selon la part de trous
Écart-type estimé (kWh), trous au hasard

Les courbes utilisent des trous au hasard. Le point est le réglage de pourcentage du simulateur du dessus, imputation par la moyenne.

Imputation, 10 % de trous
-
kWh d'écart-type
Imputation, 30 % de trous
-
kWh d'écart-type
Imputation, 50 % de trous
-
kWh d'écart-type
Suppression, 50 % de trous
-
kWh d'écart-type
Le point clé : à 30 % de trous imputés par la moyenne, l'écart-type tombe à 25,6 au lieu de 30. À 50 %, il tombe à 21,7. Supprimer reste proche de 30 tant que les trous sont aléatoires.
En pratique

Quatre réflexes
avant de combler un trou.

Voici la démarche, puis un exemple Pandas.

🔢
Comptez et localisez
<code>df.isna().mean()</code> par colonne, puis par période ou par groupe : les trous sont-ils concentrés ?
🔍
Cherchez le mécanisme
Comparez les lignes complètes et incomplètes sur les autres variables : si elles diffèrent, ce n'est pas du hasard.
🚩
Ajoutez un indicateur
Une colonne « valeur manquante » conserve l'information, que vous supprimiez ou imputiez.
🧭
Imputez dans le bon périmètre
Moyenne par groupe (par site, par mois) plutôt que moyenne globale, et jamais avant le découpage train/test.
Python · valeurs_manquantes.py
import pandas as pd

df = pd.read_csv("releves.csv")

# 1. compter et localiser les trous
print(df.isna().mean())
print(df.groupby("site")["kwh"].apply(lambda s: s.isna().mean()))

# 2. garder l'information avant d'agir
df["kwh_manquant"] = df["kwh"].isna()

# 3. imputer par groupe (jamais avant le découpage train/test)
df["kwh"] = df["kwh"].fillna(df.groupby("site")["kwh"].transform("median"))
Test rapide

Vérifiez votre compréhension.

Un compteur ne transmet pas les valeurs au-dessus de son seuil de saturation. Vous supprimez les lignes vides et calculez la moyenne. Que se passe-t-il ?

Ce qu'il faut retenir

Épisode suivant

Doublons et clés : ce que drop_duplicates supprime vraiment

Supprimer les doublons exacts en laisse passer, et supprimer sur un seul champ en détruit de vrais. Comparez trois façons de dédoublonner.

ACCÈS COMPLET

Cet épisode est gratuit. Les 282 autres t'attendent.

Statistiques, finance quantitative, machine learning, deep learning, LLM, agents IA, MLOps : 321 épisodes avec des simulateurs à manipuler, pas des vidéos.

99 € (+ TVA selon le pays) · accès à vie · remboursement possible sous 7 jours
Débloquer les 282 épisodes · 99 € J'ai déjà une clé de licence
FULL ACCESS

This episode is free. The other 282 are waiting for you.

Statistics, quantitative finance, machine learning, deep learning, LLMs, AI agents, MLOps: 321 interactive episodes with simulators to play with, not videos.

€99 (+ VAT depending on country) · lifetime access · 7-day refund
Unlock the 282 episodes · €99 I already have a license key