Cómo verificar si NaN existe en Pandas DataFrame
NaN
significa Not a Number
que representa los valores faltantes en Pandas. Para detectar valores de NaN en Python Pandas, podemos usar los métodos isnull()
e isna()
para los objetos DataFrame.
Método pandas.DataFrame.isnull()
Podemos verificar los valores de NaN
en DataFrame
usando pandas.DataFrame.isnull()
. El método devuelve DataFrame
de valores bool cuyos elementos son True si los elementos correspondientes en DataFrame a comprobar tienen valor NaN
, y los elementos son False de lo contrario.
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)
Producción :
Student Height Weight
0 False False True
1 False False False
2 False True False
3 False True True
4 False False False
Aquí, los valores False
en la salida representan las entradas en DataFrame df
no son NaN
y los valores True
representan entradas NaN
en DataFrame df
.
Si queremos saber si hay algún valor NaN
en el DataFrame, podemos usar el método isnull().values.any()
que devuelve True si hay algún valor NaN
en el DataFrame y devuelve False
si ni siquiera hay una sola entrada NaN
en el 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)
Producción :
True
df.isnull().values
devuelve la representación NumPy del DataFrame. numpy.any()
devuelve True
si alguno de los elementos se evalúa como True
.
Por lo tanto, df.isnull().values.any()
es True
si existe algún NaN
en el DataFrame.
df.isnull().any().any()
para verificar si existe alguna NaN
df.any()
devuelve si alguno de los elementos es True
. Devuelve un pd.Series
cuando df
es un DataFrame y un valor booleano cuando df
es 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)
Producción :
True
Dos métodos en cascada any()
después de isnull()
en el ejemplo anterior devuelve True
si algún elemento es NaN
en el DataFrame.
isnull().sum().sum()
para verificar si existe algún NaN
Si deseamos contar el número total de valores NaN
en el DataFrame
particular, el método df.isnull().sm().sum()
es la solución correcta. El método devuelve el número total de valores NaN
en todo el 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],
}
)
total_nan_values = df.isnull().sum().sum()
print(total_nan_values)
Producción :
4
Si el resultado es mayor que 0, significa que existe NaN
en el DataFrame.
Método pandas.DataFrame.isna()
pandas.DataFrame.isna()
es similar al método
pandas.DataFrame.isnull()
. No hay ninguna diferencia entre el funcionamiento de dos métodos. Difieren solo en nombre.
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))
Producción :
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
Aquí el método df.isna()
devuelve DataFrame cuyas entradas contienen valores booleanos que denotan la presencia de valores NaN
en df
. Del mismo modo, df.isna().values.any()
, df.isna().any().any()
y df.isna().sum().sum()
devuelven la presencia de Valor NaN
en todo el df
y número de entradas NaN
en el df
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn