Cómo contar las ocurrencias de NaN en una columna en Pandas Dataframe

Asad Riaz 30 enero 2023
  1. isna() método para contar NaN en una o varias columnas
  2. Restar el conteo de non-NaN de la longitud total para contar las ocurrencias de NaN
  3. df.isull().sum() método para contar las ocurrencias NaN
  4. Cuenta las ocurrencias NaN en el DataFrame completo de Pandas
Cómo contar las ocurrencias de NaN en una columna en Pandas Dataframe

Introduciremos los métodos para contar las ocurrencias de NaN en una columna del Pandas DataFrame. Tenemos muchas soluciones, incluyendo el método isna() para una o varias columnas, restando la longitud total del recuento de las ocurrencias NaN, usando el método value_counts y usando el método df.isull().sum().

También introduciremos el método para calcular el número total de ocurrencias NaN en todo el Pandas DataFrame.

isna() método para contar NaN en una o varias columnas

Podemos usar el método insna() (versiones de pandas > 0.21.0) y luego sumar para contar las ocurrencias NaN. Para una columna haremos lo siguiente:

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

Producción :

2

Para varias columnas, también funciona:

import pandas as pd

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

Producción :

a    1
b    2
dtype: int64

Restar el conteo de non-NaN de la longitud total para contar las ocurrencias de NaN

Podemos obtener el número de ocurrencias de NaN en cada columna restando el número de ocurrencias de non-Nan de la longitud del 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())

Producción :

     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 las ocurrencias NaN

Podemos obtener el número de ocurrencias de NaN en cada columna usando el método df.isull().sum(). Si pasamos el axis=0 dentro del método sum, nos dará el número de ocurrencias NaN en cada columna. Si necesitamos que aparezcan NaN en cada fila, ponemos axis=1.

Considera el siguiente código:

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

Producción :

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

Cuenta las ocurrencias NaN en el DataFrame completo de Pandas

Para obtener el número total de todas las ocurrencias de NaN en el DataFrame, encadenamos dos métodos .sum():

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

Producción :

NaN occurrences in DataFrame:
6

Artículo relacionado - Pandas DataFrame