Como Verificar se o NaN Existe em Pandas DataFrame

Suraj Joshi 30 janeiro 2023
  1. pandas.DataFrame.isull() Método
  2. pandas.DataFrame.isna() Método
Como Verificar se o NaN Existe em Pandas DataFrame

NaN significa Not a Number que representa valores ausentes em Pandas. Para detectar valores NaN em Python Pandas, podemos utilizar métodos isnull() e isna() para objetos DataFrame.

pandas.DataFrame.isull() Método

Podemos verificar os valores NaN em DataFrame utilizando o método pandas.DataFrame.isull(). O método retorna DataFrame de valores bool cujos elementos são Verdadeiros se os elementos correspondentes em DataFrame a serem verificados tiverem valor NaN, e os elementos são Falsos de outra forma.

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)

Resultado:

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

Aqui, os valores False na saída representam as entradas no DataFrame df não são NaN e os valores True representam as entradas NaN no DataFrame df.

Se quisermos saber se há algum valor NaN no DataFrame, podemos utilizar o método isnull().values.any() que retorna True se houver algum valor NaN no DataFrame e retorna False se não houver sequer uma única entrada NaN no 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)

Resultado:

True

df.isull().values retorna a representação NumPy do DataFrame. numpy.any() retorna True se qualquer um dos elementos for avaliado como True.

Portanto, df.isull().values.any() é True se algum elemento NaN existir no dataframe.

df.isull().any().any() para verificar se existe algum NaN

df.any() devolve se algum dos elementos é Verdadeiro. Ele retorna um pd.Series quando o df é um quadro de dados, e um valor booleano quando o df é 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)

Resultado:

True

Dois métodos em cascata any() depois de isnull() no exemplo acima retorna True se algum elemento é NaN no dataframe.

isnull().sum().sum() para verificar se algum elemento NaN existe

Se desejarmos contar o número total de valores NaN no particular DataFrame, df.isull().sum().sum() o método é a solução certa. O método retorna o número total de valores NaN em todo o 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)

Resultado:

4

Se o resultado for maior que 0, isso significa que NaN existe no DataFrame.

pandas.DataFrame.isna() Método

O método pandas.DataFrame.isna() é similar ao
pandas.DataFrame.isull(). Não há nenhuma diferença entre o funcionamento de dois métodos. Eles diferem apenas no nome.

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))

Resultado:

   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

Aqui o método df.isna() retorna DataFrame cujas entradas contêm valores booleanos denotando a presença de valores NaN em df . Da mesma forma, df.isna().values.any(), df.isna().any().any() e df.isna().sum().sum() retorna a presença do valor NaN em todo o df e o número de entradas NaN no df.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Pandas NaN