2013-05-15 75 views
6

Luôn luôn có những thứ có vẻ dễ gây lỗi cho tôi. Tôi đang cố gắng để có được một số của các giá trị không null của một số biến trong một Dataframe nhóm theo tháng và năm. Vì vậy, tôi có thể làm điều này hoạt động tốtCách đếm số lượng chỉ mục hoặc giá trị Null trong nhóm dữ liệu Pandas

counts_by_month=df[variable1, variable2].groupby([lambda x: x.year,lambda x: x.month]).count() 

Nhưng tôi thực sự muốn biết có bao nhiêu giá trị trong mỗi nhóm là NaN. Vì vậy, tôi muốn đếm Nans trong mỗi biến quá để tôi có thể tính toán tỷ lệ phần trăm dữ liệu bị mất trong mỗi nhóm. Tôi không thể tìm thấy một chức năng để làm điều này. hoặc có thể tôi có thể đạt được cùng một kết quả bằng cách đếm tổng số mục trong nhóm. Sau đó, các NaN sẽ là Tổng số - 'Các giá trị không phải Null'

Tôi đã cố gắng tìm hiểu xem bằng cách nào đó tôi có thể đếm các giá trị chỉ mục hay không nhưng tôi không thể làm như vậy. Bất kỳ hỗ trợ về điều này được đánh giá cao. Best wishes Jason

Trả lời

6
In [279]: df 
Out[279]: 
    A   B   C   D   E 
a foo  NaN 1.115320 -0.528363 -0.046242 
b bar 0.991114 -1.978048 -1.204268 0.676268 
c bar 0.293008 -0.708600  NaN -0.388203 
d foo 0.408837 -0.012573 1.019361 1.774965 
e foo 0.127372  NaN  NaN  NaN 

In [280]: def count_missing(frame): 
    return (frame.shape[0] * frame.shape[1]) - frame.count().sum() 
    .....: 

In [281]: df.groupby('A').apply(count_missing) 
Out[281]: 
A 
bar 1 
foo 4 
dtype: int64 
+0

Tuyệt vời. Cảm ơn ví dụ! SHAPE đã cho tôi thông tin cần thiết để tính giá trị NaN. Thanks heaps – user1911866

4
df.isnull().sum() 

nhanh hơn, và không cần một chức năng tùy chỉnh :)

+3

'df.isnull(). Tổng (trục = 1)' là thích hợp hơn cho câu hỏi này. Nó đang đếm số lượng giá trị bị thiếu trong mỗi hàng. – steco

+0

Tôi đã sửa lỗi :) – GrimSqueaker

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