807 Stimmen

Wie zähle ich die NaN-Werte in einer Spalte im Pandas DataFrame?

Ich möchte die Anzahl der NaN-Werte in jeder Spalte meiner Daten finden.

1124voto

joris Punkte 122243

Verwenden Sie die isna() Methode (oder das Alias isnull(), das auch mit älteren pandas Versionen < 0.21.0 kompatibel ist) und summiere dann die NaN-Werte. Für eine Spalte:

>>> s = pd.Series([1,2,3, np.nan, np.nan])

>>> s.isna().sum()   # oder s.isnull().sum() für ältere pandas Versionen
2

Für mehrere Spalten funktioniert das auch:

>>> df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})

>>> df.isna().sum()
a    1
b    2
dtype: int64

171voto

rAmAnA Punkte 1981

Angenommen, df ist ein pandas DataFrame.

Dann,

df.isnull().sum(axis = 0)

Dies gibt die Anzahl der NaN-Werte in jeder Spalte zurück.

Wenn Sie NaN-Werte in jeder Zeile benötigen,

df.isnull().sum(axis = 1)

132voto

elyase Punkte 36724

Sie könnten die Gesamtlänge von der Anzahl der Nicht-NaN-Werte subtrahieren:

count_nan = len(df) - df.count()

Sie sollten es mit Ihren Daten testen. Bei kleinen Serien wurde im Vergleich zur isnull-Lösung eine 3-fache Geschwindigkeitssteigerung erzielt.

74voto

Nikos Tavoularis Punkte 2655

Auf Basis der am meisten gewählten Antwort können wir leicht eine Funktion definieren, die uns ein DataFrame gibt, um die fehlenden Werte und den prozentualen Anteil der fehlenden Werte in jeder Spalte zu überprüfen:

def missing_values_table(df):
    mis_val = df.isnull().sum()
    mis_val_percent = 100 * df.isnull().sum() / len(df)
    mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1)
    mis_val_table_ren_columns = mis_val_table.rename(
    columns = {0 : 'Fehlende Werte', 1 : '% der Gesamtwerte'})
    mis_val_table_ren_columns = mis_val_table_ren_columns[
        mis_val_table_ren_columns.iloc[:,1] != 0].sort_values(
    '% der Gesamtwerte', ascending=False).round(1)
    print ("Ihr ausgewähltes DataFrame hat " + str(df.shape[1]) + " Spalten.\n"      
        "Es gibt " + str(mis_val_table_ren_columns.shape[0]) +
            " Spalten, die fehlende Werte enthalten.")
    return mis_val_table_ren_columns

44voto

K.-Michael Aye Punkte 5195

Seit pandas 0.14.1 wurde mein Vorschlag hier zur Implementierung eines Schlüsselwortarguments in der value_counts-Methode umgesetzt:

import pandas as pd
df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
for col in df:
    print df[col].value_counts(dropna=False)

2     1
 1     1
NaN    1
dtype: int64
NaN    2
 1     1
dtype: int64

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X