Comment vérifier si NaN existe dans Pandas DataFrame

Suraj Joshi 30 janvier 2023
  1. Méthode pandas.DataFrame.isnull()
  2. Méthode pandas.DataFrame.isna()
Comment vérifier si NaN existe dans Pandas DataFrame

NaN signifie Not a Number qui représente les valeurs manquantes dans Pandas. Pour détecter les valeurs NaN dans Python Pandas, nous pouvons utiliser les méthodes isnull() et isna() pour les objets DataFrame.

Méthode pandas.DataFrame.isnull()

Nous pouvons vérifier les valeurs de NaN dans DataFrame en utilisant pandas.DataFrame.isnull(). La méthode retourne DataFrame de valeurs booléennes dont les éléments sont True si les éléments correspondants dans DataFrame à vérifier ont la valeur NaN, et les éléments sont False sinon.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

df_check = df.isnull()

print(df_check)

Production:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False

Ici, les valeurs False en sortie représentent les entrées dans DataFrame df ne sont pas NaN et les valeurs True représentent les entrées NaN dans DataFrame df.

Si nous voulons savoir s’il y a une valeur NaN dans le DataFrame, nous pouvons utiliser la méthode isnull().values.any() qui retourne True s’il y a une valeur NaN dans le DataFrame et retourne False s’il n’y a même pas une seule entrée NaN dans le DataFrame.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

check_for_nan = df.isnull().values.any()
print(check_for_nan)

Production:

True

df.isnull().values retourne la représentation NumPy de le DataFrame. numpy.any() retourne True si l’un des éléments est évalué comme étant True.

Par conséquent, df.isnull().values.any() est True si un NaN existe dans le DataFrame.

df.isnull().any().any() pour vérifier s’il existe un NaN

df.any() retourne si l’un des éléments est True. Il retourne un pd.Series lorsque df est une DataFrame et une valeur booléenne lorsque df est pd.Series.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

check_for_nan = df.isnull().any().any()

print(check_for_nan)

Production:

True

Deux méthodes any() en cascade après isnull() dans l’exemple ci-dessus retournent True si un élément est NaN dans le DataFrame.

isnull().sum().sum() pour vérifier s’il existe un NaN

Si nous voulons compter le nombre total de valeurs de NaN dans le DataFrame particulier, la méthode df.isnull().sum().sum() est la bonne solution. La méthode retourne le nombre total de valeurs NaN dans le DataFrame entier.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

total_nan_values = df.isnull().sum().sum()
print(total_nan_values)

Production:

4

Si le résultat est supérieur à 0, cela signifie que NaN existe dans le DataFrame.

Méthode pandas.DataFrame.isna()

pandas.DataFrame.isna() est similaire à la méthode
pandas.DataFrame.isnull(). Il n’y a aucune différence entre le fonctionnement de deux méthodes. Ils ne diffèrent que par leur nom.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Student": ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry"],
        "Height": [1.63, 1.5, np.nan, np.nan, 1.4],
        "Weight": [np.nan, 56, 73, np.nan, 44],
    }
)

df_check = df.isna()

check_for_any_nan = df.isna().values.any()
# Or
check_for_any_nan = df.isna().any().any()
total_nan_values = df.isna().sum().sum()
print(df_check)
print("NaN Presence:" + str(check_for_any_nan))
print("Total Number of NaN values:" + str(total_nan_values))

Production:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False
NaN Presence:True
Total Number of NaN values:4

Ici, la méthode df.isna() retourne DataFrame dont les entrées contiennent des valeurs booléennes dénotant la présence de valeurs NaN dans df. De même, df.isna().values.any(), df.isna().any().any() et df.isna().sum().sum() retourner la présence de Valeur NaN dans le df entier et nombre d’entrées NaN dans le df.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Article connexe - Pandas NaN