python - 熊猫:按一天中的时间对数据框进行分组并在一个图形上绘制图
问题描述
我已经看到了几十个类似的问题,但我无法做出我想要的最终效果。
数据框结构中几乎每分钟都进行一次测量(25k+ 行):
some_val
...
2020-02-22 00:00:00 1.1
2020-02-22 00:01:01 1.4
2020-02-22 00:02:01 1.5
...
2020-02-23 00:00:05 1.7
2020-02-23 00:01:05 1.6
2020-02-23 00:02:06 1.6
...
2020-02-24 00:00:02 1.4
2020-02-24 00:01:03 1.8
2020-02-24 00:02:03 1.3
我想按一天中的每一分钟对该数据框进行分组 - 所以第一组(一天中的时间 00:00)应该由 [1.1, 1.7, 1.4] 等组成。
然后我想通过将其绘制在 1 个图中来查看一些趋势,其中:
- X 轴是步长为 1 分钟的时间 (00:00, 00:01, ..., 23:59)
- Y 轴是
some_val
- 每次 X 时间的测量次数与每组中的测量次数一样多
现在我不想count()
或mean()
任何东西。只是简单的分组,在 1 个图形上绘制所有内容并将其保存到文件中。
当我阅读时,我应该能够使用 pandasgroupby
或resample
与matplotlib.pyplot
但不知何故我无法做到这一点。
提前致谢。
解决方案
解决方案代码
import pandas as pd
data={'Date':['2020-02-22T00:00:00.000000000', '2020-02-22T00:01:00.000000000',
'2020-02-22T00:02:00.000000000'],'some_val':[1.1, 1.4, 1.5]}
df=pd.DataFrame.from_dict(data)
绘图
import matplotlib .pyplot as plt
df['Date']=pd.to_datetime(df['Date'])#Converting Date to datetime
df.set_index(df['Date'], inplace=True)#Setting Date as index
df['x']= df.index.minute #Extracting minutes
df.plot(x='x', y='some_val')
推荐阅读
- laravel - Laravel groupBy 选择多个字段
- reactjs - ESLint 的 extends 属性是否被附加到 overrides 设置中的 extends 属性
- node.js - 错误:包括意外。元素必须是模型,关联......与 sequelize.literal
- php - 禁用操作所需的身份验证
- java - 如何使用地理编码器在 Onsensor 更改方法中使用用户当前坐标
- python - 在python中一次计算和生成多个标准差列但不是以固定的累积顺序
- homebrew - 返回dbt 19.1版本
- python - pdf抓取后拆分列
- r - RMarkdown 在渲染时不会将 $\overline{x}、\bar{y} 转换为符号
- javascript - 邮递员 - 无法在集合级别测试脚本中运行 pm.sendRequest()