[seaborn] 7. relplotのcol, rowを使って多変数なグラフを表示する

python

はじめに

簡単かつ簡潔にデータを可視化できるライブラリであるseabornのrelplotでcolとrowを使って多変数な散布図を表示する方法について説明する。

コード

解説

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

データの読み込み

データは下記サイトから2019シーズンのJ1の結果を取得した。

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

新たな列データをDataFrameへ追加

得失のデータを使って得失点差がプラスなチームとマイナスなチームに分ける。プラスのチームには”得失+”をいれ、マイナスのチームには”得失ー”を入れる。

DataFrameは以下のようになる。

順位 Unnamed: 1 Unnamed: 2 勝点 試合数 得点 失点 得失 平均得点 平均失点 得失点
0 1 NaN 横浜F・マリノス横浜FM 70 34 22 4 8 68 38 30 2.0 1.1 得失+
1 2 NaN FC東京FC東京 64 34 19 7 8 46 29 17 1.4 0.9 得失+
2 3 NaN 鹿島アントラーズ鹿島 63 34 18 9 7 54 30 24 1.6 0.9 得失+
3 4 NaN 川崎フロンターレ川崎F 60 34 16 12 6 57 34 23 1.7 1.0 得失+
4 5 NaN セレッソ大阪C大阪 59 34 18 5 11 39 25 14 1.1 0.7 得失+
5 6 NaN サンフレッチェ広島広島 55 34 15 10 9 45 29 16 1.3 0.9 得失+
6 7 NaN ガンバ大阪G大阪 47 34 12 11 11 54 48 6 1.6 1.4 得失+
7 8 NaN ヴィッセル神戸神戸 47 34 14 5 15 61 59 2 1.8 1.7 得失+
8 9 NaN 大分トリニータ大分 47 34 12 11 11 35 35 0 1.0 1.0 得失ー
9 10 NaN 北海道コンサドーレ札幌札幌 46 34 13 7 14 54 49 5 1.6 1.4 得失+
10 11 NaN ベガルタ仙台仙台 41 34 12 5 17 38 45 -7 1.1 1.3 得失ー
11 12 NaN 清水エスパルス清水 39 34 11 6 17 45 69 -24 1.3 2.0 得失ー
12 13 NaN 名古屋グランパス名古屋 37 34 9 10 15 45 50 -5 1.3 1.5 得失ー
13 14 NaN 浦和レッズ浦和 37 34 9 10 15 34 50 -16 1.0 1.5 得失ー
14 15 NaN サガン鳥栖鳥栖 36 34 10 6 18 32 53 -21 0.9 1.6 得失ー
15 16 NaN 湘南ベルマーレ湘南 36 34 10 6 18 40 63 -23 1.2 1.9 得失ー
16 17 NaN 松本山雅FC松本 31 34 6 13 15 21 40 -19 0.6 1.2 得失ー
17 18 NaN ジュビロ磐田磐田 31 34 8 7 19 29 51 -22 0.9 1.5 得失ー

多変数グラフの表示 (1 x 2)

sns.relplotでx=”勝”, y=”敗”, hue=”分”,col=”得失点”, data=df_j1とすることで,DataFrame(df)の勝をx軸、敗をy軸とした図で引き分けの値に応じて色を変えた散布図を表示する。左の図には得失点差がプラスのチームのデータが表示され、右のグラフには得失点差がマイナスのチームのデータが表示される。

新たな列データをDataFrameに追加

新たな列 ランクを作成し、順位が8位以上のチームを上位、それ以下を下位としたデータをデータフレームに追加する。最終的なデータフレームは以下のようになる。

順位 Unnamed: 1 Unnamed: 2 勝点 試合数 得点 失点 得失 平均得点 平均失点 得失点 ランク
0 1 NaN 横浜F・マリノス横浜FM 70 34 22 4 8 68 38 30 2.0 1.1 得失+ 上位
1 2 NaN FC東京FC東京 64 34 19 7 8 46 29 17 1.4 0.9 得失+ 上位
2 3 NaN 鹿島アントラーズ鹿島 63 34 18 9 7 54 30 24 1.6 0.9 得失+ 上位
3 4 NaN 川崎フロンターレ川崎F 60 34 16 12 6 57 34 23 1.7 1.0 得失+ 上位
4 5 NaN セレッソ大阪C大阪 59 34 18 5 11 39 25 14 1.1 0.7 得失+ 上位
5 6 NaN サンフレッチェ広島広島 55 34 15 10 9 45 29 16 1.3 0.9 得失+ 上位
6 7 NaN ガンバ大阪G大阪 47 34 12 11 11 54 48 6 1.6 1.4 得失+ 上位
7 8 NaN ヴィッセル神戸神戸 47 34 14 5 15 61 59 2 1.8 1.7 得失+ 上位
8 9 NaN 大分トリニータ大分 47 34 12 11 11 35 35 0 1.0 1.0 得失ー 下位
9 10 NaN 北海道コンサドーレ札幌札幌 46 34 13 7 14 54 49 5 1.6 1.4 得失+ 下位
10 11 NaN ベガルタ仙台仙台 41 34 12 5 17 38 45 -7 1.1 1.3 得失ー 下位
11 12 NaN 清水エスパルス清水 39 34 11 6 17 45 69 -24 1.3 2.0 得失ー 下位
12 13 NaN 名古屋グランパス名古屋 37 34 9 10 15 45 50 -5 1.3 1.5 得失ー 下位
13 14 NaN 浦和レッズ浦和 37 34 9 10 15 34 50 -16 1.0 1.5 得失ー 下位
14 15 NaN サガン鳥栖鳥栖 36 34 10 6 18 32 53 -21 0.9 1.6 得失ー 下位
15 16 NaN 湘南ベルマーレ湘南 36 34 10 6 18 40 63 -23 1.2 1.9 得失ー 下位
16 17 NaN 松本山雅FC松本 31 34 6 13 15 21 40 -19 0.6 1.2 得失ー 下位
17 18 NaN ジュビロ磐田磐田 31 34 8 7 19 29 51 -22 0.9 1.5 得失ー 下位

多変数データの表示(2 x 2)

先ほどと同様に、DataFrame(df)の勝をx軸、敗をy軸とした図で引き分けの値に応じて色を変えた散布図を表示する。
左上がランク上位で得失点差がプラスのチーム、
右上がランク上位で得失点差がマイナスのチーム、
左下がランク下位で得失点差がプラスのチーム、
右下がランク下位で得失点差がマイナスのチームとなる。

この結果から、得失点差がプラスなのにランクが下位であるチームがいることがわかる。

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

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

参考

Visualizing statistical relationships — seaborn 0.13.2 documentation

コメント