Arsenal in 2019-2020
프리미어리그 출범 이후 아스널 역사상 거의 최악의 시즌이라고 볼 수 있는 2019-2020 시즌 아스널을 파이썬으로 분석해보고자 한다. 감독이 한 시즌 3명이었고, 주장도 쟈카에서 오바메양으로 바뀐 아주 변화무쌍한 시즌이었던 만큼 꽤 의미 있는 분석 내용이 있을 것 같다. 이번에도 FBref 사이트에서 데이터를 가져와 분석할 예정이며, 분석 내용은 아래와 같다. 데이터가 많지 않아 간단한 분석만 하려고 한다.
-
포메이션 별 경기 수
-
시즌에 주장 완장을 찬 선수 리스트
-
홈/어웨이 경기 결과
-
볼 점유율에 따른 경기 결과
Data Source
fbref라는 축구 통계 사이트를 활용하겠다. 아래 코드에서 df 변수를 출력하면 19-20 시즌 전체 경기 결과를 확인할 수 있다.
fbref.com/en/squads/18bb7c10/2019-2020/Arsenal-Stats
import pandas as pd
tables=pd.read_html('https://fbref.com/en/squads/18bb7c10/2019-2020/Arsenal-Stats')
df=tables[1]
포메이션
작년 54경기 동안 어떤 포메이션을 가장 많이 사용했는지 확인해보겠다. 코드는 간단하다.
#데이터 전처리
df['Formation']=df['Formation'].str.replace('4-4-2◆','4-4-2')
form=pd.DataFrame(df.groupby('Formation').count()['Result'])
games=form.sum().values[0]
form['share']=form['Result']/games
#데이터 시각화
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = 'Malgun Gothic'
plt.rcParams["font.size"] = 16
plt.figure(figsize=(16,8))
plt.pie(form.share,autopct='%0.2f%%')
plt.title('포메이션 사용 비중')
plt.legend(form.index)
아르테타의 3-4-3 인상이 강해서 그런지 분석 전에는 당연히 3-4-3 전출에 사용 비중이 가장 많은 줄 알았는데 분석 결과로는 에메리의 4-2-3-1이 가장 많았다. 수비가 불안한 아스널이 포백을 쓴다? 왜 전반기 성적이 좋지 않은지 알 수 있을 것 같다. 아스널의 3백 전환은 불가피한 결정이다.
Captian/아스널 주장
그다음으로 아스널에서 주장으로 선수별 경기 수 비중을 봤다. 초반 쟈카가 주장으로 나오다가 팬들과의 그 사건 이후 오바메양이 주장으로 거의 모든 경기에 나섰다고 보면 된다. 특이한 점은 외질이 주장으로 나선 경기가 있는데 이 경기는 카라바오 컵 경기로 로테이션 경기 상황이었다. 그리고 모든 아스널 팬들이 그리워하는 나초 몬레알도 주장으로 나선 경기가 있다.
cap=pd.DataFrame(df.groupby('Captain').count()['Result'])
cap['share']=cap['Result']/games
plt.rcParams["font.family"] = 'Malgun Gothic'
plt.rcParams["font.size"] = 16
plt.figure(figsize=(16,8))
plt.pie(cap.share,autopct='%0.2f%%')
plt.title('주장으로 나선 경기 비중')
plt.legend(cap.index)
홈/어웨이 경기 결과
다음으로는 홈/어웨이 경기별 승률을 보고자 한다. 원정 승률이 33%로 처참하지만 홈경기 승률도 56%에 불과한 점이 더 큰 문제이다. 원정 경기는 그렇다 치더라도 홈에서 이렇게나 많은 경기를 놓치면 좋은 성적은 당연히 불가능하다.
df2=pd.get_dummies(df, columns = ['Result'])
df_hw=df2.groupby('Venue').sum()[['Result_W','Result_D','Result_L']]
df_hw['Total_Games']=df_hw['Result_W']+df_hw['Result_D']+df_hw['Result_L']
df_hw['W']=df_hw['Result_W']/df_hw['Total_Games']
plt.rcParams["font.family"] = 'Malgun Gothic'
plt.rcParams["font.size"] = 16
plt.figure(figsize=(16,8))
plt.bar(df_hw.index, df_hw['W'])
for x, y in enumerate( list(df_hw['W']) ):
plt.text(x, y, '{:.2f}%'.format(y*100), fontsize=15, color='tab:red',
horizontalalignment='center', verticalalignment='bottom')
plt.title('홈원정 승률')
볼 점유율
분석 전에는 워낙 아스날이 볼 점유를 중요시하는 팀이다 보니당연히 볼 점유율이 높으면 승률도 당연히 같이 높을 것으로 생각했지만, 결과는 달랐다. 오히려 볼 점유가 낮은 경기에서 승률이 조금 높은 점을 확인할 수 있었다.
df2['poss_w']=df2['Poss'].apply(lambda x: '>=50%' if x>=50 else '<50%' )
dfp=df2.groupby('poss_w').sum()[['Result_W','Result_D','Result_L']]
dfp['Total_Games']=dfp['Result_W']+dfp['Result_D']+dfp['Result_L']
dfp['W']=dfp['Result_W']/dfp['Total_Games']
plt.rcParams["font.family"] = 'Malgun Gothic'
plt.rcParams["font.size"] = 16
plt.figure(figsize=(16,8))
plt.bar(dfp.index, dfp['W'])
for x, y in enumerate( list(dfp['W']) ):
plt.text(x, y, '{:.2f}%'.format(y*100), fontsize=15, color='tab:red',
horizontalalignment='center', verticalalignment='bottom')
plt.ylim(0,1,0.2)
plt.title('점유율별 승률')
아스널 작년 시즌에 대해 분석해보았다. 너무 변화도 많고 분석 결과도 전반적으로 부정적이라서 올해 시즌에는 이런 결과가 안 나오기를 바란다.
'문송충의 코딩하기 > EPL 분석 With Python' 카테고리의 다른 글
손흥민 선수 EPL 시즌별 퍼포먼스를 알아보자 with 파이썬 (1) | 2020.10.08 |
---|---|
EPL 분석 - 오바메양 아스날 이적 후 기록한스텟 파이썬으로 분석하기 (0) | 2020.09.24 |
파이썬으로 프리미어리그 아스널의 지난 10년 역사 분석하기 (0) | 2020.09.15 |
댓글