Zählen Sie die Anzahl der Nicht-NaN-Einträge in jeder Spalte des Datenrahmens


74

Ich habe einen wirklich großen DataFrame und habe mich gefragt, ob es einen kurzen Weg (ein oder zwei Zeilen) gibt, um die Anzahl der Nicht-NaN-Einträge in einem DataFrame zu ermitteln. Ich möchte diese Spalte nicht einzeln ausführen, da ich fast 1000 Spalten habe.

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

    a   b   d
A   1   2 NaN
B NaN   4 NaN
C   5 NaN   7
D   5 NaN NaN

Ausgabe:

a: 3
b: 2
d: 1

1
df1 [df1.notnull ()]. ​​count () dies scheint funktioniert zu haben
cryp

3
Die zusätzliche Indizierung mit df1.notnull()ist nicht erforderlich, da countNullwerte ohnehin ignoriert werden.
Alex Riley

1
Im Gegensatz dazu series.value_counts(..., dropna=False)gibt es keine Option df.count(), um NA-Zählungen direkt zu erhalten.
smci

Antworten:


133

Die count()Methode gibt die Anzahl der Nichtwerte NaNin jeder Spalte zurück:

>>> df1.count()
a    3
b    2
d    1
dtype: int64

count(axis=1)Gibt NaNin ähnlicher Weise die Anzahl der Nichtwerte in jeder Zeile zurück.


0

Wenn Sie die Gesamtzählwerte summieren möchten, die nicht NAN sind, können Sie dies tun.

np.sum(df.count())
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.