使用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()
以上是关于使用matplotlib绘制百分位数的主要内容,如果未能解决你的问题,请参考以下文章
有没有其他方法可以在不使用 matplotlib 的情况下找到百分比并绘制组条形图?
100天精通Python(可视化篇)——第81天:matplotlib绘制不同种类炫酷饼图参数说明+代码实战(自定义百分比多个子图圆环嵌套饼图)
100天精通Python(可视化篇)——第80天:matplotlib绘制不同种类炫酷柱状图代码实战(簇状堆积横向百分比3D柱状图)