Pythonデータ分析モジュールのまとめ

## 前書き

Pythonはデータ分析や可視化の分野で非常に強力なツールを提供しています。本記事では、データ分析においてよく使用される主要なモジュール（Pandas、NumPy、Matplotlib、Seaborn、Bokeh）について、その役割と基本的な使い方をまとめます。これからデータ分析を始める方や、すでに使用している方の参考になれば幸いです。

## Pandas
### 役割: データの操作と分析

Pandasは、データの操作や分析を行うための強力なデータ構造（SeriesとDataFrame）を提供します。データの読み込み、クリーニング、集計、変換、操作を簡単に行うことができます。

#### 主な機能:
- CSV、Excel、SQL、JSONなどからのデータ読み込み
- データのフィルタリング、ソート、グループ化
- 欠損値の処理、データの結合
- 統計量の計算（平均、中央値、分散など）

```python
import pandas as pd

# データフレームの作成
data = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [24, 27, 22, 32],
    'city': ['New York', 'Los Angeles', 'Chicago', 'Houston']
})

# データの表示
print(data)
```

実行結果:
```
      name  age         city
0    Alice   24     New York
1      Bob   27  Los Angeles
2  Charlie   22      Chicago
3    David   32      Houston
```

## NumPy
### 役割: 配列計算と数値操作

NumPyは、Pythonで数値計算を行うための基本ライブラリです。多次元配列（ndarray）を提供し、高速な数値演算を可能にします。

#### 主な機能:
- 配列の作成と操作
- 数学的関数（線形代数、フーリエ変換、統計関数など）
- ランダム数の生成
- 配列のブロードキャストと形状変更

```python
import numpy as np

# 配列の作成
array = np.array([1, 2, 3, 4, 5])

# 配列の操作
print("Mean:", np.mean(array))
print("Median:", np.median(array))
print("Variance:", np.var(array))
print("Standard Deviation:", np.std(array))
```

実行結果:
```
Mean: 3.0
Median: 3.0
Variance: 2.0
Standard Deviation: 1.4142135623730951
```

## Matplotlib
### 役割: データの可視化

Matplotlibは、静的な2Dプロットを作成するためのライブラリです。データの可視化に必要な基本的なプロット（折れ線グラフ、散布図、棒グラフ、ヒストグラムなど）を作成することができます。

#### 主な機能:
- 基本的なプロットの作成（折れ線グラフ、散布図など）
- カスタマイズ可能なプロット（軸ラベル、タイトル、凡例などの設定）
- グラフの保存（PNG、PDFなど）

```python
import matplotlib.pyplot as plt

# データの作成
x = np.linspace(0, 10, 100)
y = np.sin(x)

# プロットの作成
plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Sine Wave')
plt.show()
```

実行結果:
![スクリーンショット 2024-08-02 21.57.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3851752/568c352f-98de-b709-b22c-13d4da30fe66.png)



## Seaborn
### 役割: 高レベルな統計データの可視化

Seabornは、Matplotlibを基盤としており、統計データの可視化を簡単に行うための高レベルなインターフェースを提供します。デフォルトで美しいプロットを作成できるため、視覚的な魅力が高いグラフを作成するのに便利です。

#### 主な機能:
- ペアプロット、ヒートマップ、カウントプロットなどの統計プロット
- データフレームと統合されたプロット
- 色付けやスタイル設定の簡便さ

```python
import matplotlib.pyplot as plt
import seaborn as sns

# データセットの読み込み
data = sns.load_dataset('iris')

# ペアプロットの作成
sns.pairplot(data, hue='species')
plt.show()
```

実行結果:
![スクリーンショット 2024-08-02 22.03.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3851752/2f39fcb3-b3a2-0c19-ad27-84831c904d77.png)


## Bokeh
### 役割: インタラクティブなデータの可視化

Bokehは、インタラクティブなWebベースの可視化を作成するためのライブラリです。動的なプロットやインタラクティブなダッシュボードを作成することができます。

#### 主な機能:
- インタラクティブなプロット（ズーム、パン、ホバーなどの機能付き）
- Webアプリケーションとの統合
- 高度なプロット（散布図、折れ線グラフ、棒グラフなど）の作成
- プロットの出力（HTMLファイル、Jupyter Notebookなど）

```python
import pandas as pd
import numpy as np
from bokeh.plotting import figure, show, output_file
import webbrowser

# サンプルデータの作成
data = pd.DataFrame({
    'A': np.random.randn(100),
    'B': np.random.rand(100),
})

# HTMLファイルに出力
output_file("scatter_plot.html")

# Bokehプロットの作成
p = figure(title="Scatter Plot of A vs B", x_axis_label='A', y_axis_label='B')

# 散布図の追加
p.scatter(data['A'], data['B'], legend_label='A vs B', fill_alpha=0.6, size=10)

# プロットの表示
show(p)

# ブラウザで自動的に開く
webbrowser.open("scatter_plot.html")
```

実行結果:
![スクリーンショット 2024-08-02 22.14.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3851752/5fd8bbea-33b9-439d-30d5-96053d7f7d45.png)


## まとめ

これらのモジュールを組み合わせることで、データの読み込みから可視化、分析まで一貫して行うことができます。それぞれのモジュールが持つ特性を理解し、適切に使い分けることが効果的なデータ分析の鍵となります。これらのツールを駆使して、データから有益な洞察を引き出し、ビジネスや研究に役立ててください。