## ✅ haniwers における `pandas` → `polars` 移行の整理

### 🔍 適用対象と `polars` の相性

| 処理ステップ | 内容 | `polars` に向いているか |
|--------------|------|---------------------------|
| `run2csv`    | 生データ → CSV変換           | △（主にI/O）              |
| `scan`       | 閾値を変えながらイベント走査 | ◎（filter + groupby 高速）|
| `vth`, `fit` | 閾値最適化やフィッティング   | ◎（複数閾値の統計計算）   |
| `postprocess`| 統計・変換                   | ◎（expressionが強力）     |
| 可視化前処理 | グラフ用データの集約         | ◎（binning・hist対応）    |

---

### 🚀 polars導入による主なメリット

- **高速処理**（特に `scan`, `vth`, `fit`）
  - マルチスレッド対応、lazy evaluation で最適化
- **低メモリ使用**（大規模Runに効果大）
- **列ベース処理に強い**
  - 閾値比較・ヒット判定などの操作が効率的

---

### 🛠 移行対象となるモジュール候補

- `threshold.py`
- `postprocess.py`
- `preprocess.py`

---

### ⚠ 検討すべき点（移行コスト）

- `DataFrame` API が `pandas` と一部非互換
- `to_pandas()` により併用可能ではある
- 小規模Runやインタラクティブ用途では `pandas` の方が柔軟なことも

---

### 💡 移行の進め方（推奨）

1. まずは `scan` や `threshold` 処理だけ `polars` で試験的に実装
2. `pandas` と `polars` を併用しながらベンチマーク比較
3. パフォーマンスが顕著な場合、他の処理にも段階的に展開

---

### 🎯 結論

`haniwers` のような構造が固定されたセンサーデータ処理では、`polars` への置き換えは **処理速度・メモリ効率・今後の拡張性**の面で非常に意義がある。
