Tôi có một khung dữ liệu gấu trúc với cột TIMESTAMP
, là loại dữ liệu datetime64. Xin lưu ý, ban đầu cột này không được đặt làm chỉ mục; chỉ số chỉ là số nguyên thông thường và một vài hàng đầu tiên trông giống như sau:Số lượng bản ghi hàng ngày trung bình trong một Khung dữ liệu Pandas
TIMESTAMP TYPE
0 2014-07-25 11:50:30.640 2
1 2014-07-25 11:50:46.160 3
2 2014-07-25 11:50:57.370 2
Có một số lượng kỷ lục tùy ý cho mỗi ngày và có thể có những ngày không có dữ liệu. Những gì tôi đang cố gắng đạt được là số lượng hồ sơ hàng ngày trung bình mỗi tháng rồi vẽ biểu đồ dạng thanh với các tháng trong trục x (tháng 4 năm 2014, tháng 5 năm 2014 ... v.v ...). Tôi quản lý để tính toán các giá trị sử dụng mã dưới đây
dfWIM.index = dfWIM.TIMESTAMP
for i in range(dfWIM.TIMESTAMP.dt.year.min(),dfWIM.TIMESTAMP.dt.year.max()+1):
for j in range(1,13):
print dfWIM[(dfWIM.TIMESTAMP.dt.year == i) & (dfWIM.TIMESTAMP.dt.month == j)].resample('D', how='count').TIMESTAMP.mean()
mang đến cho đầu ra sau đây:
nan
nan
3100.14285714
6746.7037037
9716.42857143
10318.5806452
9395.56666667
9883.64516129
8766.03225806
9297.78571429
10039.6774194
nan
nan
nan
này là ok vì nó là, và với một số công việc nhiều hơn, tôi có thể lập bản đồ kết quả để sửa chữa tên tháng, sau đó vẽ biểu đồ thanh. Tuy nhiên, tôi không chắc chắn nếu điều này là đúng/cách tốt nhất, và tôi nghi ngờ có thể có một cách dễ dàng hơn để có được kết quả bằng cách sử dụng Pandas.
Tôi rất vui khi biết suy nghĩ của bạn. Cảm ơn!
LƯU Ý: Nếu tôi không đặt cột TIMESTAMP làm chỉ mục, tôi nhận được lỗi "hoạt động giảm" có nghĩa là "không được phép cho loại lỗi này".
Tôi không thể tìm ra cách thực hiện bằng cách sử dụng 'groupby'. Hóa ra 'TimeGrouper' là thủ thuật. Cảm ơn rất nhiều! – marillion
định dạng dọc theo trục x cho cốt truyện thanh với chuỗi thời gian phức tạp hơn nhiều so với tôi nghĩ. Giải pháp là tại http://stackoverflow.com/questions/33642388/pandas-bar-plot-with-multiindex-dataframe nếu ai đó bị kẹt ở cùng một điểm. – marillion