【发布时间】:2016-05-05 17:57:50
【问题描述】:
我有一个包含四列的 csv 文件:日期、批发商、产品和销售。我正在寻找每个产品和批发商组合在每个日期最近 52 周的平均销售额。这意味着过去 52 周内在时间“C”时批发商“B”处产品“A”的平均先前销售额是多少。
例如,我们知道批发商“B”的产品“A”在 1 月、4 月、5 月、8 月的销售额分别为 100、200、300、400。假设我们在 1 月之前没有任何记录。因此,批发商 'B' 之前在 4 月销售产品 'A' 的平均值等于 100/1,5 月等于 (200+100)/2 和八月是 (300+200+100)/3。
下表显示了我的数据:
date wholesaler product sales
12/31/2012 53929 UPE54 4
12/31/2012 13131 UPE55 1
2/23/2013 13131 UPE55 1156
4/24/2013 13131 UPE55 1
12/1/2013 83389 UPE54 9
12/17/2013 83389 UPE54 1
12/18/2013 52237 UPE54 9
12/19/2013 53929 UME24 1
12/31/2013 82204 UPE55 9
12/31/2013 11209 UME24 4
12/31/2013 52237 UPE54 1
现在我正在使用:
df = pd.read_csv('Sample.csv',index_col='date')
expd_gb = df.reset_index().groupby(['wholesaler', 'product'])['sales'].apply(pd.Series.expanding)
idx = df.reset_index().groupby(['wholesaler', 'product', 'date'])['sales'].count().index
cnct = pd.concat([expd_gb.iloc[n].mean().shift(1) for n in range(len(expd_gb))])
cnct.index = idx
这给出了每个产品-批发商组合的先前销售额的总平均值(不是过去 52 周)。结果是:
wholesaler product date
11209 UME24 12/31/2013 NaN
13131 UPE55 12/31/2012 NaN
2/23/2013 1.0
4/24/2013 578.5
52237 UPE54 12/18/2013 NaN
12/31/2013 9.0
53929 UME24 12/19/2013 NaN
UPE54 12/31/2012 NaN
82204 UPE55 12/31/2013 NaN
83389 UPE54 12/1/2013 NaN
12/17/2013 9.0
随着时间的推移,销售记录的迭代正在增加。我只需要找出过去 52 周的平均销售额是多少。这意味着在某个日期,例如 2015 年 11 月 6 日,过去 52 周某个批发商的产品平均销售额是多少。感谢一百万您的帮助!
【问题讨论】: