Aller au contenu
Data (pandas / numpy)

pandas — valeurs manquantes

Les valeurs manquantes (NaN, None, NaT) faussent comptages et moyennes si on les ignore : isna les repère, fillna les remplace, dropna les écarte. Décidez au cas par cas, colonne par colonne.

  • NaN
  • None
  • NaT
  • isna
  • fillna
  • dropna
  • to_numeric
  • manquant

Syntaxe

Modèle
df.isna().sum()                 # nombre de manquants par colonnedf["col"].fillna(valeur)        df.dropna(subset=["col"])pd.to_numeric(df["col"], errors="coerce")

Exemple

Exemple concret
import ioimport pandas as pdsource = io.StringIO("""eleve,note,classeAna,14,ABob,,BChloé,17,David,abs,B""")df = pd.read_csv(source)print(df["note"].dtype)                   # → object   (« abs » a empêché la lecture en nombres)df["note"] = pd.to_numeric(df["note"], errors="coerce")print(df.isna().sum().to_dict())          # → {'eleve': 0, 'note': 2, 'classe': 1}print(df["note"].mean())                  # → 15.5print(df["note"].fillna(0).mean())        # → 7.75df["classe"] = df["classe"].fillna("inconnue")print(len(df.dropna(subset=["note"])))    # → 2

À retenir

  1. Par défaut, sum, mean et count ignorent les valeurs manquantes : la moyenne ci-dessus porte sur 2 notes, pas sur 4. Annoncez toujours combien de valeurs ont été exclues.
  2. Piège : remplacer un manquant par 0 change le sens de la donnée, car un élève absent devient une très mauvaise note. Préférez exclure, remplacer par une valeur explicite (médiane du groupe) ou garder une colonne indicatrice.
  3. Piège : NaN n'est égal à rien, pas même à lui-même. df[df["note"] == float("nan")] est donc toujours vide ; utilisez isna() et notna().
  4. None devient NaN dans une colonne numérique et NaT dans une colonne de dates ; dans une colonne de texte, il reste None avec pandas 2 et devient NaN avec le type str de pandas 3 ; isna() le détecte dans tous les cas.
  5. errors="coerce" dans to_numeric ou to_datetime transforme les valeurs invalides en manquants : elles deviennent visibles au lieu de bloquer le calcul.

Voir aussi