[라인맨 포지션 평가] pffScoutingData, players EDA 및 전처리

Eunsuh Kim·2023년 1월 30일
0
post-custom-banner

pffScoutingData.csvplayers.csv로 offensive 및 defensive lineman에 대해 EDA 및 전처리를 수행하였다.

1. offensive lineman 분석

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()

2. defensive lineman 분석

1번과 같은 방식으로 offensive lineman을 분석하였다.

profile
안녕하세요!
post-custom-banner

0개의 댓글