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
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn