[Python] ライブラリ概観_前処理、計算、ファイリング、可視化

# まとめ
| カテゴリ   | ライブラリ  | 特徴・用途 |
|------------|------------|----------------------------|
| 前処理 | Pandas     | 表形式データの操作・分析 |
|            | NumPy      | 高速な数値計算・配列操作 |
| 計算  | NumPy      | ベクトル・行列演算 |
|            | SciPy      | 数値解析・統計処理 |
|            | SymPy      | 記号計算（微分・積分など） |
| 保存 | HDF5       | 高速なバイナリデータ保存 |
|            | CSV        | 汎用性の高いテキスト形式 |
| 可視化| Matplotlib | 高度なグラフ描画 |
|            | Seaborn    | 統計データの可視化 |

# 詳細
## 前処理（データの整理・変換）
### **Pandas**
データフレーム（表形式データ）の操作を得意とするライブラリ。データの読み込み、クリーニング、変換、統計処理などに優れる。
- **メリット**:
  - CSVやExcel、SQLなど多様なデータソースを扱える。
  - `DataFrame` 型で直感的にデータを操作できる。
  - 強力なフィルタリング・グループ化・統計処理機能。
- **デメリット**:
  - 巨大なデータ（数百万行以上）の処理は遅くなりがち。
  - NumPy配列よりもメモリ消費が大きい。

### **NumPy**
数値計算を高速に行うためのライブラリ。多次元配列 (`ndarray`) を用いて効率的にデータを扱える。
- **メリット**:
  - `ndarray` はPandasより軽量で、高速に処理できる。
  - 多くの科学技術計算ライブラリと相性が良い（SciPy, scikit-learn など）。
- **デメリット**:
  - `ndarray` には行・列のラベルがないため、可読性が低い。
  - データの加工やクレンジングにはPandasほどの機能がない。

### **機能の重複**
- **共通点**: Pandas と NumPy はどちらもデータの前処理に使われる。
- **使い分け**:
  - **行・列のラベルを扱うなら Pandas**
  - **数値計算のパフォーマンスを重視するなら NumPy**

---

## 計算（数値解析・線形代数・統計処理）

### **NumPy**
行列計算や統計処理など、科学技術計算の基礎となるライブラリ。
- **メリット**:
  - ベクトル・行列演算を高速に実行できる。
  - 科学技術計算のほとんどのライブラリ（SciPy, TensorFlow, PyTorch など）が依存。
- **デメリット**:
  - 高度な数値解析機能はSciPyに依存することが多い。

### **SciPy**
数値計算を目的としたライブラリで、線形代数、統計解析、最適化、信号処理などの機能を提供する。
- **メリット**:
  - 最適化 (`scipy.optimize`)、統計 (`scipy.stats`)、微分方程式 (`scipy.integrate`) など、幅広い分野に対応。
  - NumPyと組み合わせることで強力な計算環境を構築できる。
- **デメリット**:
  - 一部の機能は専門的で学習コストが高い。

### **SymPy**
数式処理（記号計算）を行うライブラリ。数式の展開・微分・積分などをシンボリックに処理できる。
- **メリット**:
  - 数式を解析的に扱える（例えば、代数的な解を求める）。
  - 数学的な表記がそのままPythonコードとして扱える。
- **デメリット**:
  - 数値計算には向かず、大規模な計算は遅くなる。

### **機能の重複**
- **共通点**: NumPy, SciPy, SymPy はどれも数学的な計算を行う。
- **使い分け**:
  - **行列演算・ベクトル演算なら NumPy**
  - **数値解析や線形代数なら SciPy**
  - **代数的な計算（微分・積分・因数分解）なら SymPy**

---

## ファイリング（データの保存・読み書き）

### **HDF5（h5py, PyTables）**
大規模なデータを効率的に保存・読み書きするためのライブラリ。
- **メリット**:
  - バイナリ形式なので、CSVよりも高速で大容量のデータを扱える。
  - 階層構造を持つデータを保存可能。
- **デメリット**:
  - 可読性が低く、テキストエディタなどで直接編集しにくい。

### **CSV（Pandasを利用）**
データの保存・読み書きに使われる一般的な形式。
- **メリット**:
  - 人間が直接読める形式。
  - Excelや他のソフトウェアとの互換性が高い。
- **デメリット**:
  - 読み込み・書き込みが遅い（特に大規模データ）。
  - メタデータ（データ型情報など）を保持できない。

### **機能の重複**
- **共通点**: HDF5とCSVはどちらもデータの保存に使用される。
- **使い分け**:
  - **大規模データやバイナリ形式なら HDF5**
  - **可読性や互換性を重視するなら CSV**

---

## 可視化（データのグラフ・図表化）

### **Matplotlib**
Pythonで最も基本的な可視化ライブラリ。折れ線グラフ、棒グラフ、ヒストグラムなどを描画できる。
- **メリット**:
  - 細かいカスタマイズが可能。
  - 他のライブラリ（Pandas, SciPy, seabornなど）と統合しやすい。
- **デメリット**:
  - コードがやや冗長になりやすい。

### **Seaborn**
Matplotlibをベースにした統計的データ可視化ライブラリ。データフレームをそのまま扱える。
- **メリット**:
  - 美しいデフォルトデザイン。
  - Pandasと親和性が高い。
- **デメリット**:
  - Matplotlibほど細かいカスタマイズができない。

### **機能の重複**
- **共通点**: Matplotlib, Seaborn はどちらもデータの可視化を行う。
- **使い分け**:
  - **細かいカスタマイズをしたいなら Matplotlib**
  - **統計的な可視化なら Seaborn**

# 参考リンク
- [Pandas公式ドキュメント](https://pandas.pydata.org/)
- [NumPy公式ドキュメント](https://numpy.org/doc/)
- [SciPy公式ドキュメント](https://scipy.org/)
- [SymPy公式ドキュメント](https://www.sympy.org/en/index.html)
- [Matplotlib公式ドキュメント](https://matplotlib.org/stable/contents.html)
- [Seaborn公式ドキュメント](https://seaborn.pydata.org/)
- [HDF5公式ドキュメント](https://portal.hdfgroup.org/display/HDF5/HDF5)