Как изобразить недельный статус на графике - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь выяснить, какие продажи происходят в течение нескольких недель месяца, а затем вывести его на график в виде графика.

Мой код, чтобы получить нужный кадр данных:

    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' : '₹'}
         }

Мой график:

enter image description here

Мой 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 и т. Д.

Есть ли лучший и эффективный способ добиться этого?

...