はじめに
データの可視化は、データ分析の重要なステップの一つです。散布図は、2つの変数間の関係を視覚的に理解するのに役立つ優れたツールです。この記事では、PythonのPandasライブラリとmatplotlibを使用して、散布図を描画する方法について詳しく説明します。さらに、データの前処理からカスタマイズ、回帰直線の追加、複数の散布図を一つのプロットに表示する方法までを実践的に解説します。
Pandasとmatplotlibを使って散布図を描画する基本手順
散布図を描画する基本的な手順は次の通りです。
- 必要なライブラリをインポートする。
- データを読み込み、PandasのDataFrameに格納する。
- DataFrameから散布図を描画する。
- プロットをカスタマイズする(オプション)。
- プロットを表示する。
import pandas as pd import matplotlib.pyplot as plt # データを読み込む data = pd.read_csv('データセット.csv') # 散布図を描画 plt.scatter(data['変数1'], data['変数2']) # グラフをカスタマイズ(例:タイトル、軸ラベル) plt.title('変数1と変数2の関係') plt.xlabel('変数1') plt.ylabel('変数2') # グラフを表示 plt.show()
データセットの準備と前処理方法
データセットの準備と前処理は、散布図を描画する前に重要なステップです。以下は一般的な前処理ステップです。
- データの読み込み
- 欠損値の処理
- 外れ値の検出と処理
- データのスケーリング
# データの読み込み data = pd.read_csv('データセット.csv') # 欠損値の処理(例:欠損値を平均値で埋める) data.fillna(data.mean(), inplace=True) # 外れ値の検出と処理(例:3σ法に基づく外れ値の削除) mean = data['変数1'].mean() std = data['変数1'].std() data = data[(data['変数1'] >= mean - 3 * std) & (data['変数1'] <= mean + 3 * std)] # データのスケーリング(例:Zスコア正規化) data['変数1'] = (data['変数1'] - data['変数1'].mean()) / data['変数1'].std()
散布図のカスタマイズ:マーカーの種類と色の変更
散布図のカスタマイズは、データの視覚的表現を向上させる重要なステップです。以下はカスタマイズの例です。
- マーカーの種類を変更する。
- マーカーの色を変更する。
data = pd.read_csv('データセット.csv') # 散布図を描画(マーカーの種類と色を変更) plt.scatter(data['変数1'], data['変数2'], marker='o', color='blue') # グラフをカスタマイズ(例:タイトル、軸ラベル) plt.title('変数1と変数2の関係') plt.xlabel('変数1') plt.ylabel('変数2') # グラフを表示 plt.show()
このサンプルコードでは、markerパラメータを使用してマーカーの種類を「o」(円)に変更し、colorパラメータを使用してマーカーの色を青に変更しています。これにより、散布図の外観をカスタマイズできます。
散布図に回帰直線を追加する方法
散布図に回帰直線を追加することは、2つの変数間の関係をさらに理解するのに役立ちます。回帰直線を追加する方法は次の通りです。
- Scipyライブラリを使用して回帰直線を計算する。
- 回帰直線を散布図にプロットする。
import numpy as np import scipy.stats as stats # データの読み込み data = pd.read_csv('データセット.csv') # 散布図を描画 plt.scatter(data['変数1'], data['変数2']) # 回帰直線を計算 slope, intercept, r_value, p_value, std_err = stats.linregress(data['変数1'], data['変数2']) x = np.array(data['変数1']) y = slope * x + intercept # 回帰直線を描画 plt.plot(x, y, color='red', label=f'回帰直線 (R^2={r_value**2:.2f})') # グラフをカスタマイズ(例:タイトル、軸ラベル、凡例の表示) plt.title('変数1と変数2の関係') plt.xlabel('変数1') plt.ylabel('変数2') plt.legend() # グラフを表示 plt.show()
このサンプルコードでは、Scipyライブラリを使用して回帰直線を計算し、matplotlibを使用して散布図に回帰直線をプロットしています。回帰直線は赤色で表示され、R^2値も表示されます。
複数の散布図を一つのプロットに表示する方法
複数の散布図を一つのプロットに表示することは、異なる変数間の関係を比較するのに役立ちます。以下は複数の散布図を一つのプロットに表示する方法です。
- 同じプロット上で複数の散布図を描画する。
- 各散布図に異なる色やマーカーを使用して区別する。
- 凡例を追加して散布図の意味を説明する。
以下に、複数の散布図を一つのプロットに表示する方法を示します。
# データの読み込み data = pd.read_csv('データセット.csv') # 散布図を描画(複数の変数間の関係を比較) plt.scatter(data['変数1'], data['変数2'], label='変数1 vs. 変数2', marker='o', color='blue') plt.scatter(data['変数1'], data['変数3'], label='変数1 vs. 変数3', marker='x', color='green') plt.scatter(data['変数1'], data['変数4'], label='変数1 vs. 変数4', marker='s', color='red') # グラフをカスタマイズ(例:タイトル、軸ラベル、凡例の表示) plt.title('複数の変数間の関係') plt.xlabel('変数1') plt.ylabel('値') plt.legend() # グラフを表示 plt.show()
このサンプルコードでは、複数の散布図を同じプロットに表示し、それぞれの散布図に異なる色とマーカーを使用して区別しています。凡例も追加され、各散布図の意味が説明されています。
まとめ
この実践ガイドでは、PythonのPandasとmatplotlibを使用して散布図を描画する方法について詳しく説明しました。以下がまとめのポイントです。
- 散布図を描画する基本手順を理解しました。必要なライブラリをインポートし、データを読み込んでからグラフをカスタマイズし、最終的にグラフを表示します。
- データセットの準備と前処理は、信頼性のある散布図を作成するために重要です。欠損値の処理、外れ値の検出と処理、データのスケーリングなどを適切に行いましょう。
- 散布図のカスタマイズは、データの視覚的表現を向上させるために役立ちます。マーカーの種類や色を変更することで、グラフを個別にカスタマイズできます。
- 回帰直線を散布図に追加することで、変数間の関係をより詳細に分析できます。Scipyライブラリを使用して回帰直線を計算し、matplotlibを使用してプロットしました。
- 複数の散布図を一つのプロットに表示することで、異なる変数間の関係を比較できます。色やマーカーを変えて散布図を区別し、凡例を追加して視覚的に理解しやすくしました。