데이터 결합: 여러 기록 파일을 하나의 분석 표로 만들기
11강. 데이터 결합: 여러 기록 파일을 하나의 분석 표로 만들기
1. 이번 강의에서 해결할 문제
파일을 결합할 때 키가 중복되거나 누락되면 행이 예상보다 늘거나 사라져 집계가 왜곡됩니다. SQL JOIN처럼 결합 관계를 검증해야 합니다.
2. 학습 목표
3. 핵심 개념
세션은 player_id가 여러 번 나타나고 플레이어 표는 player_id당 한 행이어야 하므로 many-to-one 관계입니다. left merge는 모든 세션을 보존하고 일치하지 않는 속성을 결측으로 표시합니다. pandas는 SQL과 달리 양쪽 결합 키의 null끼리 일치할 수 있어 키 결측을 사전 검사해야 합니다.
4. 단계별 실습
1. 예제 파일 작성
실행 환경: 코드 편집기
실행 위치: C:\dev\game-data-lab
실행 전 확인: 기존 파일이 있으면 내용을 덮어쓰지 말고 Git diff로 이번 강의 변경 범위를 확인합니다. 실제 개인정보·API Key·토큰은 사용하지 않습니다.
대상 파일: src/merge_sessions_players.py
from pathlib import Path
import pandas as pd
players = pd.DataFrame({
"player_id": ["P001", "P002", "P003", "P004", "P005", "P006", "P007", "P008"],
"skill_tier": ["mid", "beginner", "beginner", "advanced", "mid", "advanced", "mid", "beginner"],
})
players.to_csv("data/raw/players.csv", index=False)
sessions = pd.read_csv("data/processed/game_sessions_clean.csv")
merged = sessions.merge(players, on="player_id", how="left", validate="many_to_one", indicator=True)
print(merged["_merge"].value_counts())
if len(merged) != len(sessions):
raise ValueError("결합 후 행 수가 달라졌습니다")
merged.drop(columns="_merge").to_csv("data/processed/analysis_sessions.csv", index=False)
2. 실행과 결과 확인
실행 환경: Windows PowerShell
실행 위치: C:\dev\game-data-lab
실행 전 확인: Python 코드는 프로젝트의 .venv 인터프리터를 사용하고 입력 파일 경로가 존재하는지 확인합니다.
대상: src/merge_sessions_players.py과 이 강의가 만드는 출력
Set-Location C:\dev\game-data-lab
.\.venv\Scripts\python.exe .\src\merge_sessions_players.py
Import-Csv .\data\processed\analysis_sessions.csv | Group-Object skill_tier
예상 결과: 세션 행 수가 유지되고 일치 여부가 출력되며 skill_tier가 추가된 분석 표가 생성됩니다.
5. 분석 또는 모델이 동작하는 이유
validate="many_to_one"은 오른쪽 키가 중복되면 오류를 내어 행 폭증을 막습니다. indicator 열은 어느 쪽에서 온 행인지 보여 주어 미일치 player_id를 확인하게 합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
데이터 결합: 여러 기록 파일을 하나의 분석 표로 만들기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.