Я пытаюсь выяснить, какие продажи происходят в течение нескольких недель месяца, а затем вывести его на график в виде графика.
Мой код, чтобы получить нужный кадр данных:
basic_df = filterDataFrameByDate(df,start_date,end_date)
df = basic_df.groupby(['S2PName-Category',basic_df['S2BillDate'].dt.to_period(flag)], sort=False)['S2PGTotal'].agg([('totSale','sum'),('count','size')]).reset_index()
df.sort_values('S2BillDate',inplace=True)
print(df['S2BillDate'].unique())
df['S2BillDate'] = df['S2BillDate'].astype('str')
OP кода выше:
S2PName-Category S2BillDate totSale count
0 Beverages 2019-11-25/2019-12-01 2677.28 148
1 Food 2019-11-25/2019-12-01 31939.30 680
2 Snacks 2019-11-25/2019-12-01 1279.00 78
3 Others 2019-11-25/2019-12-01 179.79 27
4 OOB 2019-11-25/2019-12-01 390.00 8
5 IceCream 2019-11-25/2019-12-01 40.00 2
6 Juice 2019-11-25/2019-12-01 449.87 8
14 Check 2019-12-02/2019-12-08 325.10 10
13 Juice 2019-12-02/2019-12-08 7102.58 145
12 IceCream 2019-12-02/2019-12-08 2170.00 53
11 OOB 2019-12-02/2019-12-08 3110.18 144
8 Food 2019-12-02/2019-12-08 254935.49 5300
9 Snacks 2019-12-02/2019-12-08 15784.63 913
7 Beverages 2019-12-02/2019-12-08 27510.78 1565
10 Others 2019-12-02/2019-12-08 2795.31 400
20 Juice 2019-12-09/2019-12-15 4278.36 81
21 IceCream 2019-12-09/2019-12-15 410.02 11
19 OOB 2019-12-09/2019-12-15 3219.47 187
22 Check 2019-12-09/2019-12-15 75.00 3
17 Snacks 2019-12-09/2019-12-15 11235.07 713
16 Food 2019-12-09/2019-12-15 244378.59 5088
15 Beverages 2019-12-09/2019-12-15 24352.12 1380
18 Others 2019-12-09/2019-12-15 3688.58 596
23 Beverages 2019-12-16/2019-12-22 21902.22 1237
24 Juice 2019-12-16/2019-12-22 5262.35 99
25 Food 2019-12-16/2019-12-22 207282.41 4387
Мой код для построения их в виде линейного графика,
data = [go.Scatter(x = df_r[df_r['S2PName-Category']==category]['S2BillDate'],
y = df_r[df_r['S2PName-Category']==category]['totSale'],
mode = 'markers+lines',
name = category) for category in df_r['S2PName-Category'].unique()]
layout = {'title':'Category Trend',
'xaxis':{'title':'Time Frame' },
'yaxis':{'title':'Total Sales Amount','tickformat' : ',.2f' , 'tickprefix' : '₹'}
}
Мой график:
Мой DateColumn OP, когда я запустил df ['S2BillDate] .unique ():
<PeriodArray>
['2019-11-25/2019-12-01', '2019-12-02/2019-12-08', '2019-12-09/2019-12-15',
'2019-12-16/2019-12-22', '2019-12-23/2019-12-29', '2019-12-30/2020-01-05']
Length: 6, dtype: period[W-SUN]
Тики xaxis не в должном презентабельном формате, было бы неплохо иметь их например, 25 ноября 2011 года - 1 декабря 19 года; 2 / Dec / 19 - 8 / Dec / 19 и т. Д.
Есть ли лучший и эффективный способ добиться этого?