使用matplotlib绘制百分位数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用matplotlib绘制百分位数相关的知识,希望对你有一定的参考价值。

我有三个数据帧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
答案

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()

enter image description here

以上是关于使用matplotlib绘制百分位数的主要内容,如果未能解决你的问题,请参考以下文章

有没有其他方法可以在不使用 matplotlib 的情况下找到百分比并绘制组条形图?

python绘制带有负百分比的饼状图

100天精通Python(可视化篇)——第81天:matplotlib绘制不同种类炫酷饼图参数说明+代码实战(自定义百分比多个子图圆环嵌套饼图)

100天精通Python(可视化篇)——第80天:matplotlib绘制不同种类炫酷柱状图代码实战(簇状堆积横向百分比3D柱状图)

根据百分位数绘制直方图

创建使用百分比而不是计数的 matplotlib 或 seaborn 直方图?