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

如何将2015年15分钟间隔数据转换为小时级汇总数据?

刚好做过类似的时间粒度转换需求,给你整理几种不同工具下的实现方式,按需选用就行:

方法一:Python Pandas(数据分析场景首选)

如果你的数据是用Python处理的,Pandas的重采样功能可以轻松搞定:

import pandas as pd

# 假设你的数据存储在DataFrame中,时间列名为'timestamp',需要聚合的数值列名为'value'
# 第一步:确保时间列是datetime类型
df['timestamp'] = pd.to_datetime(df['timestamp'])
# 将时间列设为索引(可选,但重采样更直观)
df.set_index('timestamp', inplace=True)
# 按小时重采样并求和,每个小时的起始时间会作为新的时间戳
hourly_aggregated = df.resample('H').sum()
# 如果需要把时间索引变回普通列,执行下面这行
hourly_aggregated.reset_index(inplace=True)

小提示:如果原始数据存在缺失的15分钟记录(比如某小时少了一个时间点),sum()会自动跳过NaN值;如果需要把缺失值当作0计算,可以先执行df.fillna(0, inplace=True)。

方法二:SQL(数据存储在数据库时使用)

如果你的15分钟数据存在数据库中,可以通过分组聚合实现。以下是通用SQL示例,不同数据库的时间截断函数略有差异:

SELECT
    DATE_TRUNC('hour', record_time) AS hour_start_time,
    SUM(metric_value) AS hourly_total
FROM
    your_table_name
WHERE
    record_time BETWEEN '2015-01-01 00:00:00' AND '2015-12-31 23:59:59'
GROUP BY
    DATE_TRUNC('hour', record_time)
ORDER BY
    hour_start_time;

数据库适配说明:

  • MySQL:用DATE_FORMAT(record_time, '%Y-%m-%d %H:00:00')替代DATE_TRUNC('hour', record_time)
  • Oracle:用TRUNC(record_time, 'HH')替代
  • SQL Server:用DATEADD(hour, DATEDIFF(hour, 0, record_time), 0)替代
方法三:Excel(非编程场景适用)

如果不想写代码,用Excel也能快速完成转换:

  • 第一步:确认原始时间列是Excel可识别的日期时间格式(如果不是,选中列后在「数据」选项卡选择「分列」转换)
  • 第二步:添加辅助列,命名为「小时级时间」,在单元格中输入公式=FLOOR(A2, "0:60")(A2是原始时间所在单元格),下拉填充整列——这个公式会把时间向下取整到最近的小时
  • 第三步:插入数据透视表,将「小时级时间」拖到「行」区域,需要聚合的数值列拖到「值」区域,然后把值的汇总方式设置为「求和」
  • 第四步:筛选透视表的时间范围,只保留2015年的数据即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:27:06