2015-12-30 16 views
5

Was ist der beste Weg, um (nicht eine Anzahl) Nan Werte in einem Pandas DataFrame zu erklären?Wie zählen Nan Werte in einem Pandas DataFrame?

der folgende Code:

import numpy as np 
import pandas as pd 
dfd = pd.DataFrame([1, np.nan, 3, 3, 3, np.nan], columns=['a']) 
dfv = dfd.a.value_counts().sort_index() 
print("nan: %d" % dfv[np.nan].sum()) 
print("1: %d" % dfv[1].sum()) 
print("3: %d" % dfv[3].sum()) 
print("total: %d" % dfv[:].sum()) 

Ausgänge:

nan: 0 
1: 1 
3: 3 
total: 4 

während des gewünschten Ausgang ist:

nan: 2 
1: 1 
3: 3 
total: 6 

I pandas 0.17 mit Python 3.5.0 mit Anaconda bin mit 2,4 .0.

Antwort

2

Sagen value_counts nicht NaN-Werte fallen durch dropna=False (hinzugefügt in 0.14.1) Einstellung:

dfv = dfd['a'].value_counts(dropna=False) 

Auf diese Weise können die fehlenden Werte in der Spalte gezählt werden:

3  3 
NaN 2 
1  1 
Name: a, dtype: int64 

Die Der Rest Ihres Codes sollte dann wie erwartet funktionieren (beachten Sie, dass es nicht notwendig ist, sum aufzurufen; nur print("nan: %d" % dfv[np.nan]) reicht aus).

+0

und nach dem Verfahren, das oben dfv.values.sum() verwendet Counts alle Werte, d.h. Dank. ;) – SpeedCoder5

+0

Kein Problem! Ja, das funktioniert. In der Tat könnten Sie einfach 'dfv.sum()' schreiben, um alle Werte zu zählen. Oder überprüfen Sie noch effizienter 'len (dfd)'. –

11

Um nur NULL-Werte zu zählen, Sie isnull() verwenden können:

in der Spalte
In [11]: 
dfd.isnull().sum() 

Out[11]: 
a 2 
dtype: int64 

Hier a der Spaltenname ist, und es gibt 2 Vorkommen des Nullwert.

Verwandte Themen