-
[20/21 NBA 시즌 정리] - NBA 선수 분석 3탄 with Python & Basketball ReferenceData Analysis/NBA 2021. 6. 19. 21:28
지난 글에 이어서 계속해서 NBA 선수들 분석하는 글을 작성하도록 하겠다. 이번 포스팅에서는 이번 시즌 All NBA Team에 뽑힌 15명 선수들의 스텟을 시각화해서 비교하겠다. 오늘 데이터도 역시 Basketball Reference에 있는 데이터를 사용하도록 하겠다.
1. 데이터 가져오기
All NBA Team에 뽑힌 15명 선수들의 이번 시즌 1차, 2차 스텟을 가져오도록 하겠다.
from basketball_reference_web_scraper import client import pandas as pd df=pd.DataFrame(client.players_season_totals(season_end_year=2021)) df_all_nba=df[df['name'].str.contains('Stephen Curry') | df['name'].str.contains('Luka Dončić') | df['name'].str.contains('Damian Lillard') | df['name'].str.contains('Chris Paul') | df['name'].str.contains('Bradley Beal')| df['name'].str.contains('Kyrie Irving')| df['name'].str.contains('LeBron James') | df['name'].str.contains('Giannis Antetokounmpo')| df['name'].str.contains('Kawhi Leonard')| df['name'].str.contains('Nikola Jokić') | df['name'].str.contains('Julius Randle')| df['name'].str.contains('Joel Embiid')| df['name'].str.contains('Jimmy Butler') | df['name'].str.contains('Paul George')| df['name'].str.contains('Rudy Gobert') ] df_all_nba['avg.PTS']=df_all_nba['points']/df_all_nba['games_played'] df2=pd.DataFrame(client.players_advanced_season_totals(season_end_year=2021)) df2_all_nba=df2[df2['name'].str.contains('Stephen Curry') | df2['name'].str.contains('Luka Dončić') | df2['name'].str.contains('Damian Lillard') | df2['name'].str.contains('Chris Paul') | df2['name'].str.contains('Bradley Beal')| df2['name'].str.contains('Kyrie Irving')| df2['name'].str.contains('LeBron James') | df2['name'].str.contains('Giannis Antetokounmpo')| df2['name'].str.contains('Kawhi Leonard')| df2['name'].str.contains('Nikola Jokić') | df2['name'].str.contains('Julius Randle')| df2['name'].str.contains('Joel Embiid')| df2['name'].str.contains('Jimmy Butler') | df2['name'].str.contains('Paul George')| df2['name'].str.contains('Rudy Gobert') ]
2. 평균 득점 대비 슈팅 효율 비교
경기당 평균 득점 대비해서 얼마나 좋은 슈팅 효율을 보이는지 한번 시각화해봤다.
NBA Top 15명 선수들을 중에서도 슈팅에서는 스테판 커리가 압도적으로 뛰어난 선수임을 아래 그래프에서 확인할 수 있다. 경기당 평균 득점이 가장 높은 선수이면서 동시에 가장 좋은 슈팅 효율을 보이고 있다. 브래들리 빌, 데미안 릴라드 아무리 요새 득점력이 물 올랐다고는 하지만 역시 슈팅 부분에서는 스테판 커리다.
tb=pd.merge(left=df_all_nba[['name','avg.PTS','made_field_goals']], right=df2_all_nba[['name','true_shooting_percentage']],how='inner', left_on=df_all_nba['name'],right_on=df2_all_nba['name']).drop(['key_0','name_y'],axis=1) tb.columns=['name','AVG PTS','made_field_goals','TS%'] import plotly.express as px fig = px.scatter(tb, x="AVG PTS", y="TS%",size="made_field_goals", color="name", hover_name="name", log_x=True, size_max=60) fig.show()
3. 볼 소유 대비 턴오버 비교
다음으로는 볼을 소유하면서 얼마나 실책 없이 효율적으로 공을 핸들링 하는지 볼 소유 Usage Rate와 턴오버 수치를 비교하면서 가장 뛰어난 선수를 찾아보도록 하겠다.
돈치치 Usage rate, 경기당 턴오버 수 모두 압도적으로 많은 점을 확인할 수 있다. 댈러스가 높은 곳으로 올라가지 못한 이유가 바로 돈치치에 대한 너무 높은 의존도이다.
df_all_nba['avg_turnover']=df_all_nba['turnovers']/df_all_nba['games_played'] tb2=pd.merge(left=df_all_nba[['name','avg_turnover']], right=df2_all_nba[['name','usage_percentage']],how='inner', left_on=df_all_nba['name'],right_on=df2_all_nba['name']).drop(['key_0','name_y'],axis=1) tb2.columns=['name','avg_turnover','usage_percentage'] fig = px.scatter(tb2, x="usage_percentage", y="avg_turnover", color="name", hover_name="name", log_x=True, size_max=60) fig.show()
'Data Analysis > NBA' 카테고리의 다른 글