EDA 2번째
데이터의 복잡성이 올라간만큼 EDA 과정이 길고 난이도도 올라간다.
강의 하나 따라가면서도 pause와 뒤로가기를 반복하고 있는데
강의에서 진행하는 방법이 무조건 정답은 아니라는 사실을 항상 인지하고 데이터를 대할 필요가 있을 것 같다.
이번 주제? 목적?은 데이터프레임간의 관계를 파악하는 것이다.
결과만 보면 얼마되지 않는 양일 수 있지만, 실제 소요된 시간이 꽤 많아서(사실 EDA를 오늘로 끝낼줄 알았다)
이렇게 정리하는 것도 생각보다 양이 길어질 것 같다.
목적을 조금 더 세부적으로 정리하면 다음과 같다.
데이터프레임(=테이블) 간 공통으로 사용되는 키 값 정보들을 활용하여 의미있는 변수로 담아낼 수 있도록 한다.
주 대상이 되는 테이블은 선수 능력?이 정리된 df_player_att(원천 기준 Player_Attributes)과
팀 능력이 정리된 df_team_att(원천 기준 Team_Attributes)이다.
자세한 설명을 위해 단계별로 설명을 적어보도록 하겠다.
Step1. 테이블 내 id별 count 확인
df_player_att['player_api_id'].value_counts()
최대 56개의 row가 있는 선수도 있고, 단 2개의 row가 있는 선수도 있다.
해당 테이블에 있는 선수 id 정보를 이제 df_match 테이블에 있는 home/away player_* 선수들 id와 매칭하여
의미있는 변수로 변환하는 과정을 가져보자
Step2. df_match 테이블 정리
df_match['away_player_1'].dropna().apply(int)
해당되는 컬럼 내에 NaN 값이 확인되어 해당되는 케이스들은 drop처리를 해주고,
데이터 타입은 float 에서 int로 변환해준다.
Step3. df_match와 df_player_att 테이블 간 선수 id 정보를 활용하여 매칭
df_match['away_player_1'].dropna().apply(int).map(df_player_att.groupby('player_api_id').mean()['overall_rating'])
앞 부분 df_match['away_player_1'].dropna().apply(int) 은 Step2 과정.
이후 map을 활용하여 id 정보끼리의 매칭을 이어가는데,
이 때 대체할 값은 df_player_att 테이블 내 기준
선수별(id) overall_rating의 평균값이 된다.
Step4. 매칭한 정보에 대한 추가 확인
df_match['away_player_1'].dropna().apply(int).map(df_player_att.groupby('player_api_id').mean()['overall_rating']).isna().sum()
매칭을 성공적으로 맞추어도 추가 확인 절차가 필요하다.
why? 모든 선수 id에 해당되는 값 대체가 이루어졌는지를 확인하기 위해서!
간단한 확인을 위해 isna().sum()을 뒤에 덧붙이면 된다.
이 때 결과가 0이 나오는걸 확인하면 추가 작업은 필요없어진다. (행복)
이러한 일련의 과정을 team 정보에도 동일하게 진행해주면 된다.
df_match['home_team_api_id'].map(df_team_att.groupby('team_api_id').mean()['buildUpPlaySpeed']).isna().sum()
team 정보의 경우 위 코드까지 진행했을 때 178이라는 결과가 나온다.
즉, 178개의 home_team_api_id는 매칭되는 값이 없다는 의미.
다행히 전체 대비 NaN으로 대체된 케이스가 많은 편은 아니라서 과감하게 drop처리를 해도 큰 지장은 없을 것 같다.
결과만 놓고 보면
이정도면 뭐 하고 끄덕끄덕할 수 있겠지만,
데이터를 처음 접하는 입장에서는 어디부터 확인해야될지, 데이터를 대체할 기준은 무엇으로 잡는게 좋을지, 추가로 확인해야될 부분은 무엇일지 하나하나 챙겨야하기 때문에
이번 강의를 정리하는 시간이 실제 강의시간의 2~3배는 더 걸렸던 것 같다.
아직 EDA가 끝이 아니긴한데
이번 주제는 완료하고 나면 꼭 리뷰를 해봐야될 것 같다.
그럼 오늘은 여기까지!
http://bit.ly/3Y34pE0
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Analytics > Study' 카테고리의 다른 글
실전#4 오늘 밤 유럽 축구, 어디가 이길까(5) (0) | 2023.03.12 |
---|---|
실전#4 오늘 밤 유럽 축구, 어디가 이길까(4) (1) | 2023.03.11 |
실전#4 오늘 밤 유럽 축구, 어디가 이길까(2) (0) | 2023.03.09 |
실전#4 오늘 밤 유럽 축구, 어디가 이길까(1) (0) | 2023.03.08 |
실전#3 데이터로 알아보는 리그 오브 레전드의 승리 공식(3) (1) | 2023.03.07 |