データ分析

【Sorare攻略大作戦】Jリーグの全選手データを収集して分析する【Pythonでデータ分析】

2021年12月26日

【Sorare攻略大作戦】Jリーグの全選手データを収集して分析する【Pythonでデータ分析】

こんにちは。TATです。

今日のテーマは「Jリーグの全選手データを収集して分析する」です。

 

前回の記事では、試合データを収集して分析してみました。

関連
【Sorare攻略大作戦】Jリーグの試合データを収集して可視化してみる【Pythonでデータ分析】
【Sorare攻略大作戦】Jリーグの試合データを収集して可視化してみる【Pythonでデータ分析】

続きを見る

 

本記事はこの続きです。

チームの次は選手です。

 

この分析の目的は、SorareというNFTを活用したサッカーのカードゲームを攻略するためです。

こちらが僕のアカウントです。始めたばかりなので雑魚ですw

ちなみにこちらのリンクから登録してカードをゲットするとお互いに無料カードがもらえるのでお得です。

 

このゲームでは5人の選手でチームを編成して競い合いますが、その結果はなんと現実世界の試合結果で決まります。

各選手の活躍がスコア化されて、それらのスコアで争います。

実際の試合結果がスコアに影響を与えるので、選手の応援にも力が入ります。

上位に入ることができれば賞金(イーサリアムでもらえます)とかレアカードがもらえたりします。

 

ゲームで勝つために重要なのが選手選びです。当たり前ですね。

ただ、ゲームの仕組みを理解すると、ただひたすらにスーパースター選手を集めればいいというものでもありません

スコアに影響するのは、ゴールやアシストはもちろん、ファウルやイエローカード、パスミスなんかも考慮されます。

機械的にスコア化される仕組みになっているので、そこまで有名な選手ではなくても結構高いスコアをはじき出すこともあります。

 

基本的には、試合に出場していることが大前提です。

出場なしだと点数もありません。

よって、スーパースターを5人集めるよりかは、確実に試合に出ている選手を5人集める方が大事になります。

Jリーグも参加しており、日本人選手も獲得可能です。

 

このような仕組みを知れば、僕のやるべきことは明確です。

データ分析してコスパ良い選手探そうぜということになりますw

 

前回はチームにフォーカスして分析しましたが、今回は選手データを収集して分析します。

良き選手を発掘します。

 

Sorareを詳しく見る

 

 

【Sorare攻略大作戦】Jリーグの全選手データを収集して分析する【Pythonでデータ分析】

【Sorare攻略大作戦】Jリーグの全選手データを収集して分析する【Pythonでデータ分析】

データはスクレイピングでサクッと収集

まずはデータの準備です。

これには、Pythonのスクレイピングという技を駆使します。

これでWeb上にあるデータを収集します。

ここではコードの細かい解説には触れずに、どんな感じでやったのか、その流れの紹介にとどめます。

 

ソースはJリーグJLEAGUE.JPです。Jリーグの公式サイトらしいです。

 

ここの右上にある「クラブ」をクリックするとチーム一覧が見れます。

J3までのチームが揃っています。

 

例としてコンサドーレ札幌の選択してみます。

少しスクロールすると、選手名鑑というタブがあります。

 

これを選択すると選手一覧が表示されます。

 

各選手をクリックするとさらに詳細データを見ることができます。

色々なデータを見ることができますが、今回注目したのはこの統計データです。

ここには今季の統計データがまとまっています。

 

表示される項目は選手のポジションによって異なります。

今回は、ここで表示されるデータを根こそぎとります。

 

データ取得の流れとしてはこんな感じです。

① チーム一覧データを取得(各チームのURLを取得)

② 各チームに対して、選手一覧データを取得(各選手のURLを取得)

③ 各選手の統計データを取得

④ ②と③を全チーム、全選手に繰り返す

⑤収集したデータをまとめる

 

②で収集したデータがこんな感じです。

 

③でこのurlにアクセスして統計データを収集します。

取得可能はデータは全てとります。

 

全選手分のデータが集まったら合体して、②と③で取得したデータを結合します。

その後は数値データを変換したり整形作業をすれば完成です。

最終的に完成したデータがこちらです。

 

カラム数が49になってしまいました。

ちょっと多すぎますが頑張って分析していきます。

 

Sorareを詳しく見る

 

データ全体の概要を把握する

毎度おなじみで恐縮ですが、分析をするにはまずはデータ全体の概要を把握します。

