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

时间序列事件频率可视化:10秒窗口统计与直方图绘制

统计10秒窗口内时间序列数据点数量并绘制直方图

1. 导入原始数据并转换为DataFrame

如果你的原始数据是逗号分隔的字符串形式,先将其转为DataFrame:

import pandas as pd

raw_data = "00:00:08,00:00:24,00:00:27,00:00:36,00:00:36,00:00:37,00:00:42,00:00:43,00:00:44,00:00:47,00:00:54,00:00:57,00:00:57,00:01:09,00:01:16,00:01:18,00:01:21,00:01:25,00:01:26,00:01:33,00:01:33,00:01:33,00:01:38,00:01:44,00:01:45,00:01:53,00:01:57,00:02:01,00:02:03,00:02:19,00:02:20,00:02:33,00:02:33,00:02:34,00:02:48,00:02:50,00:03:12,00:03:21,00:03:23,00:03:24,00:03:28,00:03:34,00:03:34,00:03:35,00:03:38,00:03:39,00:03:40,00:03:40,00:03:42,00:03:42,00:03:48,00:03:49,00:03:54,00:03:55,00:04:03,00:04:06,00:04:07,00:04:10,00:04:11,00:04:16,00:04:21,00:04:26,00:04:27,00:04:27,00:04:28,00:04:30,00:04:33,00:04:41,00:04:49,00:04:50,00:04:51,00:04:54,00:04:55,00:04:59,00:05:16,00:05:16,00:05:27,00:05:34,00:05:37,00:05:46,00:05:50,00:05:53,00:06:07,00:06:16,00:06:24,00:06:25,00:06:26,00:06:30,00:06:38,00:06:38,00:06:42,00:06:44,00:06:46,00:06:53,00:07:00,00:07:00"
time_list = raw_data.split(',')
df = pd.DataFrame({'time': time_list})

2. 转换时间格式并设置索引

将字符串类型的时间转为datetime格式,同时设置为DataFrame索引,方便后续窗口统计:

# 转换为HH:MM:SS格式的datetime对象
df['time'] = pd.to_datetime(df['time'], format='%H:%M:%S')
# 设置时间列为索引
df = df.set_index('time')

3. 按10秒窗口统计数据点数量

使用resample方法按10秒窗口分组,统计每个窗口内的数据点数量:

# 按10秒窗口重采样,统计每组记录数
window_counts = df.resample('10S').count()
# 重命名列名,便于识别
window_counts = window_counts.rename(columns={window_counts.columns[0]: '数据点数量'})

4. 绘制条形图(直方图)

用matplotlib或seaborn绘制可视化结果,展示每个10秒窗口的数据分布:

方法1:使用matplotlib

import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))
# 绘制条形图
plt.bar(window_counts.index.strftime('%H:%M:%S'), window_counts['数据点数量'], width=0.8)
# 旋转x轴标签,避免重叠
plt.xticks(rotation=45, ha='right')
# 添加标题和坐标轴标签
plt.title('10秒窗口内数据点数量分布')
plt.xlabel('10秒窗口起始时间')
plt.ylabel('数据点数量')
# 调整布局,防止标签被截断
plt.tight_layout()
plt.show()

方法2:使用seaborn(更美观的样式)

import seaborn as sns

plt.figure(figsize=(12, 6))
sns.barplot(x=window_counts.index.strftime('%H:%M:%S'), y=window_counts['数据点数量'])
plt.xticks(rotation=45, ha='right')
plt.title('10秒窗口内数据点数量分布')
plt.xlabel('10秒窗口起始时间')
plt.ylabel('数据点数量')
plt.tight_layout()
plt.show()

补充说明

  • 如果时间数据包含日期部分,只需修改pd.to_datetime的format参数,例如%Y-%m-%d %H:%M:%S
  • resample('10S')默认从第一个数据点的时间开始生成窗口,若需指定起始点,可添加origin='start'或origin='epoch'参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:50:26