如何将全年小时步长时间序列重采样为平均日逐小时均值
逐小时时间序列按小时求全年均值实现方案
你的输入数据为三列空白分隔的结构化数据,依次为日期、时刻、观测值,需求为按时刻分组计算同小时所有观测值的全年均值,以下是两种常用实现方案:
Python 实现(推荐)
使用pandas处理时间序列效率高,代码逻辑清晰:
import pandas as pd # 读取本地数据文件,可根据实际文件名修改 df = pd.read_csv('hourly_data.txt', sep='\s+', header=None, names=['date', 'hour', 'value']) # 按小时列分组计算均值,round参数可调整保留小数位数 hourly_avg = df.groupby('hour')['value'].mean().round(2).reset_index() # 打印结果 print(hourly_avg) # 如需导出为csv文件可执行下方代码 # hourly_avg.to_csv('hourly_avg_result.csv', index=False)
如果数据存在缺失值,pandas的mean方法会自动忽略空值,无需额外预处理
如果未安装pandas,执行pip install pandas即可完成安装。
Linux 命令行实现
如果在Linux环境下,可直接用awk一行命令完成计算:
awk '{sum[$2]+=$3; cnt[$2]+=1} END{for(h in sum) printf "%s %.2f\n", h, sum[h]/cnt[h]}' hourly_data.txt | sort
命令会自动按小时分组求和、计数,计算均值后按时间顺序排序输出。
输出示例
两种方案最终输出格式如下:
01:00:00 4.23 02:00:00 3.78 03:00:00 2.15 ... 23:00:00 2.67
内容的提问来源于stack exchange,提问作者Elefant
相关产品推荐
相关产品推荐