これにはdescribe関数とかが便利です。

ただ今回はカラム数が多いので、この記事での紹介は割愛しますw

もう少し簡潔にデータの概要を見ていきます。

 

リーグ、チームごとの所属選手数

まずはリーグやチームごとの所属選手数です。

 

今回収集した選手データは全部で1,873人です。

J1で670人、J2で730人、J3で473人です。

 

チームごとでも見ていきます。

ここではJ1に所属するチームに絞ります。

 

だいたい30人前後ですね。

平均で33.5人、最小がコンサドーレ札幌の28人、最大がFC東京の39人です。

 

ポジションごとの人数を確認する

次にポジションごとの選手数を見ていきます。

 

まずは全リーグ合算で見てみます。

 

ご覧の通り、MFが最も多く、GKが最も少ないです。

 

次にリーグごとに分けてみてみます。

 

傾向に変わりはありません。

DFとMFがJ2で多いですね。

 

Sorareを詳しく見る

 

出場試合数の多い選手をチェックする

次に、出場試合数の多い選手をチェックします。

Sorareで勝つには、スーパースター選手よりも、継続的に試合に出て安定した活躍ができる選手の方が良かったりします。

出場がないと点数もつかないので、試合に出るのは最低条件です。

 

ということで出場試合数の多い選手を見ていきます。

人数が多すぎるのでここではJ1に絞ります。

 

ポジションごとに出場試合数の多い選手を見る

まずはポジションごとに見ていきます。

各ポジションごとに出場試合数の多い選手トップ10を集計しました。

()内は所属チームと出場試合数を表しています。

 

この辺りの選手をSorareで獲得することができれば、試合に出る可能性が高いので点数が取れる確率も高いです。

ただし、点数の良し悪しについては活躍次第でいくらでも変わるので注意が必要です。

安定した活躍をできる選手を探すのが重要になってきます。

 

ちなみにこのランキングにいる選手でいうと、柿谷曜一朗選手はSorareで先日ゲットできましたw

 

チームごとに出場試合数の多い選手を見る

次にJ1のチームごとに見ていきます。

ポジションはごちゃ混ぜにして各チームで出場試合数が多い選手トップ3を出してみます。

()内はポジションと出場試合数を表しています。

 

ベテランの選手が多い感じがします。

ポジションとしてはMFが多い結果となりました。

 

Sorareを詳しく見る

 

J1で各ポジションごとに最強選手を探し出す

最後に、J1で各ポジションにおける最強選手を探してみようと思います。

何を持って最強というのかは定義がなかなか難しいところです。

 

ここではシンプルにして、ポジションごとに考慮するデータを決め、各データごとの偏差値を算出します。

各データの偏差値を全て合算したものを総合値として比較してみようと思います。

また、Sorareでは試合に出場してなんぼなので、出場試合数の偏差値に対しては係数として2倍します。

 

そのほかは1倍です。

よって、出場試合数が多い選手の方が評価されやすくなります。

 

GK部門

GKでは以下のデータを対象とします。

  • 出場試合数
  • 1試合平均プレー数
  • 1試合平均セーブ数
  • セーブ率(ペナルティエリア内)
  • セーブ率(ペナルティエリア外)

 

これは僕の独断で決めました。

この他にもロングパス成功率とか空中戦勝率とかキャッチ率とか、使えそうなものはありましたがなるべくシンプルにします。

 

各データの偏差値をそれぞれ算出して、それらの合算地を総合値として競います。

出場試合数は2倍します。

 

それではGKの計算結果より上位10選手を紹介します。

 

Sorareではこの辺りの選手を狙いたいところです。

ただし、ベガルタ仙台のストイシッチ選手だけは出場試合数が少ないので避けた方がいいですね。

 

DF部門

お次にDFです。

DFでは次のデータを考慮しました。

出場試合数
1試合平均プレー数
1試合平均敵陣パス数
1試合平均自陣パス数
ロングパス成功率
アシスト数
1試合平均チャンスクリエイト数
タックル成功率
空中戦勝率
1試合平均インターセプト
1試合平均パス数

 

上記のデータで計算した結果がこちらです。

 

1位は川崎フロンターレの山根選手ですが、2位以下には横浜F・マリノスの選手が占領していることがよくわかります。

 

MF部門

お次にMF部門です。

ここで考慮したデータは以下の通りです。

