Contare le occorrenze NaN in una colonna in Pandas Dataframe

Asad Riaz 30 gennaio 2023
  1. Metodo isna() per contare NaN in una o più colonne
  2. Sottrai il conteggio delle occorrenze non-NaN dalla lunghezza totale per contare le occorrenze NaN
  3. Metodo df.isnull().sum() per contare le occorrenze NaN
  4. Conta le occorrenze di NaN nell’intero Pandas DataFrame
Contare le occorrenze NaN in una colonna in Pandas Dataframe

Introdurremo i metodi per contare le occorrenze NaN in una colonna nel DataFrame di Pandas. Abbiamo molte soluzioni incluso il metodo isna() per una o più colonne, sottraendo la lunghezza totale dal conteggio delle occorrenze NaN, usando il metodo value_counts e usando df.isnull().sum() metodo.

Introdurremo anche il metodo per calcolare il numero totale di occorrenze NaN nell’intero DataFrame di Pandas.

Metodo isna() per contare NaN in una o più colonne

Possiamo usare il metodo insna() (versioni pandas> 0.21.0) e poi sommare per contare le occorrenze NaN. Per una colonna faremo come segue:

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

Produzione:

2

Per più colonne funziona anche:

import pandas as pd

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

Produzione:

a    1
b    2
dtype: int64

Sottrai il conteggio delle occorrenze non-NaN dalla lunghezza totale per contare le occorrenze NaN

Possiamo ottenere il numero di occorrenze NaN in ciascuna colonna sottraendo il conteggio delle occorrenze non-Nan dalla lunghezza di 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())

Produzione:

     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

Metodo df.isnull().sum() per contare le occorrenze NaN

Possiamo ottenere il numero di occorrenze NaN in ogni colonna utilizzando il metodo df.isnull().sum(). Se passiamo l’axis=0 all’interno del metodo sum, darà il numero di occorrenze NaN in ogni colonna. Se abbiamo bisogno di occorrenze NaN in ogni riga, imposta axis=1.

Codici di esempio:

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

Produzione:

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

Conta le occorrenze di NaN nell’intero Pandas DataFrame

Per ottenere il numero totale di tutte le occorrenze NaN nel DataFrame, concateniamo due metodi .sum() insieme:

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

Produzione:

NaN occurrences in DataFrame:
6

Articolo correlato - Pandas DataFrame