Skip to content

Repository files navigation

ai_processed_data

本目录是自包含的数据与预处理包:不依赖主项目任何脚本或路径,所有代码与数据均在本文件夹内。主项目文件只读复制,不做任何修改,以保证原有实验结果可复现。


1. 目录结构

ai_processed_data/
├── README.md                 # 本文档
├── requirements.txt          # Python 依赖
├── pkg_bootstrap.py          # 包路径自举(注入 src/ 并重写数据路径)
├── build_package.py          # 从主项目复制数据/参考文件(仅写入本目录)
│
├── scripts/
│   ├── build_aligned.py      # 从原始 xlsx 重建 aligned_clean.parquet
│   ├── export_splits.py      # 导出 Train/Val/Test 切分 CSV/Parquet
│   └── verify_data.py        # 校验数据完整性
│
├── src/pv_data/              # 预处理源码(复制自主项目,路径已适配)
│   ├── config.py             # 路径、时间边界、特征列
│   ├── raw_loader.py         # 功率/辐照 xlsx 加载
│   ├── cleaner.py            # 5min 对齐与物理清洗
│   ├── solar_geometry.py     # 太阳高度角计算
│   ├── aligned_pipeline.py   # Stage-1 对齐流水线
│   ├── aligned_loader.py     # 读取 aligned_clean.parquet
│   ├── features.py           # sin_hour / cos_hour 特征工程
│   └── splitter.py           # Train/Val/Test 时间切分
│
├── data/
│   ├── raw/
│   │   ├── source/           # 原始数据(复制自主项目 data/md_data/)
│   │   │   ├── 总有功功率.xlsx
│   │   │   └── 26年辐照度数据/
│   │   └── aligned_clean.parquet   # 5min 对齐底表(canonical)
│   ├── splits/               # 按时间边界导出的切分表
│   │   ├── train_5min.csv / .parquet
│   │   ├── val_5min.csv   / .parquet
│   │   ├── test_5min.csv  / .parquet
│   │   └── split_meta.json
│   └── processed/            # 轨道元数据
│       ├── hourly_sliding/manifest.json
│       └── ultra_short/manifest.json
│
└── reference/                # 主项目实验对照(只读存档)
    ├── split_manifest.json
    └── hourly_sliding_manifest.json

2. 数据说明

2.1 原始数据源

文件 来源(主项目) 说明
data/raw/source/总有功功率.xlsx data/md_data/总有功功率.xlsx 仪表 281ZYHF00010 有功功率
data/raw/source/26年辐照度数据/ data/md_data/26年辐照度数据/ 气象站水平辐照 GHI(10min 原始)

2.2 对齐底表 aligned_clean.parquet

路径 data/raw/aligned_clean.parquet
时间 2026-01-01 00:00 ~ 2026-04-12 23:55
分辨率 5 min
行数 28,214
timestamp, power, ghi, solar_elevation, station_id, is_daytime

预处理步骤src/pv_data/,对应主项目 pv_prediction/ Stage-1):

  1. 加载功率 xlsx、辐照 xlsx
  2. 对齐到 5 min 等间隔网格
  3. 短缺口线性插值(≤ 25 min)
  4. 计算太阳高度角(pvlib)
  5. 负值裁 0;长缺口行丢弃
  6. 输出 parquet

2.3 Train / Val / Test 时间划分

与报告及 pv_ml_models.config 完全一致

集合 时间范围 5min 行数
Train 2026-01-01 ~ 2026-03-20 23:55 21,590
Val 2026-03-21 ~ 2026-03-31 23:55 3,168
Test 2026-04-01 ~ 2026-04-12 23:55 3,456

注意:实验代码(如 ai_LightGBM、主项目 pv_ml_models不在此包内落盘滑窗样本,而是每次加载 aligned_clean.parquet 后由 TemporalSplitter + WindowBuilder 动态切分。data/splits/ 下的 CSV 是按同一时间边界导出的原始时序切分,便于查阅与交付。


3. 与实验模型的关系

实验包 / 模块 使用的数据 说明
报告 10 模型(CNN/MLP/…/LightGBM) aligned_clean.parquet + 代码切分 主项目 outputs/processed/aligned_clean.parquet 的副本
ai_LightGBM 同上(包内独立副本) 小时级 LightGBM 专用交付包
ai_processed_data(本包) 原始 xlsx + 对齐底表 + 切分导出 数据与预处理的一站式归档

4. 快速开始

ai_processed_data/ 目录下执行。

4.1 首次部署(从主项目复制数据)

cd ai_processed_data
python build_package.py
pip install -r requirements.txt
python scripts/verify_data.py

期望输出末尾:[PASS]

4.2 校验已有数据

python scripts/verify_data.py

4.3 从原始 xlsx 重建对齐底表

python scripts/build_aligned.py          # 若已存在则跳过
python scripts/build_aligned.py --force  # 强制重建

4.4 重新导出 Train/Val/Test 切分

python scripts/export_splits.py

输出至 data/splits/train_5min.csv 等。


5. 代码来源对照

本包模块 主项目来源 作用
raw_loader.py pv_prediction/data_loader.py 读取原始 xlsx
cleaner.py pv_prediction/cleaner.py 5min 对齐与清洗
solar_geometry.py pv_prediction/solar_geometry.py 太阳高度角
aligned_pipeline.py pv_prediction/pipeline.py Stage-1 生成 aligned_clean
features.py pv_ml_models/data/features.py 时间特征工程
splitter.py pv_ml_models/data/splitter.py 时间切分
aligned_loader.py pv_ml_models/data/loader.py 读取 parquet

所有复制代码均已将路径改为包内 data/不 import 主项目模块


6. 给同事的迁移说明

  1. 将整个 ai_processed_data/ 文件夹拷贝到目标机器
  2. pip install -r requirements.txt
  3. 若包内尚无数据:python build_package.py(需在含主项目的机器上运行一次)
  4. 验证:python scripts/verify_data.py
  5. 下游模型训练:读取 data/raw/aligned_clean.parquet,按 src/pv_data/splitter.py 时间边界切分

无需安装主项目 meidi 仓库的其他模块。


整理日期:2026-08-12 · 对应「不依赖未来气象版」实验数据归档

About

prepare the data for weather LLM.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages