gpt4 book ai didi

python - pandas 按秒计算总和

转载 作者:行者123 更新时间:2023-12-01 01:39:05 27 4
gpt4 key购买 nike

我有以下数据结构(json)

[
{"uid":0,"success":true,"timestamp":10, ....someotherfields },
{"uid":1,"success":true,"timestamp":20, ....someotherfields },
.....
]

在测试场景中,固定间隔为 10、500 个元素 success=True 比 500 success=False

我需要绘制每秒单个图表总和的成功率和失败率首先,我有以下代码:

import json
import pandas as pd

with open("data.json") as f:
data = json.load(f)


df = pd.DataFrame(data)
df['timestamp'] = pd.to_datetime(df['timestamp'], unit="ms")
plot = df.groupby([df['timestamp'].dt.second]).sum().unstack().plot()

fig = plot.get_figure()

fig.savefig("data.png")

我认为应该绘制与 X 平行的线,每秒数据事件数(在我的情况下约为 100)

但我得到了跟随图片

[![在此处输入图像描述][1]][1]

  1. 我在分组阶段或绘图时错了?
  2. 如何将基于成功字段的图表拆分为 2 条单独的线?

最佳答案

这里发生了一些事情。首先,我相信你想在 python 中使用 python boolean True 而不是 javascript true ,后者将被读取为字符串,当你尝试分组和求和您的数据 此列将被删除,因为它无法求和。

其次,当您按时间戳对数据进行分组时,您不需要使用unstack,只需指定您想要绘制的列即可。

df.groupby([df['timestamp'].dt.second]).sum().plot(y='success')

enter image description here

绘制 True 和 False 值线稍微棘手一些。如果您知道计数始终等于 100,您只需从 100 中减去成功次数即可得出失败次数,但更安全的方法类似于原始帖子的做法:

创建一些示例数据:

df = pd.DataFrame({'timestamp': list(range(0, 10000, 10)), 
'uid': list(range(0, 1000))})
df['success'] = np.random.choice([True, False], 1000)

绘制数据:

df.groupby([df['timestamp'].dt.second, 'success']).size().unstack(fill_value=0).plot()

enter image description here

关于python - pandas 按秒计算总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52081387/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com