본문 바로가기
문송충의 코딩하기/EPL 분석 With Python

손흥민 선수 EPL 시즌별 퍼포먼스를 알아보자 with 파이썬

by 동장군님 2020. 10. 8.
728x90
반응형

우리흥

손흥민 선수가 요즘 대세이다 보니 나도 손흥민 선수 관련 콘텐츠를 놓칠 수가 없었다. 아스날 팬으로서 토트넘이 잘 나가기를 바라지는 않지만 그래도 손흥민만큼은 같은 한국인으로서 그래도 잘해줬으면 한다. 여하튼 이번 글에서는 손흥민이 이피엘 진출 후 시즌별로 어떠한 스텟을 쌓았는지 파이썬으로 데이터를 가져와보고 시각화해보도록 하겠다. 밑에서 분석한 데이터는 모두 EPL 경기에 한정돼 있다는 점 참고 바란다.

 

 

 

데이터 소스

이번 분석에는 ESPN EPL 사이트에서 데이터를 가져오도록 하겠다. 단순히 공격 포인트 말고 상세 스텟을 분석해보고 싶은데 그런 데이터를 파이썬으로 쉽게 크롤링할 수 있는 사이트를 아직 찾지 못했다. 그래서 이번에는 ESPN 사이트에서 단순 공격 포인트를 가져오도록 하겠다.

 

www.espn.com/soccer/player/stats/_/id/149945/son-heung-min

 

Son Heung-Min Stats | ESPN

Latest on Tottenham Hotspur forward Son Heung-Min including latest updated stats on ESPN

www.espn.com

 

아래 코드를 돌리고 난 후 결과물을 확인하면 손흥민이 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')

손흥민 시즌별 EPL 경기당 공격 포인트

적응기간으로 보는 첫 시즌만 빼고는 그 이후 꾸준히 뛰어난 모습을 보인 손흥민이다. 다만 월클 클래스까지 손흥민이 오르기 희망하는 팬들 입장에서는 조금 아쉽다. 욕심이라고는 할 수 있지만 최소 경기당 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')

손흥민 시즌별 EPL 슈팅 효율

슈팅 10개 했을 때 1~2개가 골로 이어진다는 의미인데 중거리 슛이 많다는 점을 감안한다면 그렇게 낮은 효율은 아니라고 판단된다.

 

지금까지 손흥민 기록에 대해 간략히 분석해봤다. 크게 볼 내용은 없다. 다음 시간에는 vs 관련 콘텐츠로 해볼까 생각 중이다.

 

 

728x90
반응형

댓글