Devmind.
Menu

Apprendre, à votre rythme

Tous les cursus sont accessibles sans compte.

Chapitre 11 / Pratique

CSV sales et valeurs manquantes

Diagnostiquer manquants et incohérences avant d'imputer.

◷ 16 minutesTravail sur votre machine

Énoncé

Sur data/colis_bruts.csv : comptez les manquants par colonne, repérez les zéros impossibles (poids 0), les unités mélangées et les doublons exacts. Décidez pour chaque anomalie : supprimer un doublon, conserver un manquant jusqu'au pipeline ou corriger une unité connue.

Contraintes

Aucune imputation avant le diagnostic écrit dans le carnet : pour chaque manquant, notez une hypothèse sur son mécanisme (MCAR/MAR/MNAR), son pourcentage et la règle envisagée. Le mécanisme réel n'est pas connu du simple CSV ; votre hypothèse reste à vérifier. Ne comparez pas les poids en grammes et kilogrammes avant conversion.

Indices

df.isna().sum().sort_values(), df.duplicated().sum(), df["unite_poids"].value_counts() et pd.to_numeric(df["poids_valeur"]).dropna(). Un manquant qui dépend de la cible n'est pas neutre.

Correction disponibleCherchez d’abord par vous-même.Voir la correction

Correction

import pandas as pd
df = pd.read_csv("data/colis_bruts.csv")
print(df.isna().sum().sort_values(ascending=False))
print("doublons exacts :", df.duplicated().sum())
print("identifiants distincts :", df["commande_id"].nunique())
print("unités :", df["unite_poids"].value_counts())
poids = pd.to_numeric(df["poids_valeur"]).dropna()
print("poids saisis <= 0 :", (poids <= 0).sum())

Ici, les poids absents sont conservés jusqu'au split. La médiane sera ajustée sur train uniquement, dans le pipeline (chapitres 13 et 15). Le nombre de manquants ne suffit pas à garantir une imputation sans biais ; vérifiez si leur fréquence change selon une caractéristique connue. L'atelier suivant formalise la conversion et le rapport de nettoyage.