pffScoutingData.csv
및 players.csv
로 offensive 및 defensive lineman에 대해 EDA 및 전처리를 수행하였다.
pffScoutingData.csv
에서 offensive lineman에 해당하는 포지션만 추출
pffScouting_offensivelinemen = pffScoutingData[(pffScoutingData['pff_positionLinedUp'] == "C") |
(pffScoutingData['pff_positionLinedUp'] == "LT") |
(pffScoutingData['pff_positionLinedUp'] == "RT") |
(pffScoutingData['pff_positionLinedUp'] == "LG") |
(pffScoutingData['pff_positionLinedUp'] == "RG")]
players.csv
의 nflId 컬럼을 key로 merge
offensivelinemen_name = pd.merge(pffScouting_offensivelinemen, players, how = "left", on = "nflId")
크롤링한 연봉 데이터와 Display Name (선수 full name) 기준으로 merge
offensivelinemen_all = pd.merge(offensivelinemen_name, offensivelinemen_crawlingresults, how='left', on='displayName')
birthDate 컬럼을 바탕으로 age 생성
offensivelinemen_all['birthDate'] = pd.to_datetime(offensivelinemen_all['birthDate'])
offensivelinemen_all['age'] = offensivelinemen_all['birthDate'].map(lambda x: dt.date.today().year-x.year)
height 컬럼(feet-inch 단위)을 바탕으로 heightCm 생성
offensivelinemen_all['heightCm'] = offensivelinemen_all['height'].map(lambda x: int(x.split('-')[0])*30.48+int(x.split('-')[1])*2.54)
시각화
fig = px.scatter_3d(
offensivelinemen_all, x='age', y='heightCm', z='weight',
color='officialPosition_x', opacity=0.7
)
fig.update_layout(height=800, title='Player stats of different positions')
fig.show()
1번과 같은 방식으로 offensive lineman을 분석하였다.