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() 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'],
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

  • Coluna Pandas fillna
  • Como substituir todos os valores de NaN por zeros em uma coluna de dados de PandasFrame