11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

オークファングループAdvent Calendar 2019

Day 13

python初心者がサッカーのデータで遊んでみた

Last updated at Posted at 2019-12-12

#目的
今回はpython初心者がデータ分析の勉強のため難しくなく、
興味を持ちやすいテーマ!サッカー(勝手なイメージ)であれこれしてみます

特に、個人的にはボールの支配率が高いチームは強いチームという認識がありますが
そういうチームは上位にいきやすい?っていうのも検証したいと思います

#データの準備
サッカーのデータを探してたところ、kaggleに2018年ロシアW杯のデータがありました。
https://www.kaggle.com/mathan/fifa-2018-match-statistics/version/20# からcsvをダウンロードする。

#データの概要

import pandas as pd
data = pd.read_csv('/Users/hwang.taejun/myworkspace/FIFA 2018 Statistics.csv')
print(data)

すると、
スクリーンショット 2019-12-11 18.33.47.png

W杯の開幕戦から決勝までの試合データが入ってます
2行ずつ1試合になってるので前処理が必要かも?

#中身をみてみよ

print(data['Team'])

スクリーンショット 2019-12-11 18.47.31.png

print(data['Goal Scored'].mean()) #ゴールの平均
1.3203125
print(data['Goal Scored'].sum()) #ゴールの合計
169

dataframeの中でカラムを指定するとそのカラムの数値がわかります
全試合のゴールの合計は169って言ってますね

##チームごと
まず、優勝したフランスのデータだけ絞ってみます。indexもチームに変えましょう

data.set_index('Team').loc['France'].mean()

スクリーンショット 2019-12-11 19.01.53.png
フランスだけの結果がかえってきました
データをみると1試合平均2ゴール、ボール支配率は平均約48バーセントですね

そうしたら、チームごとだしてみましょう

team = []
for nation in data.set_index('Team').index:
    if nation not in team:
         team.append(nation)
    team_summary = {}
    for nations in range(len(team)):
         team_summary[team[nations]] = data.set_index('Team').loc[team[nations]].mean()

チームが重複している形なので除外しましょう(1試合に2行になってるから)
data.set_index('Team').indexの重複するチームを除外するfor文を回します
そうすると32チーム揃えることができる

重複除外後、チームごとのデータがわかるfor文を回すと
結果、チームごとのデータがかえってきます
スクリーンショット 2019-12-11 20.13.49.png

上記の結果を使って
一番ゴールをきめたチームとボールの支配率が一番高いチームとかだしてみました

goals={}
possession={}
for stats in range(len(team)):
    goals[team[stats]] = team_summary[team[stats]][0]
    possession[team[stats]] = team_summary[team[stats]][1]
print(max(goals, key=goals.get))
'Belgium'
print(max(possession, key=possession.get))
'Spain'

maxは一番大きい値をだしてくれる。一番ゴールをきめたチームはベルギー
ボール支配率はスペインだそうです!
この二つ以外にもカラム名を使っていろんな結果が見れます

次は気になっていたボールの支配率が高いチームは上位にいきやすいかみてみましょう
上記のdict型のposseissonを使って棒グラフでplotしてみると?

import matplotlib.pyplot as plt
values = possession.values()
keys = possession.keys()

plt.bar(keys,values)
plt.show()
スクリーンショット 2019-12-12 17.43.21.png チームごとのボール支配率がかえってきました。

1.トップ10でベスト8に入ったチームは3チームしかない
2.予選落ちのドイツとサウジアラビアがトップ5に入ってる
3.ベスト8に入ったロシア、スウェーデンは30位と28位
4.優勝チームのフランスは32チームの中で20位、3位のベルギーは12位
5.トップ5のスペイン、アルゼンチン、スイスはベスト16で落ちたチーム

ってことはボールの支配率は決勝トーナメントに進出したチームとあまり関係がないように見えますね。以外すぎる...

#さいごに
pythonで分析の練習のために筆者が好きなサッカーのデータであれこれやってみました
コードをみると初心者ってすぐバレると思いますが一通りなんかかきました 笑

このデータでもっと面白い分析ができると思ったけど今回はこれくらいにしておきます・・・
こういう練習を重ねてもっといい記事をまた今度書いてみます!

11
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?