[seaborn] 9. boxplotで各カテゴリーにおけるデータの分布を表示

python

はじめに

データ分析において、異なるカテゴリー間でのデータの分布を視覚的に比較することは非常に重要です。Pythonの可視化ライブラリseabornを使用すると、boxplot(箱ひげ図)を簡単に作成でき、各カテゴリーにおけるデータの分布状況を効果的に表現することができます。この記事では、seabornのboxplot関数の基本的な使い方から応用例まで解説していきます。

コード

解説

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

データの読み込み

2017〜2019シーズンのJ1の結果を下記サイトから取得し、pandasのDataFrameに変換しました。その後、作成した複数のDataFrameをpd.concatを使用して一つに結合しました。

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

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

得失点データを使って、チームを得失点差がプラスのチームとマイナスのチームに分類します。プラスのチームには「得失+」、マイナスのチームには「得失-」というラベルを付けます。また、ランクについても同様の処理を行います。以下はDataFrameの最初の5行の例です。

順位 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 得失+ 上位

boxplotの表示

sns.catplot(x=”得失点”, y=”勝”, kind=”box”, data=df)を使用して、DataFrame(df)内の「得失点」のカテゴリー別に「勝」データの分布を箱ひげ図(boxplot)で表示できます。

ひげ(whisker)の長さを変える

whisの値を変えることでひげの長さを調整できます。箱の長さ × whisの値の範囲までひげを伸ばすことが可能になります。

hueを設定した場合

hue=’ランク’パラメータを設定すると、ランクの値に応じて色分けされたboxplotが表示されます。

boxenplotの表示

kind=’boxen’を指定すると、通常のboxplotよりもデータの分布がより詳細に可視化された図を作成できます。

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

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

まとめ

seabornのboxplotを使うことで、カテゴリカルデータごとの数値の分布を視覚的に理解することができます。箱ひげ図は中央値、四分位数、外れ値などの統計情報を一目で把握できるため、異なるグループ間のデータ分布の比較に非常に有効です。基本的な使い方から色やスタイルのカスタマイズ、複数の変数を組み合わせた表示方法まで、様々なデータ可視化のニーズに対応できることが分かりました。

参考

Visualizing categorical data — seaborn 0.13.2 documentation
seaborn.boxplot — seaborn 0.13.2 documentation

コメント