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

python

はじめに

データ分析において複数の変数間の関係を視覚化することは非常に重要です。Pythonのデータ可視化ライブラリSeabornは、このような多変数データの可視化を簡単に行うための機能を提供しています。本記事では、Seabornのrelplot関数のcolとrowパラメータを活用して、複数の変数関係を効率的に可視化する方法について解説します。これらのパラメータを使うことで、一度に複数の条件でデータを分割し、整理された形で表示することができます。

コード

解説

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

データの読み込み

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

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

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

得失点差のデータを使ってチームをプラスとマイナスの2グループに分けます。プラスのチームには「得失+」、マイナスのチームには「得失-」というラベルを付けます。この処理後の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軸に敗北数をプロットし、引き分け数に応じて色分けした散布図が表示されます。さらに、col引数により図が2つに分割され、左側には得失点差がプラスのチームのデータ、右側には得失点差がマイナスのチームのデータがそれぞれ表示されます。

新たな列データを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ファイル)

まとめ

Seabornのrelplot関数のcolrowパラメータを使うことで、複数の変数の関係を整理された形で可視化できることを学びました。これにより、データセット内の複雑な関係性を一目で把握することが可能になります。また、hueパラメータと組み合わせることで、さらに多くの情報を同時に表示することができます。データ分析において、このような多変数グラフは洞察を得るための強力なツールとなります。

参考

Visualizing statistical relationships — seaborn 0.13.2 documentation

コメント