我有一個數據集,其結構是:日期利潤如何在python中實現星期數據的滾動聚合?
數據集的樣本是:
Date Profit
2013-06-21 14
2013-06-22 19
2013-06-23 11
2013-06-24 13
2013-06-25 6
2013-06-26 22
2013-06-27 22
2013-06-28 3
2013-06-29 5
2013-06-30 10
2013-07-01 17
2013-07-02 14
2013-07-03 9
2013-07-04 7
Sample input
是:
data = [('2013-06-21',14),
('2013-06-22',19),
('2013-06-23',11),
('2013-06-24',13),
('2013-06-25',6),
('2013-06-26',22),
('2013-06-27',22),
('2013-06-28',3),
('2013-06-29',5),
('2013-06-30',10),
('2013-07-01',17),
('2013-07-02',14),
('2013-07-03',9),
('2013-07-04',7)]
現在我想做一個rolling aggregation
並存儲聚合。通過滾動聚合,我的意思是說,對於第1周(2013-06-21至2013-06-27),我想添加之前日期的利潤並將其與當前日期一起存儲。因此,對於2013-06-21
,總和將僅爲14
,因爲它是一週中的第一天,但對於2013-06-22
,它應該是previous date (2013-06-21)
和current date (2013-06-22)
的總和,並且這應該與當前日期一起存儲。這將持續到週末,然後在下週再次重新開始,新的一週沒有以前的日期。因此,對於第一週的sample output
應該是這樣的:
Date Profit
2013-06-21 14
2013-06-22 33 #(14 + 19)
2013-06-23 44 #(33 + 11)
2013-06-24 57 #(44 + 13)
2013-06-25 63 #(57 + 6)
2013-06-26 85 #(63 + 22)
2013-06-27 107 #(85 + 22)
我想看看defaultdict
和這樣做:
def aggregate(data, key, value, func):
measures_dict = collections.defaultdict(list)
for k,v in zip(data[key], data[value]):
measures_dict[k].append(v)
return [(k,func(measures_dict[k])) for k in measures_dict.keys()]
,但我沒有得到結果,認爲defaultdict
不是正確的方式來做到這一點。我也看着pandas
,但我無法開始做到這一點。任何人都可以幫助我進行滾動聚合嗎?
它看起來像你希望我們爲你寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出和實際獲得的輸出(控制檯輸出,堆棧跟蹤,編譯器錯誤 - 無論是適用)。您提供的細節越多,您可能會收到的答案就越多。 – 2015-02-09 20:42:46
另外,什麼定義了一個星期;是星期一還是星期天是一週的開始? – 2015-02-09 20:43:04
這個數據的格式是什麼?它是否分類?日期已經解析成對象還是僅僅是字符串? – 2015-02-09 20:43:35