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'],
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 is a backend software engineer at Matrice.ai.
LinkedInArtigo relacionado - Pandas NaN
- Como substituir todos os valores de NaN por zeros em uma coluna de dados de PandasFrame
- Coluna Pandas fillna
- Pandas Remover Linhas com NaN