2015-12-30 11 views
5

Jaki jest najlepszy sposób uwzględnienia (nie liczby) wartości nan w pandach DataFrame?Jak zliczać nan w pandach DataFrame?

Następujący kod:

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

Wyjścia:

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

Gdy żądana jest:

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

ja pomocą pandy 0,17 Pythona 3.5.0 do 2.4 Anacondą .0.

Odpowiedz

2

Powiedz value_countsnie spadek wartości NaN ustawiając dropna=False (dodana w 0.14.1)

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

Pozwala to brakujących wartości w kolumnie należy zaliczyć również:

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

reszta kodu powinna działać zgodnie z oczekiwaniami (zwróć uwagę, że nie trzeba dzwonić pod numer sum, wystarczy tylko print("nan: %d" % dfv[np.nan])).

+0

i po użyciu powyższej metody dfv.values.sum() zlicza wszystkie wartości, tj Dzięki. ;) – SpeedCoder5

+0

Nie ma problemu! Tak, to działa. W rzeczywistości wystarczy napisać 'dfv.sum()', aby zliczyć wszystkie wartości. Lub jeszcze bardziej wydajnie, po prostu sprawdź 'len (dfd)'. –

11

Aby policzyć tylko wartości zerowe, można użyć isnull():

In [11]: 
dfd.isnull().sum() 

Out[11]: 
a 2 
dtype: int64 

Tutaj a jest nazwa kolumny, i są 2 wystąpień zerowej wartości w kolumnie.

Powiązane problemy