어제부터 시작된 기초 프로젝트가 본격적으로 시작했다. 어제 밤에 부랴부랴 데이터 전처리 복습을 했던것이 도움이 되어가고 있다.
특히, 어제 팀 미팅으로 팀 프로젝트의 협업 환경 구축과 실제 데이터 전처리 작업을 목표를 설정했던것이 원동력이 된 거 같다.. .
프로젝트를 진행하면서 처음으로 GitHub의 실용성을 체감했다.
팀원들이 각자 작성한 코드를 효율적으로 관리하고, 같은 코드에 대해 여러 사람이 수정할 때의 버전 관리, 그리고 나중에 이 모든 코드들을 포트폴리오로 활용할 수 있다는 점이 정말 강력한거 같다.
유튜브를 참고해서 GitHub 저장소를 생성하고, 팀원들과 공유할 수 있는 환경을 만들었다.
이 과정에서 배운 것들:
- Repository 생성 및 초기화
- Clone으로 로컬 환경에 받기
- Add, Commit, Push로 코드 업로드
- Pull로 팀원의 최신 코드 받기
GitHub을 잘 활용하면 나만의 포트폴리오 걱정은 크게 줄어들지 않을까 긍정적으로 생각해본다.
데이터 분석가 채용 담당자들은 GitHub을 본다. 왜냐하면:
- 실제로 어떤 프로젝트를 했는지 확인 가능
- 코드의 품질과 구조를 평가 가능
- 커밋 히스토리로 작업 과정 파악 가능
- 팀 협업 능력 확인 가능
따라서 지금부터의 모든 프로젝트와 분석은 GitHub에 올려야겠다.
기초 프로젝트 진행 사항 정리
당신이 완료한 전처리 작업을 정리해보면:
✓ 1단계: 티어 매치 데이터 합치기
TFT 데이터는 여러 파일로 나뉘어 있었다:
- TFT_Challenger_MatchData
- TFT_Champion_CurrentVersion
- TFT_Diamond_MatchData
- TFT_GrandMaster_MatchData
- TFT_Item_CurrentVersion
- TFT_Master_MatchData
- TFT_Platinum_MatchData
이 여러 파일들을 하나로 합치는 것이 첫 번째 단계였다. pd.merge()를 활용하여 모든 Tier의 데이터를 하나로 만들었다..
- TFT _All_Tier
✓ 2단계: 결측치 확인
다행히 결측치가 없었다. 이것은 데이터 품질이 좋다는 의미인듯하다.(내가 못 찾았다면....)
# 결측치 확인 코드
all_match_data.isnull().sum()
✓ 3단계: 이상치 탐지 및 제거 (가장 중요한 단계)
이 단계에서는 게임 도메인을 이해하고 있어야 한다는걸 느꼈다.
발견된 이상치 1: 게임당 인원 오류
- 문제: 게임당 8명이 아닌 게임 21개 발견
- 이유: TFT는 8명의 플레이어가 한 게임을 한다. 8명이 아니면 데이터 오류
- 처리: 해당 21개 게임 제거
# 예시 코드
game_player_count = all_match_data.groupby('gameId').size()
invalid_games = game_player_count[game_player_count != 8].index
TFT = all_match_data[~all_match_data['gameId'].isin(invalid_games)]
발견된 이상치 2: 게임 시간 오류
- 기준 설정: 10~60분을 정상 게임 시간으로 정의
- 이상치 발견: 144개 게임이 이 범위를 벗어남
- 구체적 예: gameId(65959)의 게임 시간이 38.888447분 (이것은 38분 53초)
# 게임 시간 이상치 처리
normal_game_time = (clean_data['gameDuration'] >= 10) & (clean_data['gameDuration'] <= 60)
TFT = clean_data[normal_game_time]
이상치 처리의 의미
총 165개의 이상한 데이터를 제거했다 (21 + 144).
단순히 "데이터를 버리는 것"이 아니라 "신뢰할 수 있는 데이터만 남기는 것"이다. 이상한 데이터를 포함한 분석은 신뢰도를 떨어뜨릴수 있기 때문이다.
Clean Data 생성
모든 전처리가 완료된 후, 정제된 데이터를 새 파일로 저장했다.
# 전처리 완료 데이터 저장
TFT.to_csv('TFT_Clean_Data.csv', index=False, encoding='utf-8')
이제 이 clean_data가 분석의 기초 데이터로 사용하면 된다.
전처리가 완료되었으니, 다음 단계로 진행할 작업들이 있다.
- 메타 데이터 매핑 (예정)
- 파생변수 생성 (예정)
파생변수는 기존 변수에서 새로운 정보를 만들어내는 것이다.
TFT에서 생성할 수 있는 파생변수를 몇가지 고민중이다:
- 팀 전력 지표: 팀원들의 평균 티어
- 챔피언 조합 분류: 어떤 챔피언들이 함께 사용되었는가
- 아이템 조합 분석: 어떤 아이템 조합이 승률을 높이는가
- 게임 진행 지표: 승패와 관련된 패턴 분석
24일차 하루를 마무리 하며....
- GitHub을 통한 협업 환경 구축
- TFT 데이터의 완전한 전처리 완료
- 165개의 이상 데이터 적절한 처리
- Clean Data 생성 및 저장
오늘 느낀 것은 "데이터 전처리의 중요성"이 이제 이론이 아니라 실전이 되었다는 것이다.
왜냐면 지난 며칠간 배운 dropna(), fillna(), IQR, Z-score 같은 개념들을 실제로 사용하고 있었기 때문이다.
다음 목표
- 메타 데이터 매핑 구현
- 파생변수 창의적으로 설계
- 진행사항 공유 공유
5주차 마지막 이틀이 남았다. 남은 이틀 열심히하고 주말을 보내야겠다!!