본문으로 건너뛰기
데이터 분석 · AI 기초집LESSON 06

pandas DataFrame 기초: 데이터 불러오기와 구조 확인

난이도초급
예상 시간35분
선수지식이전 강의

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행이 같은 상대 경로에 있어야 합니다. 스크립트는 읽기만 하고 원본 파일을 덮어쓰지 않습니다.

src/inspect_sessions.py
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))

코드 한 줄씩 이해하기​

  1. Path는 운영체제 경로를 문자열 결합보다 안전하게 표현합니다.
  2. pd.read_csv(SOURCE)가 CSV 헤더를 열 이름으로 읽고 각 열의 dtype을 추론합니다.
  3. head(3)은 첫 세 행만 보여 주며 to_string(index=False)는 왼쪽 인덱스 표시를 생략합니다.
  4. df.shape는 (행 수, 열 수) 튜플입니다.
  5. df.dtypes는 열별 dtype을 보여 주며 데이터 사전과 비교해야 합니다.
  6. df.isna().sum()은 각 열의 참/거짓 결측 표시를 합해 결측 개수를 셉니다.
  7. 마지막 줄은 세 수치 열만 선택해 count, mean, std, min, 분위수, max를 계산합니다.

2. 실행과 결과 확인​

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-data-lab

실행 전 확인: Python 코드는 프로젝트의 .venv 인터프리터를 사용하고 입력 파일 경로가 존재하는지 확인합니다.

대상: src/inspect_sessions.py과 이 강의가 만드는 출력

Windows PowerShell
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강. 데이터 품질 감사에서 결측·중복·범위 위반을 재현 가능한 품질 보고서로 만듭니다.

MINI QUIZ

pandas DataFrame 기초: 데이터 불러오기와 구조 확인 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“pandas DataFrame 기초: 데이터 불러오기와 구조 확인”의 역할과 의존성을 판단하는 올바른 기준은 무엇인가요?
  2. 문제 2“pandas DataFrame 기초: 데이터 불러오기와 구조 확인”의 작업 기준으로 ‘head만 보고 전체가 정상이라 판단하기’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

6강. pandas DataFrame 기초: 데이터 불러오기와 구조 확인 미완료 상태