首页 > 解决方案 > 计算一周中每一天的平均销售额份额

问题描述

我有一个销售时间序列数据框,我需要计算一周中每一天的平均销售份额。下面是我想要的一个例子:

代码:

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]})

你能解释一下我如何计算整个数据的份额....

标签: pythonpandasdataframe

解决方案


让我们做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

推荐阅读