우리흥
손흥민 선수가 요즘 대세이다 보니 나도 손흥민 선수 관련 콘텐츠를 놓칠 수가 없었다. 아스날 팬으로서 토트넘이 잘 나가기를 바라지는 않지만 그래도 손흥민만큼은 같은 한국인으로서 그래도 잘해줬으면 한다. 여하튼 이번 글에서는 손흥민이 이피엘 진출 후 시즌별로 어떠한 스텟을 쌓았는지 파이썬으로 데이터를 가져와보고 시각화해보도록 하겠다. 밑에서 분석한 데이터는 모두 EPL 경기에 한정돼 있다는 점 참고 바란다.
데이터 소스
이번 분석에는 ESPN EPL 사이트에서 데이터를 가져오도록 하겠다. 단순히 공격 포인트 말고 상세 스텟을 분석해보고 싶은데 그런 데이터를 파이썬으로 쉽게 크롤링할 수 있는 사이트를 아직 찾지 못했다. 그래서 이번에는 ESPN 사이트에서 단순 공격 포인트를 가져오도록 하겠다.
www.espn.com/soccer/player/stats/_/id/149945/son-heung-min
아래 코드를 돌리고 난 후 결과물을 확인하면 손흥민이 EPL에 합류한 15/16 시즌부터 19/20 시즌까지의 기록을 확인할 수 있을 것이다. 이번 시즌은 4경기밖에 안 치르다 보니 제외했다.
import pandas as pd
url='https://www.espn.com/soccer/player/stats/_/id/149945/son-heung-min'
tables=pd.read_html(url)
df=pd.merge(left=tables[0],right=tables[1],how='inner',left_on=tables[0].index,right_on=tables[1].index)
df=df.dropna()
df=df.drop('key_0',axis=1)
df['시즌']=df['season'].apply(lambda x:x.split(' ')[0].split('-')[1])
df=df.drop('season',axis=1)
df=df.sort_values(by='시즌',ascending=True)
df=df[df['시즌']!='21']
df=df.reset_index().drop('index',axis=1)
시즌별 경기당 공격 포인트
다음으로는 EPL 시즌별 공격 포인트를 확인해보겠다. 위 데이터에서 경기 수, 골 수 그리고 어시스트 수를 제공하고 있기에 경기당 공격 포인트 개수 구하는 것은 어렵지 않다.
df['points']=(df['G']+df['A'])/df['STRT']
df['points']=df['points'].apply(lambda x: float("{:.2f}".format(x)))
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = 'Malgun Gothic'
plt.rcParams["font.size"] = 16
plt.figure(figsize=(14,7))
plt.bar(df['시즌'],df['points'])
for i in range(len(df)):
plt.text(i,df['points'][i],df['points'][i],fontsize=14, horizontalalignment='center', verticalalignment='bottom')
적응기간으로 보는 첫 시즌만 빼고는 그 이후 꾸준히 뛰어난 모습을 보인 손흥민이다. 다만 월클 클래스까지 손흥민이 오르기 희망하는 팬들 입장에서는 조금 아쉽다. 욕심이라고는 할 수 있지만 최소 경기당 1 공격 포인트를 기록해야 월드 클래스로 갈 수 있지 않을까 생각한다. 다행히 이번 시즌 손흥민은 그런 페이스를 보여주고 있는 부분 고무적이다.
시즌별 슈팅 대비 골 효율
마지막으로는 기록한 슈팅 중에서 골을 얼마큼 기록했는지 슈팅 효율을 알아보고자 한다.
df['goal_sh']=df['G']/df['SH']
plt.rcParams["font.family"] = 'Malgun Gothic'
plt.rcParams["font.size"] = 16
plt.figure(figsize=(14,7))
plt.plot(df['시즌'],df['goal_sh'])
plt.ylim(0,0.2,)
plt.xlabel('시즌')
plt.ylabel('슈팅 대비 골 수')
for i in range(len(df)):
plt.text(i,df['goal_sh'][i],'{:.2f}%'.format(df['goal_sh'][i]*100),fontsize=14, horizontalalignment='center', verticalalignment='bottom')
슈팅 10개 했을 때 1~2개가 골로 이어진다는 의미인데 중거리 슛이 많다는 점을 감안한다면 그렇게 낮은 효율은 아니라고 판단된다.
지금까지 손흥민 기록에 대해 간략히 분석해봤다. 크게 볼 내용은 없다. 다음 시간에는 vs 관련 콘텐츠로 해볼까 생각 중이다.
'문송충의 코딩하기 > EPL 분석 With Python' 카테고리의 다른 글
EPL 분석 - 오바메양 아스날 이적 후 기록한스텟 파이썬으로 분석하기 (0) | 2020.09.24 |
---|---|
Arsenal/아스널 2019-2020 시즌 분석하기 with Python (0) | 2020.09.20 |
파이썬으로 프리미어리그 아스널의 지난 10년 역사 분석하기 (0) | 2020.09.15 |
댓글