我有一个数据集,其结构是:日期利润如何在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