我有一个按时间顺序排列的销售DataFrame,我需要计算一周中每一天的平均销售份额。以下是我想要的示例:
df1
:用于销售的时间序列数据框。share_sales_week_of_day
-想要的DataFrame。对于星期一,我已经计算了实际价值。这里的28
和42
=来自数据框的每周总销售量,1
和8
=星期一的销售量。代码:
df1 = pd.DataFrame(index = ['2011-01-31', '2011-02-01', '2011-02-01', '2011-02-02', '2011-02-03', '2011-02-04', '2011-02-05', '2011-02-06', '2011-02-07', '2011-02-08', '2011-02-09', '2011-02-10', '2011-02-11', '2011-02-12'],
data = [1,2,3,4,5,6,7, 8,8,8,3,4,5,6], columns = ['sales'])
share_sales_week_of_day = pd.DataFrame(data = {'d_1' : [0.5*(1.0/28 + 8.0/42)],'d_2' : [0], 'd_3' : [0], 'd_4' : [0], 'd_5' : [0], 'd_6' : [0], 'd_7' : [0]})
您能解释一下如何计算整个数据的份额吗?...
答案 0 :(得分:1)
让我们做pd.crosstab
df.index=pd.to_datetime(df.index)
s=pd.crosstab(index=df1.index.strftime('%U'),columns=df1.index.weekday,values=df1.sales.values,aggfunc='sum',normalize='index').mean()
col_0
0 0.113095
1 0.184524
2 0.107143
3 0.136905
4 0.166667
5 0.196429
6 0.095238
dtype: float64
s.to_frame().T
col_0 0 1 2 3 4 5 6
0 0.113095 0.184524 0.107143 0.136905 0.166667 0.196429 0.095238