【发布时间】:2020-05-29 14:28:16
【问题描述】:
我有 3 组测量值,来自对具有不同参数的应用程序进行基准测试。每个测试的运行时间相同,但时间戳不同。我想绘制相互重叠的结果。
结果存储在 csv 文件中,格式如下:timestamp,duration。 我在 pandas 数据框中读取结果,将时间戳转换为日期时间并进行聚合以计算我想要显示的 p90rt(下面的代码)
df["timestamp"] = pd.to_datetime(df["timestamp"], unit='ms')
df.set_index("timestamp", inplace=True)
gdf = df.groupby(pd.Grouper(freq=freq)).agg({"duration": q90})
我为我的 3 个数据集执行此操作,然后使用 matplotlib 绘制它们:
ax = gdf_n.plot()
ax = gdf_r.plot(ax=ax)
gdf_p.plot(ax=ax)
plt.axhline(y=3500, color='r', linestyle='-')
但是,由于它们是在不同时间完成的,因此它们的绘制相距甚远。我希望它们重叠(它们都跨越相同的时间 - 4分钟)。我正在寻找某种方法来规范化日期时间索引,以便 3 个图重叠。
df.head()
timestamp duration respCode
0 1589464106981 397 200
1 1589464107015 363 200
2 1589464107046 371 200
3 1589464107123 365 200
4 1589464107024 467 200
【问题讨论】:
-
您可以将它们全部设置为具有相同的索引或将它们组合到一个数据帧中。
-
这是我想要但还没有找到的;基本上,分组后,将索引从日期时间转换为每个数据集的列表 0、1、2 等
-
请问您能发布您的数据吗?或者只显示 df.head()
-
在问题中编辑以显示头部(第三列无关)
-
可能最简单的方法是减去时间差,这样它们都同时开始,请参阅此 Q/A; stackoverflow.com/questions/31929538/…
标签: python pandas matplotlib