我有一个pandas框架中的请求响应时间的数据
execution_time request_type response_time_ms URL Error
2 2023-10-12 08:52:16 Google 91.0 https://www.google.com NaN
3 2023-10-12 08:52:16 CNN 115.0 https://edition.cnn.com NaN
6 2023-10-12 08:52:27 Google 90.0 https://www.google.com NaN
7 2023-10-12 08:52:27 CNN 105.0 https://edition.cnn.com NaN
10 2023-10-12 08:52:37 Google 5111.0 https://www.google.com NaN
它包含请求的时间,request_type只是网站名称和响应时间。
我想实现的是一个条形图,组的中位数响应时间的网站(请求类型)和时间框架,说组每4小时在一起。这应该表明响应时间因白天而异。
我设法创造了情节,但着色是“关闭”。我的问题是,我希望不同的网站颜色不同。
到目前为止我所拥有的:
df_by_time = df.groupby(["request_type", pd.Grouper(key="execution_time", freq="4h")]).agg({"response_time_ms": ["median"]})
df_by_time.plot(kind='bar', figsize=(8, 6), title='Response Times', xlabel='Type', ylabel='Response time [ms]', rot=90)
这导致下面的图像:
我想:
- 将时间分组在一起,以便每个时间只出现一次,每个网站都有不同颜色的堆栈
- 或者至少在这个图中不同的网站用不同的颜色
- 去掉传说中的“没有,没有”
我怎么才能做到这一点?
1条答案
按热度按时间5vf7fwbs1#
如果我理解正确的话,你需要用
'median'
聚合,而不是['median']
来避免MultiIndex,那么你可以使用seaborn.barplot
:或者,使用
groupby.median
生成Series,使用unstack
使用pandas的plot.bar
:输出量:
每20秒聚合一次,向您显示多个时间组的行为: