카테고리 없음

2025.11.20 TIL (본캠프, 24일차)

D:Connect 2025. 11. 20. 21:32

어제부터 시작된 기초 프로젝트가 본격적으로 시작했다. 어제 밤에 부랴부랴 데이터 전처리 복습을 했던것이 도움이 되어가고 있다.

특히, 어제 팀 미팅으로 팀 프로젝트의 협업 환경 구축과 실제 데이터 전처리 작업을 목표를 설정했던것이 원동력이 된 거 같다.. .

 

 

프로젝트를 진행하면서 처음으로 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주차 마지막 이틀이 남았다. 남은 이틀 열심히하고 주말을 보내야겠다!!