본문 바로가기

Analytics/Study

실전#4 오늘 밤 유럽 축구, 어디가 이길까(3)

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

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.