我有如下数据:
timestamp, country_code, request_type, latency
2013-10-10-13:40:01, 1, get_account, 134
2013-10-10-13:40:63, 34, get_account, 256
2013-10-10-13:41:09, 230, modify_account, 589
2013-10-10-13:41:12, 230, get_account, 43
2013-10-10-13:53:12, 1, modify_account, 1003
时间戳是第二个分辨率而不是常规的。
如何在 pandas 查询中表达,例如:
- 10 分钟分辨率下每个 country_code 的请求数?
- request_type 在 1 分钟分辨率下的 99% 百分位延迟?
- 在 10 分钟分辨率下,每个 country_code 和 request_type 的请求数?
然后在同一张图上绘制所有组,每个组随着时间的推移都作为自己的线。
更新:
基于1的建议。我有:
bycc = df.groupby('country_code').reason.resample('10T', how='count')
bycc.plot() # BAD: uses (country_code, timestamp) on the x axis
bycc[1].plot() # properly graphs the time-series for country_code=1
但似乎无法找到简单的方法将每个 country_code 绘制为单独的行,在 x 轴上具有适当的时间戳,在 y 上具有值。我认为有 2 个问题(1)每个 country_code 的时间戳不同,它们需要在相同的开始/结束上对齐,(2)需要从多索引 TimeSeries 对象中找到正确的 API/方法对于多索引的每个第一个值,使用 1 条线绘制单个图。按我的方式工作...
更新 2
以下似乎可以做到:
i = 0
max = 3
pylab.rcParams['figure.figsize'] = (20.0, 10.0) # get bigger graph
for cc in bycc.index.levels[0]:
i = i + 1
if (i <= max):
cclabel = "cc=%d" % (cc)
bycc[cc].plot(legend=True, label=cclabel)
只打印最大值,因为它变得嘈杂。现在要弄清楚如何更好地显示具有大量时间序列的图。