Como Verificar se o NaN Existe em Pandas DataFrame

  1. pandas.DataFrame.isull() Método
  2. pandas.DataFrame.isna() Método

NaN significa Not a Number que representa valores ausentes em Pandas. Para detectar valores NaN em Python Pandas, podemos utilizar métodos isnull() eisna() 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'],
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.

Artigo relacionado - Pandas NaN

  • Pandas Remover Linhas com NaN