我正在(尝试)为三位产品经理和整个团队自动化一些当前手动维护的KPI图表(数据来自SQL server,然后进入Excel,然后进入PPT,然后进入显示监视器)。我可以将销售数据从SQL拉到Python,并且能够在matplotlib中创建必要的协调图表。这是在每周的基础上完成的,因此每个周期都是一个循环的星期一到星期六(星期天没有销售)
销售由产品经理和类别进行标记,因此有时随机销售会在没有标记的情况下出现。我的问题是使用groupby,我只得到销售的天数,而不是整个日期范围。因此,当我尝试创建绘图时,我得到了一个错误,因为序列的输入数量不尽相同
我已经厌倦了三天的独自思考,我终于放弃了
现在数据帧代码如下所示 df=pd.DataFrame(SQL_查询,列=['SO_日期','SALES','PARENT_CATEGORY','PIC']),当前周范围为2019年4月1日至2019年4月6日
我尝试了asfreq、reindex和以下多种变体:
[In] : df['SO_DATE'] = pd.to_datetime(df['SO_DATE'])
df.set_index('SO_DATE').groupby(['PIC','PARENT_CATEGORY'], sort = False)['SALES'].resample('D').asfreq().fillna(0).reset_index()
[Out] :
PIC PARENT_CATEGORY SO_DATE SALES
0 Curly Spam 2019-04-01 23209.47
1 Curly Eggs 2019-04-02 67969.84
2 Curly SpamSpam 2019-04-03 19924.44
3 Curly EggsEggs 2019-04-04 17005.59
4 Curly EggsSpam 2019-04-06 328.06
5 Moe Spam 2019-04-01 11750.58
6 Moe Eggs 2019-04-02 12187.02
7 Moe SpamSpam 2019-04-03 5003.66
8 Moe EggsEggs 2019-04-04 6026.33
9 Moe SpamEggs 2019-04-05 10344.57
10 Moe EggsSpam 2019-04-06 1816.41
11 Larry Spam 2019-04-01 11489.23
12 Larry SpamSpam 2019-04-03 7915.24
13 Larry EggsEggs 2019-04-04 5993.43
14 Larry SpamEggs 2019-04-06 332.98
[In]:df[df.PIC.isnull()].groupby(['SO_DATE','SALES']).sum().unstack(fill_value=0).stack()
[Out] :
PARENT_CATEGORY PIC
SO_DATE SALES
2019-04-02 332.5 0 0
851.5 0 0
2727.2 0 0
2019-04-03 332.5 0 0
851.5 0 0
2727.2 0 0
2019-04-05 332.5 0 0
851.5 0 0
2727.2 0 0
[In]: nopm = df[df.PIC.isnull()]
nopm.set_index('SO_DATE')['SALES'].resample('D').asfreq().fillna(0).reset_index()
[Out]:
SO_DATE SALES
0 2019-04-02 851.5
1 2019-04-03 2727.2
2 2019-04-04 0.0
3 2019-04-05 332.5
[In] :
pd.DataFrame(index = new_index,columns ={'Curly':df[df['PIC']=='Curly'].groupby('SO_DATE')['SALES'].sum()})
[Out] :
Curly
2019-04-01 NaN
2019-04-02 NaN
2019-04-03 NaN
2019-04-04 NaN
2019-04-05 NaN
2019-04-06 NaN
我想要的是
PIC PARENT_CATEGORY SO_DATE SALES
0 Curly Spam 2019-04-01 23209.47
1 Curly Eggs 2019-04-02 67969.84
2 Curly SpamSpam 2019-04-03 19924.44
3 Curly EggsEggs 2019-04-04 17005.59
4 Curly SpamEggs 2019-04-05 0.00
5 Curly EggsSpam 2019-04-06 328.06
6 Moe Spam 2019-04-01 11750.58
7 Moe Eggs 2019-04-02 12187.02
8 Moe SpamSpam 2019-04-03 5003.66
9 Moe EggsEggs 2019-04-04 6026.33
10 Moe SpamEggs 2019-04-05 10344.57
11 Moe EggsSpam 2019-04-06 1816.41
12 Larry Spam 2019-04-01 11489.23
13 Larry Eggs 2019-04-02 0.00
14 Larry SpamSpam 2019-04-03 7915.24
15 Larry EggsEggs 2019-04-04 5993.43
16 Larry SpamEggs 2019-04-05 0.00
17 Larry EggsSpam 2019-04-06 332.98
18 NaN Spam 2019-04-01 0.00
19 NaN Eggs 2019-04-02 851.0
20 NaN SpamSpam 2019-04-03 2727.2
21 NaN EggsEggs 2019-04-04 0.00
22 NaN SpamEggs 2019-04-05 332.5
23 Nan EggsSpam 2019-04-06 0.00
Or
when doing a groupby for any PIC (including the NULL!) get this--
SALES
2019-04-01 0.0
2019-04-02 851.0
2019-04-03 2727.2
2019-04-04 0.0
2019-04-05 332.5
2019-04-06 0.0
目前没有回答
相关问题 更多 >
编程相关推荐