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

如何基于分钟级传感器CSV数据计算小时平均值?

计算传感器数据的小时平均值(Pandas优化方案)

当然有更简洁高效的方法来实现小时平均值计算!你当前的循环处理方式虽然能完成任务,但Pandas内置的时间序列工具可以让这个过程更优雅、更高效,尤其适合处理大规模的传感器数据。

问题分析

你的CSV数据包含分钟粒度的传感器读数,结构为:日期、时间、参数名称、参数代码、数值。要计算小时平均值,核心是按小时对数据分组,然后对每组的数值求平均。

优化解决方案

下面是基于Pandas的完整实现步骤:

1. 数据读取与预处理

首先读取CSV并整理数据格式,把分开的日期和时间合并为完整的时间戳,同时确保数据类型正确:

import pandas as pd

# 读取CSV,指定列名(匹配你的数据结构)
df = pd.read_csv(
    '2016-05-27.csv',
    names=['date', 'time', 'param_name', 'param_code', 'value'],
    dtype={'param_code': int, 'value': float}  # 强制指定数据类型,避免识别错误
)

# 合并日期和时间为datetime类型的列,方便时间操作
df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'])

2. 筛选目标参数

根据你需要的参数代码(比如示例中的11201)过滤数据:

target_param_code = 11201
# 筛选出目标参数的所有记录
filtered_data = df[df['param_code'] == target_param_code]

3. 计算小时平均值

使用Pandas的resample(重采样)工具,按小时聚合并计算平均值:

# 按小时重采样,计算数值列的平均值
hourly_averages = filtered_data.set_index('datetime')['value'].resample('H').mean()

# 输出结果
print("各小时平均值:")
print(hourly_averages)

4. 可选:用groupby实现分组计算

如果你不想设置时间索引,也可以提取小时信息后用groupby分组:

# 提取日期和小时信息作为分组键
filtered_data['hour'] = filtered_data['datetime'].dt.hour
hourly_averages = filtered_data.groupby(['date', 'hour'])['value'].mean()

为什么这个方案更好?

  • 效率更高:避免手动循环,Pandas的底层是C实现,处理大规模数据时速度远快于Python循环。
  • 代码更简洁:几行代码就能完成筛选、分组、聚合的全流程,可读性更强。
  • 自动处理NaN:mean()方法会自动忽略缺失值,不需要手动判断'nan'。
  • 扩展性强:如果之后需要计算其他时间粒度(比如15分钟、日、月平均值),只需要修改resample的参数(比如'15T'、'D')即可。

保留原有每日平均计算

如果需要保留你原来的每日平均计算,同样可以用resample实现:

daily_average = filtered_data.set_index('datetime')['value'].resample('D').mean()
print("\n每日平均值:")
print(daily_average)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:24:40