2015-10-26 23 views
24

Đó là sự khác biệt giữa groupby("x").countgroupby("x").size trong gấu trúc?Sự khác nhau giữa kích thước và số lượng gấu trúc là gì?

Kích thước chỉ loại trừ không?

+2

Tài liệu cho biết, kích thước đó "trả về số phần tử trong NDFrame" và đếm "chuỗi trả về có số quan sát không phải NA/null trên trục được yêu cầu. Hoạt động với dữ liệu điểm không nổi" (phát hiện NaN và Không) " – Hamsternik

Trả lời

29

size bao gồm NaN giá trị, count không:

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

Chỉ cần thêm một chút để trả lời @ Edchum của, ngay cả khi dữ liệu không có giá trị NA, kết quả của count() là tiết hơn, sử dụng ví dụ trước:

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

Có vẻ như' size' là thanh lịch tương đương với 'count' trong gấu trúc. –

1

Khi chúng tôi xử lý các khung dữ liệu bình thường thì sự khác biệt sẽ là giá trị NAN, nghĩa là không tính giá trị NAN trong khi đếm hàng. Nhưng nếu chúng ta sử dụng các hàm này với nhóm vào lúc đó, để có được kết quả chính xác bằng count(), chúng ta phải kết hợp bất kỳ trường số nào với nhóm bằng cách lấy số nhóm chính xác cho kích thước() ở đó không cần loại liên kết này.

Các vấn đề liên quan