【问题标题】:Plot percentiles using matplotlib使用 matplotlib 绘制百分位数
【发布时间】:2018-05-10 06:22:50
【问题描述】:

我有三个数据框 df1、df2 和 df3。我将这些组合成一个数据框 df。现在我想找到数据框中每个日期的最小值、5 个百分位、25 个百分位、中位数、90 个百分位和最大值,并绘制它(每个日期的折线图),其中 X 轴有百分位数,Y 轴有值。

df1
    date          value
0   2017-11-06    10.20
1   2017-11-06    40.20
2   2017-11-06    35.10
3   2017-11-06    90.45
4   2017-11-06    60.23

df2
    date          value
1   2017-11-07    110.20
2   2017-11-07    500.26
3   2017-11-07    200.16
4   2017-11-07    350.01
5   2017-11-07    89.20

df3
    date          value
1   2017-11-08    101.45 
2   2017-11-08    160.34
3   2017-11-08    41.54
4   2017-11-08    192.42
5   2017-11-08    111.12


df

    date          value
0   2017-11-06    10.20
1   2017-11-06    40.20
2   2017-11-06    35.10
3   2017-11-06    90.45
4   2017-11-06    60.23
5   2017-11-07    110.20
6   2017-11-07    500.26
7   2017-11-07    200.16
8   2017-11-07    350.01
9   2017-11-07    89.20
10  2017-11-08    101.45 
11  2017-11-08    160.34
12  2017-11-08    41.54
13  2017-11-08    192.42
14  2017-11-08    111.12

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    IIUC,使用groupby + agg/quantile -

    g = df.groupby('date')
    
    i = g['value'].quantile([0.05, 0.25, 0.5, 0.9]).unstack()
    j = g['value'].agg(['min', 'max'])
    
    pd.concat([i, j], 1)
    
                  0.05    0.25     0.5      0.9    min     max
    date                                                      
    2017-11-06  15.180   35.10   40.20   78.362  10.20   90.45
    2017-11-07  93.400  110.20  200.16  440.160  89.20  500.26
    2017-11-08  53.522  101.45  111.12  179.588  41.54  192.42
    

    对于情节,这应该足够了 -

    i.T.plot(subplots=True)
    plt.show()
    

    【讨论】:

    • 感谢您的帮助。我不想要子图,所以我删除了 subplots=True。如何控制 Y 轴上的刻度间距(值)?
    • @Sun 没问题。这就是我决定输入它以显示图表的方式。此外,我对 mplotlib 不太熟悉,但这可能会对您有所帮助:stackoverflow.com/a/12608937/4909087
    猜你喜欢
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 2020-05-28
    • 2013-02-10
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多