python - 随着时间的推移可视化速度数据
问题描述
我有一些看起来像这样的简单数据(持续时间以秒为单位):
[
{
"date": "2021-05-22T20:09:17.758952+00:00",
"quantity": 300,
"duration": 10800.0
},
{
"date": "2021-05-22T20:09:17.758952+00:00",
"quantity": 400,
"duration": 5600.0
},
{
"date": "2021-04-22T20:09:17.758952+00:00",
"quantity": 1400,
"duration": 3600.0
},
{
"date": "2021-03-22T20:09:17.758952+00:00",
"quantity": 100,
"duration": 4300.0
}
]
我设法弄清楚如何随着时间的推移绘制数量图,如果需要,可以选择将它们重新采样为每月/每周/每周间隔:
from datetime import datetime
import matplotlib.pyplot as plt
import pandas as pd
# `data` is the json above as a Python dict
df = pd.DataFrame(
{"dt": datetime.fromisoformat(d["date"]), "chars": d["quantity"]} for d in data
)
df.set_index("dt", inplace=True)
df = df.resample("M").sum() # monthly
df = df.loc["2021-01-01":"2021-12-31"]
fig, ax = plt.subplots(figsize=(15, 5))
df.plot(kind="bar", ax=ax)
x_labels = df.index.strftime("%Y %b")
ax.set_xticklabels(x_labels)
plt.show()
但我不确定如何对平均速度(如每天或每周或每月的数量/持续时间)做同样的事情。我可以尝试使用 adhoc 函数来处理它,但我想知道这是否是一个优雅的解决方案。我也愿意改变数据的结构,如果它更容易的话。
解决方案
推荐阅读
- php - 在 Laravel 中删除旧帖子类别时将帖子移动到“未分类”类别
- bash - 为什么从 CRLF 文件中读取 *(星号)时 echo 命令不列出目录内容?
- vba - 检查用户窗体是否打开
- python - 如何使用 python 将多个 XML 文件转换为 csv?
- javascript - React 导出数据
- python - 为每一行创建一个字典
- alfresco - 如何在 Alfresco ADF 组件中访问其他嵌入的模板字段?
- android - Android Studio 项目找不到 gradle-core jar
- firebase - Firestore 集合更改时的颤振通知(背景)
- python - 找不到依赖项/未找到依赖项错误