Une journée à 99,9 degrés
Nettoyer des données, c'est repérer les erreurs d'un fichier et les corriger avant de calculer quoi que ce soit. Un résultat calculé sur des données sales est faux, même si le calcul est juste.
Un loueur de vélos garde un fichier de 365 jours. Un jour, la température est de 99,9 degrés. La moyenne de l'année monte, et la conclusion du rapport est fausse sans que personne le voie.
À la fin de cette leçon
Remarque
Je peux repérer et corriger les erreurs d'un fichier de données.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Donnée manquante | une case vide : rien n'a été noté | NaN |
| Doublon | une ligne qui apparaît deux fois | |
| Valeur aberrante | une valeur impossible ou très éloignée des autres | 99.9 |
| Nettoyage | corriger ou écarter les erreurs d'un fichier | |
| Médiane | la valeur du milieu quand on range les nombres |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Avant de commencer
Remarque
Appuie sur Start the lab. Le lab est un JupyterLab rien qu'à toi, et il met une minute à démarrer. Le dossier de travail contient hires.csv. Il a une ligne par jour de 2025 : la météo, la température, la pluie et le nombre de vélos loués (hires). Ton terminal lance de petits scripts du dossier steps.
Lis les premières lignes du fichier
docker exec jupyter head -3 hires.csvAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Cinq fautes reviennent dans presque tous les fichiers
Un fichier réel a presque toujours des fautes. La première chose à faire est de les chercher.
Des cases manquent. Une même ligne est présente deux fois. Une valeur est impossible, comme 99,9 degrés à Lille. Un nombre est écrit comme du texte. Un mot s'écrit de plusieurs façons.
Exemple : cinq fautes d'un fichier de locations
| Faute | Ce qu'on voit dans le fichier | Effet sur un calcul |
|---|---|---|
| Donnée manquante | Une température vide, cinq fois | La moyenne ignore ces jours |
| Doublon | Deux jours écrits deux fois | Ces jours comptent double |
| Valeur aberrante | Une température de 99,9 | La moyenne monte à tort |
| Nombre écrit en texte | « unknown » ou -5 dans les locations | Le total est faux ou refusé |
| Écritures différentes | sunny, SUNNY et « Sunny » avec un espace | Un groupe est coupé en trois |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Cherche les fautes d'une copie abîmée
docker exec jupyter python3 steps/messy.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Supprimer, remplacer ou garder une valeur
Un doublon se supprime : on garde une seule ligne. Une écriture différente se remplace : on enlève les espaces et on passe tout en minuscules.
Une valeur impossible devient une donnée manquante. Une donnée manquante se remplace par une valeur raisonnable, ou la ligne s'écarte. Note toujours ce que tu as fait, pour pouvoir l'expliquer.
Nettoie la copie abîmée étape par étape
docker exec jupyter python3 steps/clean.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Exemple : ce que change chaque étape
| Étape | Lignes restantes | Températures manquantes |
|---|---|---|
| Fichier abîmé | 367 | 5 |
| Doublons retirés | 365 | 5 |
| Locations impossibles écartées | 363 | 5 |
| 99,9 devenu manquant | 363 | 6 |
| Manquantes remplies par la médiane | 363 | 0 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
La médiane résiste aux valeurs aberrantes
Pour remplir une case manquante, on prend souvent la moyenne ou la médiane des autres jours. La médiane est la valeur du milieu quand on range les nombres.
Une valeur aberrante tire la moyenne vers le haut. Elle ne bouge presque pas la médiane. Pour remplir des cases, la médiane est donc plus sûre.
Une erreur fréquente
Attention
Beaucoup remplissent toutes les cases manquantes par 0. Mais 0 degré est une vraie température : les moyennes baissent à tort. Remplis par la médiane des autres jours, ou laisse la case manquante et écarte la ligne du calcul.
À toi : l'effet d'une erreur sur la moyenne
# Cinq températures relevées. Une valeur est une erreur.
temperatures = [12.0, 11.5, 99.5, 10.5, 12.5]
total = 0
for t in temperatures:
total = total + t
print("moyenne avec l'erreur :", total / len(temperatures))
# Retire 99.5 de la liste et relance : la moyenne baisse beaucoup.
Pour aller plus loin : les seuils
Le seuil de 45 degrés a été choisi à la main. Pour un fichier de pluie en millimètres, quel seuil prendrais-tu ?
Ouvre hires.csv dans JupyterLab et cherche à l'œil le plus grand nombre de locations. Est-ce une erreur, ou un jour vraiment très chargé ? Comment le saurais-tu ?