개발은 처음이라 개발새발

PL 21/22시즌 경합왕을 찾아라! 본문

축구

PL 21/22시즌 경합왕을 찾아라!

leon_choi 2022. 8. 10. 19:21
반응형

오늘도 축구를 곁들인 판다스 복습을 진행해보도록 하겠습니다. 이번 시간에는 PL 개막을 기념해서 지난 시즌인 21/22시즌의 기록들 중 경합 항목에 대해 어떤 선수들이 좋은 퍼포먼스를 보여줬는지 확인해보겠습니다. 

mport pandas as pd
import numpy as np

df= pd.read_excel('PL2.xlsx',sheet_name='Sheet1')

print(df,'\n')

df1 = df[['league', 'season', 'team',
       'name', 'shirtNumber', 'minsPlayed', 'gameStarted',
       'totalSubOn','duelWon', 'duelLost', 'aerialWon',
       'aerialLost']]

df1 = df1.groupby(['league', 'season', 'team','name', 'shirtNumber']).sum()

df1.reset_index(drop=False, inplace=True)

#그라운드 경합 항목 만들기
df1['groundWon'] = df1['duelWon'] - df1['aerialWon']
df1['groundLost'] = df1['duelLost'] - df1['aerialLost']

#총 경합상황 만들기
df1['totalDuel'] = df1['duelWon']+df1['duelLost']

#총 경기 출장수 만들기
df1['game'] = df1['gameStarted']+ df1['totalSubOn']
print(df1,'\n')

이번에도 groupby 함수를 통해 누적 스탯을 만들었는데요. groupby로 묶이게 되면 groupby를 통해묶인 컬럼들이 모두 인덱스가 되기 때문에 이후 원활하게 계산을 진행하기 위해서는 묶인 컬럼들을 다시 풀어주는 reset_index를 해줘야 합니다. 이번에 확인해볼 데이터는 경기당 경합과 경합 성공%입니다. 

 

#총 경합 상황이 100회 이상인 선수만 추리기
df2 = df1[df1['totalDuel'] > 100].sort_values(by=['totalDuel'], ascending=False)

#경기당 경합 항목 계산
df2['per_game_duel'] = round(df2['duelWon'] / df2['game'],2)
df2['per_game_ground'] = round(df2['groundWon'] / df2['game'],2)
df2['per_game_aerial'] = round(df2['aerialWon'] / df2['game'],2)

# 그라운드/공중볼 경합 성공% 계산
df2['ground%'] = round((df2['groundWon'] / (df2['groundWon'] + df1['groundLost']))*100,2)
df2['aerial%'] = round((df2['aerialWon'] / (df2['aerialWon'] + df1['aerialLost']))*100,2)
print(df2)
print('\n')

#20경기 출장 기준 그라운드 경합 10위
df3 = df2[df2['game'] > 20].sort_values(by=['per_game_ground'], ascending=False, ignore_index=True)
print(df3[['team','name','game','minsPlayed','per_game_ground','ground%']].head(10))
print('\n')

#20경기 출장 기준 공중볼 경합 10위
df4 = df2[df2['game'] > 20].sort_values(by=['per_game_aerial'], ascending=False, ignore_index=True)
print(df4[['team','name','game','minsPlayed','per_game_aerial','aerial%']].head(10))

판다스에서는 특정 컬럼을 가지고 조건을 입혀 필터링을 할수도 있습니다. 저는 척어도 총 경합 상황이 100회이상인 선수들로 1차 필터를 했고 이후 경기 출장수가 선발+후보 출장을 합쳐 20경기 이상인 선수들로 결과를 도출했습니다. 우선 경기당 지상 경합수 탑 10 선수들의 순위와 성공%을 보겠습니다.

경기당 그라운드 경합수 1위 윌프리드 자하

                      team              name  game  minsPlayed  per_game_ground  ground%
0           Crystal Palace           W. Zaha    33        2761             6.55    47.06
1              Aston Villa        J.  McGinn    35        3092             6.54    59.02
2         Newcastle United  A. Saint-Maximin    35        2809             6.03    49.30
3  Wolverhampton Wanderers      R. Aït Nouri    23        1827             5.48    55.26
4                  Burnley         D. McNeil    38        3112             5.37    54.99
5              Southampton  K. Walker-Peters    32        2632             5.25    60.22
6           Crystal Palace      C. Gallagher    34        2851             5.18    48.22
7   Brighton & Hove Albion       Y. Bissouma    26        2116             4.96    59.72
8                  Everton       Richarlison    30        2526             4.93    51.03
9  Wolverhampton Wanderers     Nélson Semedo    25        2137             4.84    55.25

경기당 공중볼 경합수 1위 에단 피녹

               team          name  game  minsPlayed  per_game_aerial  aerial%
0         Brentford    E. Pinnock    32        2697             4.47    66.51
1         Brentford      I. Toney    33        2908             4.45    55.89
2           Burnley  J. Tarkowski    35        3107             4.37    70.51
3      Leeds United     L. Cooper    21        1815             3.90    65.08
4   West Ham United     T. Souček    35        3062             3.83    48.73
5         Liverpool      J. Matip    31        2790             3.52    68.12
6    Crystal Palace    C. Benteke    25        1136             3.44    60.14
7         Liverpool   V. van Dijk    34        3060             3.44    77.48
8  Newcastle United  J. Lascelles    26        2055             3.42    74.17
9    Leicester City    Ç. Söyüncü    28        2498             3.29    65.71

네 이렇게 지난 시즌의 그라운드와 공중볼 경합 탑 10 선수들을 확인했습니다. 개인적으로 인상적이었던 선수는 공중볼 경합 1위에 오른 브랜트포드의 센터백 에단 피녹 선수입니다. 지난 시즌 브랜트포드는 승격팀으로서 굉장히 인상적인 모습을 남겼는데요. 피녹 선수 역시 1분 리그에서 경기당 4.47개의 달하는 공중볼 경합을 성공했고 성공 비율 역시 66.5%로 아주 인상적이었습니다. 

 

이렇게 경합 기록들을 살펴봤는데요. 다음에 기회가 된다면 태클, 크로스 지표에 대해서도 한번 알아보는 시간을 가져보도록 하겠습니다. 

반응형