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

如何在Pandas中将CSV中的时间序列数据按24小时间隔分组?

如何用Pandas将时间序列数据按24小时间隔分组

嘿,这个需求在Pandas里处理起来其实挺直接的,我给你一步步拆解操作:

第一步:确保时间列是Pandas可识别的datetime类型

你的CSV里的date字段是带UTC时区的字符串格式,我们需要先把它转换成Pandas的datetime类型,这样才能进行时间分组操作。

方法1:读取CSV时直接解析时间列

import pandas as pd

# 读取CSV,同时解析date列为带UTC时区的datetime,并设为索引(方便后续resample操作)
df = pd.read_csv('你的文件名.csv', parse_dates=['date'], index_col='date', utc=True)

方法2:读取后再转换时间列

如果读取时没做解析,也可以事后处理:

df = pd.read_csv('你的文件名.csv')
# 将date列转换为带UTC时区的datetime类型
df['date'] = pd.to_datetime(df['date'], utc=True)

第二步:按24小时间隔分组并聚合

Pandas提供了两种常用的方式来实现按时间间隔分组:

方式1:使用resample(适合时间列为索引的情况)

resample是专门为时间序列设计的分组工具,用'D'作为频率参数代表日历日(24小时),你可以根据需求指定聚合函数(比如均值、求和等):

# 按24小时分组,计算各指标的均值/求和,可根据你的需求调整聚合逻辑
daily_summary = df.resample('D').agg({
    'cpu': 'mean',          # CPU使用率的日均均值
    'mem': 'mean',          # 内存使用率的日均均值
    'load': 'mean',         # 系统负载的日均均值
    'drops': 'sum',         # 丢包数的日总和
    'latency': 'mean',      # 延迟的日均均值
    # 其他需要聚合的字段都可以在这里添加
})

方式2:使用groupby + Grouper(适合时间列不是索引的情况)

如果不想把date设为索引,用pd.Grouper指定时间列和分组频率即可:

daily_summary = df.groupby(pd.Grouper(key='date', freq='D')).agg({
    'cpu': 'mean',
    'mem': 'mean',
    'load': 'mean',
    'drops': 'sum',
})

进阶:自定义24小时窗口的起始时间

如果你的需求不是从午夜0点开始的24小时,而是从某个特定时间(比如每天9点)开始计算24小时周期,可以调整频率参数和起始点:

# 从每天9点开始的24小时窗口
daily_summary = df.resample('24H', origin='2018-02-13 09:00:00').agg({
    'cpu': 'mean',
    'mem': 'mean',
})

注意事项

  • 你的示例数据里有很多空值(,,,,,),Pandas的聚合函数(比如mean)会自动忽略NaN值,如果需要填充空值,可以先使用df.fillna(0)或者其他填充逻辑。
  • 确保date列的时区处理正确,避免因为时区偏差导致分组错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:20:20