You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于时间列表绘制带线性时间轴的小时频次直方图(含滚动平均)

问题描述

我有如下时间列表:

times = ['2022-12-09T16:06:34.000000000', '2022-12-09T16:06:34.000000000',
       '2022-12-09T16:09:47.000000000', ... , '2022-12-09T17:46:10.000000000',
       '2022-12-09T17:46:10.000000000', '2022-12-09T17:46:10.000000000',
       '2022-12-09T17:49:10.000000000', '2022-12-09T17:49:10.000000000']

想用matplotlib.pyplot绘制统计每小时出现次数的直方图,目前写了这段代码:

times = pd.Series(extract_times()).astype("datetime64")
times.groupby([times.dt.day, times.dt.hour]).count()
times.plot()

但生成的图表x轴刻度不符合预期,我想要x轴用线性时间刻度,另外最好能添加滚动平均,或者改成柱状图展示。

解决方案

1. 先处理数据:按小时聚合并保留时间索引

用resample替代groupby更合适,它会自动生成连续的时间区间,确保x轴能识别为线性时间刻度:

import pandas as pd
import matplotlib.pyplot as plt

# 假设extract_times()返回你的时间列表
times = pd.Series(extract_times()).astype("datetime64[ns]")

# 按小时重采样,统计每个小时的出现次数
hourly_counts = times.resample('H').count()

2. 绘制柱状图

直接用聚合后的数据绘制柱状图,x轴会自动使用线性时间刻度:

plt.figure(figsize=(10, 6))
hourly_counts.plot(kind='bar')
plt.xlabel('时间(小时)')
plt.ylabel('出现次数')
plt.title('每小时时间点出现次数统计')
plt.xticks(rotation=45)  # 旋转x轴标签避免重叠
plt.tight_layout()  # 自动调整布局
plt.show()

3. 添加滚动平均

如果需要叠加滚动平均(比如3小时窗口),可以在柱状图上再加一条折线:

plt.figure(figsize=(10, 6))
# 绘制柱状图
hourly_counts.plot(kind='bar', label='每小时计数')
# 计算3小时滚动平均并绘制
rolling_avg = hourly_counts.rolling(window=3).mean()
rolling_avg.plot(kind='line', color='red', marker='o', label='3小时滚动平均')
plt.xlabel('时间(小时)')
plt.ylabel('出现次数')
plt.title('每小时时间点出现次数及滚动平均')
plt.legend()
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4. 折线图+滚动平均(可选)

如果更偏好折线图展示,同样基于重采样后的数据:

plt.figure(figsize=(10, 6))
hourly_counts.plot(kind='line', marker='o', label='每小时计数')
# 计算2小时滚动平均(窗口大小可按需调整)
rolling_avg = hourly_counts.rolling(window=2).mean()
rolling_avg.plot(kind='line', color='red', linestyle='--', label='2小时滚动平均')
plt.xlabel('时间(小时)')
plt.ylabel('出现次数')
plt.title('每小时时间点出现次数统计')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者naraghi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:15:31