2015-10-26 2 views
24

В чем разница между groupby("x").count и groupby("x").size в пандах?В чем разница между размером и количеством в пандах?

Имеет ли размер только исключить ноль?

+2

Документация говорит, что размер «возвращает количество элементов в NDFrame» и подсчитывает «возвратную серию с числом не-NA/нулевых наблюдений по запрашиваемой оси». Также работает с данными без плавающей запятой (обнаруживает NaN и None) « – Hamsternik

ответ

29

size включает NaN значения, count не:

In [46]: 
df = pd.DataFrame({'a':[0,0,1,2,2,2], 'b':[1,2,3,4,np.NaN,4], 'c':np.random.randn(6)}) 
df 

Out[46]: 
    a b   c 
0 0 1 1.067627 
1 0 2 0.554691 
2 1 3 0.458084 
3 2 4 0.426635 
4 2 NaN -2.238091 
5 2 4 1.256943 

In [48]: 
print(df.groupby(['a'])['b'].count()) 
print(df.groupby(['a'])['b'].size()) 

a 
0 2 
1 1 
2 2 
Name: b, dtype: int64 

a 
0 2 
1 1 
2 3 
dtype: int64 
3

Просто, чтобы добавить немного к @ Edchum отвечает, даже если данные не имеют значения NA, результат подсчета() более многословен, используя пример перед:

grouped = df.groupby('a') 
grouped.count() 
Out[197]: 
    b c 
a  
0 2 2 
1 1 1 
2 2 3 
grouped.size() 
Out[198]: 
a 
0 2 
1 1 
2 3 
dtype: int64 
+0

Кажется,« размер »- элегантный эквивалент' count' в пандах. –

1

Когда мы имеем дело с нормальными кадрами данных, то единственное различие будет включение значений NaN, означает количество не включает в себя значения NaN при подсчете строк.

Но если мы будем использовать эти функции с группой к тому времени, чтобы получить правильные результаты по count(), нам нужно связать любое числовое поле с группой, чтобы получить точное число групп, где для size() есть не требуется для такого типа ассоциации.

Смежные вопросы