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

如何将不规则5分钟间隔气象数据重采样为小时数据?

气象观测数据集
DateTimeTemperature_CWind speed_kmphPrecipitation Rate_mmPressure_hPa
1/1/201723:00:007.721.6101023.37
1/1/201723:05:007.6100.511023.71
1/1/201723:10:007.721.6101023.37
1/1/201723:15:007.61001023.71
1/1/201723:20:007.721.610.251023.37
1/1/201723:25:007.61001023.71
1/1/201723:30:007.721.610.511023.37
1/1/201723:35:007.61001023.71
1/1/201723:40:007.721.610.251023.37
1/1/201723:45:007.61001023.71
1/1/201723:50:007.721.6101023.37
1/1/201723:55:007.61001023.71
1/2/201700:03:007.721.610.511023.37
1/2/201700:08:007.61001023.71
1/2/201700:13:007.721.6101023.37
1/2/201700:18:007.6100.251023.71

数据时间序列不规整:2017年1月2日00:00:00因记录仪故障无数据,故障修复后从当日00:03:00恢复记录。此外,数据还存在间隔超过5分钟的情况(例如2017年1月3日00:05:00记录后,下一条记录为00:17:00,有时故障甚至无法当日修复)。需要将数据重采样为小时间隔数据(比如5分钟间隔)。

重采样规整时间序列的解决方案

用Python的pandas库可以高效处理这类问题,以下是具体流程:

1. 读取并预处理数据

将数据加载后,合并日期和时间列生成完整时间戳,并设置为索引:

import pandas as pd

# 读取数据(假设数据存储在csv文件,也可直接用列表构造DataFrame)
df = pd.read_csv('weather_data.csv')

# 合并日期与时间,转换为datetime类型
df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'])

# 设置时间戳为索引,删除原日期、时间列
df = df.set_index('datetime').drop(['Date', 'Time'], axis=1)

2. 生成目标规整时间序列

根据需要的小时间隔(以5分钟为例),创建覆盖原始数据时间范围的连续时间轴:

# 获取数据的起始和结束时间,生成5分钟间隔的连续时间索引
start_time = df.index.min().floor('5min')
end_time = df.index.max().ceil('5min')
target_index = pd.date_range(start=start_time, end=end_time, freq='5min')

3. 对齐原始数据到目标时间轴

将原始数据重新索引到目标时间序列,缺失位置用NaN占位:

df_resampled = df.reindex(target_index)

4. 填充缺失值

根据气象参数的特性选择合适的填充方式:

  • 温度、气压:连续变化的参数,用线性插值保证数据平滑性
  • 风速:用前向填充保留最后一次观测值,直到下一次有有效数据
  • 降水量:无记录时段通常填充0(若确认是故障导致缺失,可标记后再处理)

示例代码:

# 温度、气压采用线性插值
df_resampled[['Temperature_C', 'Pressure_hPa']] = df_resampled[['Temperature_C', 'Pressure_hPa']].interpolate(method='linear')

# 风速用前向填充
df_resampled['Wind speed_kmph'] = df_resampled['Wind speed_kmph'].ffill()

# 降水量缺失值填充0
df_resampled['Precipitation Rate_mm'] = df_resampled['Precipitation Rate_mm'].fillna(0)

5. 处理长时间缺失

若遇到几小时以上的故障缺失:

  • 直接保留NaN,避免插值引入错误
  • 标记缺失时段,后续分析时排除
  • 结合同期历史数据填充(如有)

6. 验证结果

检查重采样后的数据是否符合预期:

print(df_resampled.head(20))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:02:23