HOWTO · Python
Vérifier les valeurs NaN en Python
Apprenez à vérifier les valeurs NaN dans les scalaires, les listes, les tableaux NumPy et les données Pandas en Python, et à compter les valeurs que Pandas reconnaît comme manquantes.
Sur cette page
NaN signifie « Not a Number » (« pas un nombre ») et désigne une valeur spéciale à virgule flottante. Utilisez math.isnan() pour un nombre flottant isolé ou une liste de nombres flottants, numpy.isnan() pour les tableaux NumPy et pandas.isna() pour les données Pandas. Ces vérifications détectent NaN ou les valeurs manquantes définies par une bibliothèque ; elles ne vérifient pas la présence de NULL SQL dans une base de données.
Vérifier des nombres et des listes avec math.isnan()
En Python, math.isnan() renvoie True pour une valeur NaN de type flottant et False pour un nombre flottant fini ordinaire. Pour une liste de nombres flottants, appliquez la fonction à chaque élément avec une compréhension de liste. Cette fonction attend un nombre réel ; les chaînes et les objets quelconques ne sont pas des entrées numériques.
Exécutez cet exemple :
import math
value = 3.5
print(math.isnan(value))
False
Pour une liste, appliquez la même vérification à chaque valeur :
import math
values = [1.0, float("nan"), 4.5]
checks = [math.isnan(value) for value in values]
print(checks)
[False, True, False]
Le résultat scalaire est False, car 3.5 n’est pas NaN. Dans le résultat de la liste, le True du milieu indique la valeur NaN. Utilisez sum(checks) pour compter les entrées True, car Python traite les valeurs booléennes comme des entiers.
Vérifier des tableaux NumPy avec numpy.isnan()
numpy.isnan() vérifie les éléments d’un tableau un par un et renvoie un tableau booléen de même forme. Dans le code, l’alias courant np désigne NumPy ; np.isnan() est donc la même fonction que numpy.isnan(). Utilisez np.nan pour placer une valeur NaN dans un tableau.
import numpy as np
data = np.array([1.0, np.nan, 4.0])
print(np.isnan(data))
[False True False]
Chaque True marque un élément qui est NaN, tandis que chaque False marque une valeur qui ne l’est pas. Pour un tableau multidimensionnel, le résultat booléen conserve la forme du tableau d’entrée ; utilisez ce masque pour sélectionner les éléments correspondants.
Repérer les valeurs manquantes dans Pandas avec pandas.isna()
Dans Pandas, isna() renvoie une Series ou un DataFrame booléen qui reprend l’index et la forme de l’entrée. La fonction de module pandas.isna() et la méthode correspondante d’un objet, comme df.isna(), repèrent les valeurs que Pandas considère comme manquantes. isnull() est une autre écriture équivalente dans Pandas. La détection des valeurs manquantes par Pandas s’applique aux données en mémoire ; elle ne consulte pas une base de données pour y rechercher des NULL SQL.
import pandas as pd
df = pd.DataFrame({"A": [1.0, float("nan")], "B": [float("nan"), 2.0]})
missing = pd.isna(df)
print(missing.sum())
A 1
B 1
dtype: int64
La somme du DataFrame booléen selon son axe de colonnes par défaut donne le nombre de valeurs manquantes dans chaque colonne. Ici, les colonnes A et B contiennent chacune une valeur que Pandas considère comme manquante.
Utiliser value != value pour vérifier NaN
Pour une valeur NaN ordinaire de type flottant, value != value renvoie True, car NaN n’est pas égal à lui-même. Cette solution est limitée et ne constitue pas la vérification générale à utiliser avec tous les types de données Python : les objets personnalisés peuvent définir leur propre comportement de comparaison et les valeurs de type tableau peuvent renvoyer des résultats élément par élément. Préférez math.isnan(), numpy.isnan() ou pandas.isna() lorsque le type d’entrée correspond à vos données.