Como contar as ocorrências de NaN em uma coluna em Pandas Dataframe

Asad Riaz 30 janeiro 2023
  1. Método isna() para contar NaN em uma ou múltiplas colunas
  2. Subtrair a contagem de ocorrências não-NaN do comprimento total para a contagem de ocorrências NaN
  3. df.isull().sum() Método para contar NaN Ocorrências
  4. Contar NaN Ocorrências nos Pandas inteiros DataFrame
Como contar as ocorrências de NaN em uma coluna em Pandas Dataframe

Introduziremos os métodos para contar as ocorrências NaN em uma coluna no Pandas DataFrame. Temos muitas soluções, incluindo o método isna() para uma ou várias colunas, subtraindo o comprimento total da contagem de ocorrências NaN, utilizando o método value_counts e utilizando o método df.isull().sum().

Também vamos introduzir o método para calcular o número total de ocorrências de NaN em todo o Pandas DataFrame.

Método isna() para contar NaN em uma ou múltiplas colunas

Podemos utilizar o método insna() (versões pandas > 0.21.0) e depois somar para contar as ocorrências NaN. Para uma coluna, faremos o seguinte:

import pandas as pd

s = pd.Series([1, 2, 3, np.nan, np.nan])
s.isna().sum()
# or s.isnull().sum() for older pandas versions

Resultado:

2

Para várias colunas, também funciona:

import pandas as pd

df = pd.DataFrame({"a": [1, 2, np.nan], "b": [np.nan, 1, np.nan]})
df.isna().sum()

Resultado:

a    1
b    2
dtype: int64

Subtrair a contagem de ocorrências não-NaN do comprimento total para a contagem de ocorrências NaN

Podemos obter o número de ocorrências NaN em cada coluna subtraindo a contagem de ocorrências non-Nan do comprimento do DataFrame:

import pandas as pd

df = pd.DataFrame(
    [(1, 2, None), (None, 4, None), (5, None, 7), (5, None, None)],
    columns=["a", "b", "d"],
    index=["A", "B", "C", "D"],
)
print(df)
print(len(df) - df.count())

Resultado:

     a    b    d
A  1.0  2.0  NaN
B  NaN  4.0  NaN
C  5.0  NaN  7.0
D  5.0  NaN  NaN
a    1
b    2
d    3
dtype: int64

df.isull().sum() Método para contar NaN Ocorrências

Podemos obter o número de ocorrências NaN em cada coluna utilizando o método df.isull().sum(). Se passarmos o axis=0 dentro do método sum, ele nos dará o número de ocorrências NaN em cada coluna. Se precisarmos de NaN ocorrências em cada linha, defina axis=1.

Códigos de exemplo:

import pandas as pd

df = pd.DataFrame(
    [(1, 2, None), (None, 4, None), (5, None, 7), (5, None, None)],
    columns=["a", "b", "d"],
    index=["A", "B", "C", "D"],
)

print("NaN occurrences in Columns:")
print(df.isnull().sum(axis=0))
print("NaN occurrences in Rows:")
print(df.isnull().sum(axis=1))

Resultado:

NaN occurrences in Columns:
a    1
b    2
d    3
dtype: int64
NaN occurrences in Rows:
A    1
B    2
C    1
D    2
dtype: int64

Contar NaN Ocorrências nos Pandas inteiros DataFrame

Para obter o número total de todas as ocorrências NaN no DataFrame, nós encadeamos dois métodos .sum() juntos:

import pandas as pd

df = pd.DataFrame(
    [(1, 2, None), (None, 4, None), (5, None, 7), (5, None, None)],
    columns=["a", "b", "d"],
    index=["A", "B", "C", "D"],
)

print("NaN occurrences in DataFrame:")
print(df.isnull().sum().sum())

Resultado:

NaN occurrences in DataFrame:
6

Artigo relacionado - Pandas DataFrame