[seaborn] 13. 2つのデータの関係性を2次元プロットで表示(jointplot)

python

はじめに

データ分析において、2つの変数間の関係性を視覚的に理解することは非常に重要です。seabornライブラリのjointplotは、散布図とヒストグラムを組み合わせることで、2つの変数の分布と相関関係を同時に可視化できる強力なツールです。本記事では、jointplotの基本的な使い方から応用例まで、わかりやすく解説します。

コード

解説

モジュールのインポートなど

バージョン

データの読み込み

2012年から2019年までのサッカーJリーグJ1の結果を下記サイトから読み込みます。各URLからテーブルをDataFrameとして取得し、それらをリストに追加していきます。

リーグサマリー:2020 J1 順位表 | データによってサッカーはもっと輝く | Football LAB
フットボールラボ(Football LAB)はサッカーをデータで分析し、新しいサッカーの観戦方法を伝えるサッカー情報サイトです。選手のプレーを評価するチャンスビルディングポイントやプレースタイル指標、チームの戦術を評価するチームスタイル指標...

DataFrameの結合

pd.concatを使用してリスト内の複数のデータフレームを一つに結合します。結合後のDataFrameの先頭5行は以下のとおりです。

順位 Unnamed: 1 Unnamed: 2 勝点 試合数 得点 失点 得失 平均得点 平均失点
0 1 NaN サンフレッチェ広島広島 64 34 19 7 8 63 34 29 1.9 1.0
1 2 NaN ベガルタ仙台仙台 57 34 15 12 7 59 43 16 1.7 1.3
2 3 NaN 浦和レッズ浦和 55 34 15 10 9 47 42 5 1.4 1.2
3 4 NaN 横浜F・マリノス横浜FM 53 34 13 14 7 44 33 11 1.3 1.0
4 5 NaN サガン鳥栖鳥栖 53 34 15 8 11 48 39 9 1.4 1.1

ヒストグラム付き散布図の表示

sns.jointplot(x=”勝”, y=”敗”, color=”C0″, data=data)を使用すると、x軸に「勝」のデータ、y軸に「敗」のデータを表示した散布図が作成されます。また、散布図の上部には「勝」データのヒストグラム、右側には「敗」データのヒストグラムが同時に表示されます。

散布図に回帰直線を表示

kind = ‘reg’を指定すると、散布図のデータに回帰直線が引かれ、上部と右側のヒストグラムにもカーネル密度推定グラフが表示されます。

線形回帰の残差をプロット

kind = ‘resid’を指定すると、yデータを線形回帰した際の各xデータにおける残差をプロットできます。この表示では、右側に残差のヒストグラムも同時に表示されます。

六角形のプロットで分布を表示

kind=”hex”オプションを使用すると、六角形(hexbin)で分布を表示できます。データの頻度が高い箇所ほど濃い色で表示されるため、分布の密度が視覚的に理解しやすくなります。

2次元カーネル密度推定マップ

kind=”kde”パラメータを使用すると、2次元のカーネル密度推定分布を表示できます。この表示方法では、ヒストグラムは表示されません。

周囲のグラフと中心のグラフの間隔の調整

space=0パラメータを設定することで、グラフ間の間隔をなくし、周囲のヒストグラムと中央の散布図をシームレスに結合できます。

周囲のグラフの大きさを調整

ratio=2を設定すると、周囲のグラフの高さを中心のグラフの1/2に調整できます。つまり、この値を大きくするほど、周囲のグラフの高さは相対的に小さくなります。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

seabornのjointplotは、2つの変数の関係性を効果的に可視化するための優れた機能を提供します。散布図で相関関係を表示しながら、同時に各変数の分布をヒストグラムやKDEプロットで確認できるため、データの全体像をつかむのに適しています。kind引数を変更することで様々な表示形式を選択でき、カスタマイズオプションも豊富なため、データ分析の幅が広がります。

参考

Visualizing distributions of data — seaborn 0.13.2 documentation
seaborn.jointplot — seaborn 0.13.2 documentation

コメント