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
weinen
quelle
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.

Alex Riley
quelle
0

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

np.sum(df.count())
Hemanta
quelle