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

python

はじめに

簡単かつ簡潔にデータを可視化できるライブラリであるseabornを用いて、2つのデータの関係性を2D plotで表示する方法について説明する。

コード

解説

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

バージョン

データの読み込み

2012-2019のサッカーJリーグのJ1の結果を下記サイトから読み込む。URLごとにTableを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とすることで間隔を0とし、周囲のグラフと中央のグラフが結合される。

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

ratio=2とすることで、周囲にあるグラフの高さを中心のグラフの1/2にすることができる。つまり、大きくするほど周囲のグラフの高さは小さくなる。

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

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

参考

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

コメント