我有三个数据帧df1,df2和df3。我将这些组合成一个数据帧df。现在我想找到数据框中每个日期的最小值,5百分位数,25百分位数,中位数,90百分位数和最大值并绘制它(每个日期的折线图),其中X轴具有百分位数,Y轴具有值。 / p>
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
答案 0 :(得分:3)
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()