pandas DataFrame 기초: 데이터 불러오기와 구조 확인
6강. pandas DataFrame 기초: 데이터 불러오기와 구조 확인
1. 이번 강의에서 해결할 문제
데이터를 바로 집계하면 문자열로 읽힌 숫자, 예상하지 못한 결측치와 행 수를 놓칩니다. 분석 전에 표의 구조와 타입을 검사해야 합니다.
2. 학습 목표
3. 핵심 개념
DataFrame은 열마다 dtype을 가진 2차원 표입니다. head는 일부 행, shape는 크기, dtypes와 info는 타입·결측 상태, describe는 수치 요약을 보여 줍니다. pandas 버전에 따라 문자열 dtype과 Copy-on-Write 같은 기본 동작이 달라질 수 있어 공식 문서와 실제 버전을 함께 기록합니다.
검사 도구가 답하는 질문
| 코드 | 답하는 질문 | 이 데이터에서 볼 단서 |
|---|---|---|
head(3) | 첫 행들의 값과 열 배치가 맞는가 | 헤더가 한 행으로 잘못 읽히지 않았는가 |
shape | 전체 행과 열이 몇 개인가 | (12, 8) |
dtypes | 각 열을 어떤 타입으로 읽었는가 | score는 결측 때문에 실수형일 수 있음 |
isna().sum() | 열마다 값이 몇 개 비었는가 | score 결측 1개 |
describe() | 수치 열의 개수·중심·범위는 어떤가 | play_minutes 최대 360 |
head만 정상이라고 전체 데이터가 정상인 것은 아닙니다. 문제 행이 파일 끝에 있거나, 일부 값 때문에 전체 열 dtype이 문자열로 바뀔 수 있습니다. 구조 검사와 값 검사를 함께 해야 합니다.
가장 작은 DataFrame으로 시작하기
import pandas as pd
sample = pd.DataFrame({
"player_id": ["P001", "P002"],
"score": [1280, None],
})
print(sample.shape) # (2, 2)
print(sample.isna().sum()) # score 결측 1개
행 2개와 열 2개이므로 shape는 (2, 2)입니다. score의 None은 읽을 수 없는 0점이 아니라 값이 없다는 표시이고, pandas가 결측을 표현하기 위해 숫자 dtype을 실수형으로 선택할 수 있습니다.
4. 단계별 실습
1. 예제 파일 작성
실행 환경: 코드 편집기
실행 위치: C:\dev\game-data-lab
실행 전 확인: 기존 파일이 있으면 내용을 덮어쓰지 말고 Git diff로 이번 강의 변경 범위를 확인합니다. 실제 개인정보·API Key·토큰은 사용하지 않습니다.
대상 파일: src/inspect_sessions.py
실행 전에는 4강의 원본 CSV 12행이 같은 상대 경로에 있어야 합니다. 스크립트는 읽기만 하고 원본 파일을 덮어쓰지 않습니다.
from pathlib import Path
import pandas as pd
SOURCE = Path("data/raw/game_sessions.csv")
df = pd.read_csv(SOURCE)
print(df.head(3).to_string(index=False))
print("shape:", df.shape)
print("dtypes:", df.dtypes, sep="\n")
print("missing:", df.isna().sum(), sep="\n")
print(df[["play_minutes", "score", "win"]].describe().round(2))
코드 한 줄씩 이해하기
Path는 운영체제 경로를 문자열 결합보다 안전하게 표현합니다.pd.read_csv(SOURCE)가 CSV 헤더를 열 이름으로 읽고 각 열의 dtype을 추론합니다.head(3)은 첫 세 행만 보여 주며to_string(index=False)는 왼쪽 인덱스 표시를 생략합니다.df.shape는(행 수, 열 수)튜플입니다.df.dtypes는 열별 dtype을 보여 주며 데이터 사전과 비교해야 합니다.df.isna().sum()은 각 열의 참/거짓 결측 표시를 합해 결측 개수를 셉니다.- 마지막 줄은 세 수치 열만 선택해 count, mean, std, min, 분위수, max를 계산합니다.
2. 실행과 결과 확인
실행 환경: Windows PowerShell
실행 위치: C:\dev\game-data-lab
실행 전 확인: Python 코드는 프로젝트의 .venv 인터프리터를 사용하고 입력 파일 경로가 존재하는지 확인합니다.
대상: src/inspect_sessions.py과 이 강의가 만드는 출력
Set-Location C:\dev\game-data-lab
.\.venv\Scripts\python.exe .\src\inspect_sessions.py
예상 결과: 12행 8열, score 결측 1개와 play_minutes 최대 360이 품질 점검 단서로 출력됩니다.
핵심 값은 다음처럼 읽습니다. dtype 이름과 표의 공백은 pandas 버전에 따라 달라질 수 있습니다.
shape: (12, 8)
missing score: 1
play_minutes count: 12
play_minutes mean: 51.33
play_minutes median(50%): 22.00
play_minutes max: 360.00
score count: 11
score mean: 1121.82
play_minutes 평균 51.33은 중앙값 22보다 크게 높습니다. 360분 행의 영향일 가능성이 있으므로 "평균 플레이 시간은 51분"이라고 바로 보고하지 않습니다. 수집 오류인지 실제 세션인지 확인하고, 포함·제외 두 결과를 비교해야 합니다.
5. 분석 또는 모델이 동작하는 이유
read_csv는 열 값을 보고 dtype을 추론하므로 추론 결과를 확인해야 합니다. describe의 count가 행 수보다 작으면 결측이 있을 수 있고, max와 분위수 차이는 이상치 후보를 보여 줍니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
다음 강의 연결
구조와 이상 단서를 확인했으므로 7강. 데이터 품질 감사에서 결측·중복·범위 위반을 재현 가능한 품질 보고서로 만듭니다.
pandas DataFrame 기초: 데이터 불러오기와 구조 확인 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.