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

在R中按时间序列与站点分组拆分气象数据为训练集验证集

多站点时序数据按站点等比例拆分方案

使用Pandas即可实现需求,核心逻辑为按站点分组后,每个组单独按时间顺序截取对应比例的训练/验证集,不受各站点观测长度差异影响:

步骤1:导入依赖&构造示例数据

import pandas as pd

# 构造示例数据集
df = pd.DataFrame({
    'Station': ['A', 'A', 'A', 'A', 'B', 'B'],
    'Date': pd.to_datetime(['2012-01-01', '2012-01-02', '2012-01-03', '2012-01-04', '2012-01-01', '2012-01-02']),
    'temp': [-0.8, 0.1, 0.5, 0.4, 0.1, 0.5]
})

步骤2:设置参数&执行拆分

# 训练集占比,可根据需求调整
train_ratio = 0.5

# 先按站点+日期排序,保证单个站点的时间序列顺序正确
df_sorted = df.sort_values(by=['Station', 'Date']).reset_index(drop=True)

# 拆分训练集:每个站点取排序后前train_ratio比例的数据
train_df = df_sorted.groupby('Station', group_keys=False).apply(
    lambda x: x.iloc[:int(len(x) * train_ratio)]
).reset_index(drop=True)

# 拆分验证集:每个站点取排序后剩余的数据
val_df = df_sorted.groupby('Station', group_keys=False).apply(
    lambda x: x.iloc[int(len(x) * train_ratio):]
).reset_index(drop=True)

如果遇到站点观测数为奇数的场景,需要向上取整训练集行数,可把int(len(x)*train_ratio)替换为math.ceil(len(x)*train_ratio),使用前导入math库即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:18:04