计算一周中每一天的平均销售份额

时间:2020-05-22 23:24:55

标签: python pandas dataframe

我有一个按时间顺序排列的销售DataFrame,我需要计算一周中每一天的平均销售份额。以下是我想要的示例:

  • df1:用于销售的时间序列数据框。
  • share_sales_week_of_day-想要的DataFrame。对于星期一,我已经计算了实际价值。这里的2842 =来自数据框的每周总销售量,18 =星期一的销售量。

代码:

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

您能解释一下如何计算整个数据的份额吗?...

1 个答案:

答案 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