出場試合数※2
1試合平均プレー数 ※1
今季得点数
1試合平均敵陣パス数
1試合平均自陣パス数
ロングパス成功率
アシスト数
1試合平均チャンスクリエイト数 ※2
タックル成功率
空中戦勝率
1試合平均インターセプト
1試合平均パス数

 

DF部門に今季得点数を追加しました。

結果がこちらです。

 

1位はヴィッセル神戸の山口蛍選手です。

サガン鳥栖の選手も2人入ってますね。

 

FW部門

最後にFWです。

FWは点を取ってなんぼの世界なので、得点関連のデータを多く入れました。

ポイント

出場試合数
1試合平均プレー数
今季得点数
今季部位別得点(左足得点数)
今季部位別得点(右足得点数)
今季部位別得点(ヘディング得点数)
今季部位別得点(その他部位得点数)
現所属チーム内での得点割合
1試合平均シュート数
シュート決定率
1試合平均敵陣パス数
1試合平均自陣パス数
ロングパス成功率
アシスト数
1試合平均チャンスクリエイト数
1試合平均パス数

 

結果がこちらです。

 

1位は横浜F・マリノスの前田大然選手です。

攻撃力の高い横浜F・マリノスと川崎フロンターレの選手が4位までを独占する結果となりました。

この辺りの選手はSorareでも結構価格が高騰しています(涙)

そしてFWのトップ10は外国人選手が多いですね。カタカナばっかりw

 

ここで紹介した選手をうまくゲットできるとSorareでも安定的に50点以上をキープしつつ、何試合に1回かは大活躍して高得点が狙える可能性が十分にあります。

データを活用してうまく選手を発掘していけたら楽しいですね。

 

これ以上、突き詰めると記事がめっちゃ長くなりそうなので、今日はここら辺で終わろうと思います。

 

Sorareを詳しく見る

 

データ分析にはPythonが最適です。

本記事で紹介した分析は全てPythonで行なっています。

Pythonを使うと短いコードでわりと簡単にデータの収集や分析をすることができ、Webスクレイピングやデータ分析、AI関連に強くて、世界中で人気を集めている言語です。

すっきりとしたコード体系で、誰でもきれいなコードが書けるような設計になっています。

過去の記事では、データ分析としてPythonをご紹介している記事や、Pythonでできることをまとめたものがありますので、もしPythonにご興味があれば合わせてご覧ください。

僕自身も社会人になってからPythonを独学しました。それくらい学びやすい言語でもあります。

【いますぐ始められます】データ分析をするならPythonが最適です。【学習方法もご紹介します!】
【人気上昇中】今人気のプログラミング言語「Python」は何ができるのか?できることまとめます【転職でも有利です】

 

\30日返金保証/

Udemyを詳しく見る

セール中なら90%オフとかで購入可能です!

 

まとめ

いかがでしたでしょうか。

ここでは「Jリーグの全選手データを収集して分析する」というテーマでお話しました。

 

SorareというNFTを活用したサッカーのカードゲームを攻略するため、というくだらない動機で始めた今回の分析でしたがなかなか面白い結果見えてきました。

こういった分析結果を考慮した上で、Sorareで獲得するべき選手を効率的に発掘していけたら楽しいですね。

 

次はU23の若手選手に絞って分析をしてみようかなと思います。

SorareにはU23限定の試合もあるので、ここでいい成績を出すためにまたデータ弄ります。

 

とりあえず今回はここまでとします。

最後まで読んでくださり、ありがとうございました。

 

ちなみに過去にはJリーグのチームを分析した記事もあります。ご興味あれば合わせて読んでくださると嬉しいです。

関連
【Sorare攻略大作戦】Jリーグの試合データを収集して可視化してみる【Pythonでデータ分析】
【Sorare攻略大作戦】Jリーグの試合データを収集して可視化してみる【Pythonでデータ分析】

続きを見る

 

またこちらが僕のSorareアカウントです。始めたばかりなので雑魚ですが、これから頑張って育てていこうと思います。

Sorareを詳しく見る

 

おすすめPython学習法

Udemy:セール中なら90%オフで購入可能。豊富なコースから選べる!

データミックス:Pythonとビジネスについて学べる!起業したい方にもおすすめ!

SAMURAI TERAKOYA:月額2,980円〜利用できるコスパ最強スクール!

 

-データ分析
-, ,

© 2023 気ままなブログ