実装タスク(時間・日データ後処理)
0. 事前準備
- [ ] 対象Excelパスの決定(_H系/_D系)。試験用は
water_info/303031283303010_木原_2020年1月-2021年12月_WH.xlsx / _WD.xlsx。
- [ ] 出力先ルートの決定(例:
out/、Parquetは parquet/)。
1. 読み込み・正規化
- [ ]
load_hourly(path) 実装: 先頭2列のみ読み込み(全期間>年シート)→列名を display_dt, value に正規化→display_dt を datetime64 へ→hydro_date = (display_dt - 1h).dt.date を追加。
- [ ]
load_daily(path) 実装: 先頭2列のみ読み込み(全期間>年シート)→列名を datetime, value に正規化→hydro_date = datetime.dt.date を追加→daily_value にリネーム。
2. 時間→日集計
- [ ]
aggregate_hourly(df_hour_raw) 実装:
- グループキー
hydro_date。
count_non_null = value.count()
hourly_daily_avg_var_den = value.mean(skipna=True)
hourly_daily_avg_fixed_den = value.mean() ただし count_non_null == 24 以外は NaN。
- 戻り:
hydro_date, 上記3列。
3. マージ
- [ ]
merge_daily(df_hour_daily, df_daily_raw) 実装: hydro_date で外部結合→df_merged にする。欠損はNaNのまま。
4. ランク付与(年単位)
- [ ]
add_ranks(df_merged) 実装:
year = hydro_date.dt.year を付与。
- 対象列:
hourly_daily_avg_var_den, hourly_daily_avg_fixed_den, daily_value。
- 年・列ごとに欠損11個以上ならランク全NaN。
- それ以外: 非欠損を値降順でユニーク連番(最大=1、同値も連番)。欠損は日付昇順で続き番号を付与。
- 戻り: ランク列
rank_var_den, rank_fixed_den, rank_daily_value を追加したDF。
5. 位況算出(年単位、4種×3基準列)
- [ ]
add_ikyo(df_with_ranks, source_col) を汎用化して、以下3基準それぞれで4種位況を算出:
- 基準列:
hourly_daily_avg_var_den → 列名 ikyo_high_var_den, ikyo_normal_var_den, ikyo_low_var_den, ikyo_drought_var_den
- 基準列:
hourly_daily_avg_fixed_den → 列名を _fixed_den
- 基準列:
daily_value → 列名を _daily_value
- [ ] 位況ロジック: 365日基準順位(豊95/平185/低275/渇355) → 365/366でスケール → 欠測10日以下なら
r_adj = floor(r * 有効日数 / 総日数)、11日以上は算出しない → 降順ソートで順位の値を抽出 → 該当年の行に反映。
6. ピークサマリ作成
- [ ]
build_peaks(df_hour_raw) 実装: 日別に最大/最小/ピーク時刻(例: 最大値とその時刻のみでOKか要確認。ここでは最大値・最大時刻を保持)を集計 → df_summary_peak へ。
7. 出力(Excel + Parquet、小数2位丸め)
- [ ] Excel: 複数シートで出力(暫定案:
main=df_merged+ランク+位況, peaks=df_summary_peak, year_summary は空でも用意可)。
- [ ] 丸め: 主要数値列を小数2位に丸めて出力。
- [ ] Parquet: 個別DFを
parquet/df_hour_raw.parquet, parquet/df_hour_daily.parquet, parquet/df_merged.parquet, parquet/df_summary_peak.parquet などで保存。
8. 簡易検証
- [ ] サンプルファイルで関数チェーンを実行し、位況・ランク・ピーク列が埋まることを確認。
- [ ] 欠損が多い年(11個以上)でランク/位況がNaNになることを確認。
- [ ] 固定分母平均が24本未満でNaNになることを確認。
未決・保留
- Excelシート名・順序は暫定(後で変更可)。
- ピークサマリに最小値/本数などを含めるかは必要時に追加。
- 特定列だけ異なる丸め桁が必要になったら追加指示で対応。