将每一天绘制为每小时的时间序列

Posted

技术标签:

【中文标题】将每一天绘制为每小时的时间序列【英文标题】:Plot each day as a time serie on a hourly basis 【发布时间】:2021-03-22 19:31:18 【问题描述】:

我有一个时间序列数据框 (df),其中包含变量 y 几天的信息(每小时注册一次):

> df.head()

          Date           y         
1   2019-10-03 00:00:00 33  
2   2019-10-03 01:00:00 10  
3   2019-10-03 02:00:00 39  
4   2019-10-03 03:00:00 60  
5   2019-10-03 04:00:00 21  

我想将每一天绘制为一个时间序列,x 轴是小时,即我想每小时(独立地)查看每天的 y。如果我有 N 天,我想在示例图中看到 N 个时间序列,变量 y 在 y 轴上,小时在 x 轴上。这可能吗?

如果每天对我的数据进行分组,我会因为 sum 函数而丢失小时信息:

 > df_day = df.groupby(pd.Grouper(key='Date',freq='1D')).sum() 

       Date     y
0   2019-10-03 800
1   2019-10-04 899
2   2019-10-05 1020
3   2019-10-06 544
4   2019-10-07 321

【问题讨论】:

【参考方案1】:

DataFrame.groupby 与日期和时间一起使用,汇总总和并按Series.unstack 重塑:

df['Date'] = pd.to_datetime(df['Date'])

df_day = (df.groupby([df['Date'].dt.date, df['Date'].dt.hour])['y']
            .sum()
            .unstack(fill_value=0))
print (df_day)
Date         0   1   2   3   4
Date                          
2019-10-03  33  10  39  60  21

【讨论】:

谢谢,df_day.plot() 在你的代码得到我想要的之后。

以上是关于将每一天绘制为每小时的时间序列的主要内容,如果未能解决你的问题,请参考以下文章

将每小时数据重新采样为每日数据并在 python 中的特定列上求和

为每一天设置不同的颜色(小部件)

MySql 求一段时间范围内的每一天,每一小时,每一分钟

MySQL 获取某个时间段每一天每一个小时的统计数据

win2003给一个服务制定任务计划为每一小时重启一次,怎么做

第一天打卡—线性规划