【欧州リーグ 17-18シーズン】WhoScored のデータをPythonのPlotlyで可視化して、グラフをぐりぐり動かしてみた件
Barcelona vs Real Sociedad (20/05/18) Full Highlights
先週末までで欧州5大リーグが全日程を消化。
今週末のUEFAチャンピオンズリーグ決勝をもって、ヨーロッパ各国リーグの17-18シーズンもクローズ。
ヨーロッパ以外の国や地域を含め、6月に迫るワールドカップへ向かうフットボールシーン。
昨年も欧州リーグのデータをかるーく眺めてみたのですが、今年は少し毛色を変えてPythonを駆使して可視化に寄せてデータを眺めてみたいと思います。
football-data-visualization.hatenablog.com
データはご覧の提供でお送りします。
今回、データ加工・可視化に用いたのが、Pythonから利用できる「Plotly」というライブラリ。
見た目良く、マウスオーバーしたり、ドラッグしたりしてグラフをグリグリ動かせたりもします。
例えば、「タックル数」と「クリア数」の2軸で各国リーグ毎に色分けして散布図に描いてみると上記のようなグラフに。
マウスオーバーしてもらうと、クラブ名が表示されるかと思います。右端の象限にぽつんとあるのは、アトレティコ・マドリー。平均36回ものタックル数、クリア数も21.2と表示されます。
また、ドットが集まってごちゃごちゃして見にくい箇所は、ドラッグで切り取ってもらうとフォーカスしてくれるので細かく見ることも出来ます。
こちらは、ボール支配率と平均シュート数のプロット。
右上の凡例のクリックしてもらうと、選択したリーグのプロットを除くこともできますし、ダブルクリックすれば選択したリーグのみのプロットに切り替えることも可能です。
今まではこのような可視化は主に画像で貼り付けていまして、ただ眺めることしかできなかったかと思います。
Plotlyによるグラフだと、マウスオーバーでデータが表示され、グリグリと動かしたり、表示/非表示を切り替えたりと、インタラクティブにデータの可視化を見ることが可能になります。
パス数の分布を各国リーグ毎に箱ひげ図(Box Chart)で可視化しました。
左端スケールにパス数、ドットが各リーグのクラブを表し、箱と箱から伸びるヒゲの形状とがパス数の分布の特徴を表しています。
上下端のドットが最大値・最小値、ヒゲは下が分布全体の5%点、上が95%点、箱は底辺が25%点で上辺が75%点を表します。箱内実線が中央値、点線が平均値です。
ぱっと見、ブンデスリーガとリーグ1は潰れた箱、プレミアリーグとセリエAはやや縦長な箱に見えますが、ヒゲはラ・リーガとリーグ1でやや長めに伸びていて、セリエAとブンデスはヒゲは短め。
分布は様々ながら、中央値はというと各国リーグ軒並み420本前後で揃っています。
ここは面白い一致です。
主要なスタッツを取り込んで、階層型クラスタリングを行うこともできます。
(クラスタリングとはなんぞや?という解説はここでは省きます)
各クラブを枝葉に見立てた樹形図(デンドログラム)に可視化することで、各スタッツの傾向が似ているクラブをリーグをまたいで見比べることが出来ます。
分かりやすいところで言うと、プレミアのマンチェスター・シティとセリエAのナポリが隣り合っていたり、バイエルン・ミュンヘン、パリ・サンジェルマン、バルセロナが隣り合っていたり。
意外に思えるもデータの上では似ているクラブとして、セリエAのフィオレンティーナとブンデスリーガのホッフェンハイム、ラ・リーガのセルタとブンデスリーガのヴォルフスブルクなどといった組み合わせ。
樹形図なので、右の幹から見てどの階層で枝分かれしているかを見てみるのも面白いかと。
今回のデンドログラムでは、バルセロナやレアル・マドリー、バイエルン・ミュンヘンといったチャンピオンズリーグ常連クラブが固まった赤色の枝葉とそれ以外の系統と、大きく2つに分岐しました。
今回はざっとPlotlyでの可視化を試してみました。
私はもっぱらJリーグを見ることが多く、欧州リーグはタイミングが合えばDAZNでLIVE中継している対戦カードを見る程度なのですが、こうしたデータに基づく可視化をもとに、気になるリーグまたはクラブを起点に、クラスタリング結果において似ているクラブや、注目すべき特徴、傾向を見せているリーグの試合を選んで見るということもやってみようかと思いました。
また、Pythonによるデータ加工、Plotlyで描いたグラフを用いて視覚的に傾向や特徴を発見できそうな手応えを感じられたので、6月のワールドカップに向けたエントリやJリーグやジェフ千葉の分析でも今後積極的に活用していこうかと思っています。
そのためにも、Pythonのプログラミングスキルを上げていかないといけませんが...
では、また!