本日はpythonを用いたデータの可視化に関して説明します。
データ分析において可視化は「データの翻訳者」としての役割を果たします。
数値やテキストだけでは気付きにくい傾向や異常値が、視覚化することで直感的に理解できるようになります。
ぜひ習得してください。
データ分析において可視化は「データの翻訳者」としての役割を果たします。
数値やテキストだけでは気付きにくい傾向や異常値が、視覚化することで直感的に理解できるようになります。
ぜひ習得してください。
Today's Contents
人間の脳はテキスト情報より視覚情報を6万倍速く処理できるという研究結果(MIT神経科学研究所)があります。
数値表で1時間かけて理解するデータ関係も、適切なグラフなら「一瞥」で把握可能です。
また、機械学習モデルの品質を左右するデータ前処理において、ボックスプロットやヒストグラムが不可欠。
数値的な外れ値検出(Z-score等)と視覚的検証の組み合わせが重要です。
【メリット】
1. チームコラボレーション促進:異分野メンバー間の共通言語として機能
2. 分析プロセスの透明性向上:データ加工の各段階を可視化可能
3. 仮説生成の加速:EDA段階での新たな問いの創出
4. モデル解釈性の向上:機械学習の特徴量重要度を可視化
【悪い例】
1. 誤解を招くスケール操作:y軸の不適切な切り取りで差を誇張
2. 過剰な装飾(チャートジャンク):3D効果で実際の数値が判別困難
3. カラーパレットの誤選択:色覚多様性への配慮不足
4. 不適切なグラフタイプ:円グラフで時系列比較を試みる
伝えるべき相手に誤解の生まれないよう心がけましょう。
数値表で1時間かけて理解するデータ関係も、適切なグラフなら「一瞥」で把握可能です。
また、機械学習モデルの品質を左右するデータ前処理において、ボックスプロットやヒストグラムが不可欠。
数値的な外れ値検出(Z-score等)と視覚的検証の組み合わせが重要です。
【メリット】
1. チームコラボレーション促進:異分野メンバー間の共通言語として機能
2. 分析プロセスの透明性向上:データ加工の各段階を可視化可能
3. 仮説生成の加速:EDA段階での新たな問いの創出
4. モデル解釈性の向上:機械学習の特徴量重要度を可視化
【悪い例】
1. 誤解を招くスケール操作:y軸の不適切な切り取りで差を誇張
2. 過剰な装飾(チャートジャンク):3D効果で実際の数値が判別困難
3. カラーパレットの誤選択:色覚多様性への配慮不足
4. 不適切なグラフタイプ:円グラフで時系列比較を試みる
伝えるべき相手に誤解の生まれないよう心がけましょう。
主要な可視化手法とその特徴を整理します。
pythonでは基本的にmatplotlibと呼ばれるライブラリを用いてグラフを作成します。
matplotlibにはチートシートが存在しており、
とても有益ですのでぜひ一度御覧ください。
『Matplotlib CheatSheets』
| 種類 | 用途 | 適したデータ型 |
|---|---|---|
| 折れ線グラフ | 時系列変化 | 時間軸データ |
| 棒グラフ | カテゴリ比較 | 離散値 |
| ヒストグラム | 分布確認 | 連続値 |
| 散布図 | 相関分析 | 2変量連続値 |
| ヒートマップ | 密度表現 | 行列データ |
| ボックスプロット | 分布要約 | 数値分布 |
| 円グラフ | 構成比率 | カテゴリ比率 |
| ファンチャート | プロセス分析 | 段階的データ |
pythonでは基本的にmatplotlibと呼ばれるライブラリを用いてグラフを作成します。
matplotlibにはチートシートが存在しており、
とても有益ですのでぜひ一度御覧ください。
『Matplotlib CheatSheets』
今回はmatplotlibに加え、より簡単にかつ綺麗にグラフが作成できる、seabornを用いて実践します。
それではやってみましょう!
【ライブラリのインストール】
【環境設定】
【サンプルデータ作成】
【1. 時系列分析(折れ線+棒グラフ)】
【2. 分布比較(ヒストグラム+KDE)】
【3. 相関分析(散布図行列)】
【4. 異常値検出(ボックスプロット)】
【5. 多次元データ可視化(ヒートマップ)】
それではやってみましょう!
【ライブラリのインストール】
pip install seaborn
【環境設定】
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 日本語表示対応
plt.rcParams['font.family'] = 'MS Gothic'
【サンプルデータ作成】
# 時系列データ
date_rng = pd.date_range('2023-01-01', periods=90, freq='D')
ts_data = pd.Series(np.random.randn(90).cumsum(), index=date_rng)
# カテゴリデータ
categories = ['A', 'B', 'C', 'D']
values = np.random.randint(10, 100, size=4)
# 多次元データ
data = pd.DataFrame({
'Age': np.random.normal(35, 10, 1000),
'Income': np.random.normal(50000, 15000, 1000),
'Category': np.random.choice(categories, 1000)
})
【1. 時系列分析(折れ線+棒グラフ)】
fig, ax1 = plt.subplots(figsize=(10,6))
color = 'tab:red'
ax1.set_xlabel('Date')
ax1.set_ylabel('Main Metric', color=color)
ax1.plot(ts_data.index, ts_data, color=color)
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx()
color = 'tab:blue'
ax2.set_ylabel('Events', color=color)
ax2.bar(ts_data.index, np.random.randint(0,5,90), alpha=0.3, color=color)
plt.title('時系列トレンドとイベント発生状況')
plt.show()
【2. 分布比較(ヒストグラム+KDE)】
plt.figure(figsize=(10,6))
sns.histplot(data=data, x='Age', hue='Category', element='step', kde=True)
plt.title('カテゴリ別年齢分布')
plt.xlabel('Age')
plt.ylabel('Count')
plt.show()
【3. 相関分析(散布図行列)】
sns.pairplot(data[['Age', 'Income', 'Category']], hue='Category', height=2.5)
plt.suptitle('変数間相関分析', y=1.02)
plt.show()
【4. 異常値検出(ボックスプロット)】
plt.figure(figsize=(8,6))
sns.boxplot(x='Category', y='Income', data=data)
plt.title('カテゴリ別収入分布')
plt.xticks(rotation=45)
plt.show()
【5. 多次元データ可視化(ヒートマップ)】
corr_matrix = data[['Age', 'Income']].corr()
plt.figure(figsize=(8,6))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0)
plt.title('変数間相関係数')
plt.show()
【ライブラリのインストール】
【6. インタラクティブ化:Plotlyで動的グラフを作成】
Pythonの可視化技術は単なるグラフ作成を超え、データストーリーテリングの強力なツールとなります。
Matplotlibの基礎からSeabornの高レベルAPI、Plotlyのインタラクティブ機能まで、
目的に応じて適切なツールを選択することが重要です。
実装時は「誰が見るか」「何を伝えたいか」を常に意識し、データの本質を抽出する視覚化を心がけましょう。
本日はここまで。
お疲れ様でした!
pip install plotly
【6. インタラクティブ化:Plotlyで動的グラフを作成】
import plotly.express as px
fig = px.scatter(data, x='Age', y='Income', color='Category')
fig.show()
Pythonの可視化技術は単なるグラフ作成を超え、データストーリーテリングの強力なツールとなります。
Matplotlibの基礎からSeabornの高レベルAPI、Plotlyのインタラクティブ機能まで、
目的に応じて適切なツールを選択することが重要です。
実装時は「誰が見るか」「何を伝えたいか」を常に意識し、データの本質を抽出する視覚化を心がけましょう。
本日はここまで。
お疲れ様でした!
コメント
コメントを投稿