-
2020년 ~ 2021년 시즌 NBA 선수 분석 with Python & Basketball Reference.comData Analysis/NBA 2021. 6. 15. 22:34
이번 포스팅에서는 2020년 ~ 2021년 NBA에서 뛴 선수들에 대해 간략히 파이썬으로 분석하고자 한다. NBA.com에서 데이터를 가져올 수는 있겠지만 해당 사이트에서는 크롤링을 차단하고 있어서 NBA 통계 정보를 제공하고 있는 Basketball Reference 내에 있는 데이터를 사용하도록 하겠다.
pip install basketball_reference_web_scraper를 하면 Basketball Reference 사이트에서 NBA 선수들 관련된 데이터를 가져올 수 있다.
1. 20/21 NBA 시즌 선수 리스트 가져오기
20/21 NBA 시즌 총 540명의 NBA 선수가 코트를 밟았다. 아래 테이블과 같이 선수 이름뿐만 아니라 소속 팀, 포지션, 나이 그리고 이번 시즌 스텟까지 확인할 수 있다.
from basketball_reference_web_scraper import client import pandas as pd data=pd.DataFrame(client.players_season_totals(season_end_year=2021)) data=data.drop_duplicates('name',keep='last')
2. 20/21 시즌 NBA 선수 연령별 분포도 히스토그램
20대 초중반 선수들이 NBA에서 가장 많이 포진되어 있는 점을 확인할 수 있다. 유독 눈에 띄는 점이 40세에도 아직 NBA에 뛰는 선수들이 있는데 바로 마이애미 히트의 프랜차이즈 스타 유도니스 하슬렘이 그 주인공이다. 르브론 제임스와 카멜로 앤써니의 나이도 무려 36살로 NBA 현역 플레이어 중 나이로도 벌써 Top 10 안에 들고 있다.
import plotly.express as px fig = px.histogram(data, x="age",title="Age Distribution of NBA Players") fig.show()
3. 2010 vs 2021 NBA 시즌 포지션별 선수 분포도 비교
포지션별 선수 분포도 비교를 통해서 10년간 NBA 트렌드가 변화했는지 확인해보도록 하겠다.
아래 그래프를 보면 알 수 있듯이 2010년만 해도 센터가 가장 많았는데 2021년 시즌에는 슈팅가드가 가장 많이 포진되어 있는 점을 확인할 수 있다. 센터의 중요성이 하락하고 3점이 그 어느 때보다 중요해진 만큼 슈팅가드를 팀들이 가장 많이 영입하고 있는 것으로 추정된다.
data['positions']=data['positions'].apply(lambda x:x[0]) data['positions']=data['positions'].apply(lambda x:str(x).replace('Position.','')) data_2010=pd.DataFrame(client.players_season_totals(season_end_year=2010)) data_2010=data_2010.drop_duplicates('name',keep='last') data_2010['positions']=data_2010['positions'].apply(lambda x:x[0]) data_2010['positions']=data_2010['positions'].apply(lambda x:str(x).replace('Position.','')) df_10=pd.DataFrame(data_2010.groupby(['positions']).count()['name']) df_21=pd.DataFrame(data.groupby(['positions']).count()['name']) df_10['Year']='2010' df_21['Year']='2021' df_10_21=pd.concat([df_10,df_21],axis=0).reset_index() fig = px.bar(df_10_21, x="positions", y="name", color='Year', barmode='group', height=400,title='Position Distribution comparison between 2010 and 2021') fig.show()
4. 2021 NBA 시즌 철강왕
올 시즌 가장 많이 뛴 선수는 누구인지 확인해봤더니 전혀 놀랍지 않다. 선수 생명을 갉아먹는 것으로 유명한 톰 티보듀 감독 밑에서 뛰고 있는 뉴욕 닉스의 줄리어스 랜들과 RJ 바렛이 가장 많은 타임을 소화했다.
iron_players=data.sort_values(by='minutes_played',ascending=False).head(10) fig = px.bar(iron_players, x='name', y='minutes_played') fig.show()
5. 2021 NBA 시즌 자삥왕
다음으로 내가 NBA 경기 시정하면서 가장 싫어하는 자유투를 누가 가장 많이 뜯어냈는지 자삥왕을 알아보도록 하겠다.
하든이 부상으로 많은 경기를 소화 못해서 그런지 올해 자삥왕의 타이틀은 그리스 괴인 야니스 아테토쿤보가 가져갔다. 그다음으로 조엘 엠비드, 트레 영, 자이온 윌리엄슨이 가져갔는데 이 중에서 가장 꼴 보기 싫은 선수가 바로 트레 영이다. 트레 영 경기를 보면 정말로 하든 못지않게 교묘한 방법으로 자유투를 가져가는데 정말 이걸 보면 농구가 아닌 듯싶다.
ft_men=data.sort_values(by='attempted_free_throws',ascending=False).head(10) fig = px.bar(ft_men, x='name', y='attempted_free_throws') fig.show()
6. 2021 NBA 시즌 자유투 슛 고자
다음으로 누가 자유투를 가장 못 쏘는지 자유투 시도 횟수 100회 이상인 선수들 중에서 찾아보도록 하겠다. 분석하기도 전에 누가 나올지 예상이 된다.
스티브 아담스, 비욤보, 야콥 퍼들, 아치우와, 자레드 밴더빌트, 클린트 카펠라 등 역시나 빅맨 들이 상위권에 포진되어 있는데 역시 그 이름도 함께 포함되어 있다. 바로 슛 하면 떠오르는 그 선수 필라델피아 세븐티식서스의 벤 시몬스다. 자유투 성공률이 60%대 성공률을 보이는 선수가 주축인 팀이 과연 파이널을 갈 수 있을지 의문이다.
data['free throw percentage']=data['made_free_throws']/data['attempted_free_throws'] data_ft=data[data['attempted_free_throws']>=100] goja=data_ft.sort_values(by='free throw percentage',ascending=True).head(10) fig = px.bar(goja, x='name', y='free throw percentage') fig.show()
'Data Analysis > NBA' 카테고리의 다른 글