Cómo verificar si NaN existe en Pandas DataFrame

Suraj Joshi 30 enero 2023
  1. Método pandas.DataFrame.isnull()
  2. Método pandas.DataFrame.isna()
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 avatar Suraj Joshi avatar

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

LinkedIn

Artículo relacionado - Pandas NaN