데이터의 「긴 형식(long)」과 「넓은 형식(wide)」 사이의 변환은 데이터 정리의 핵심 기술입니다.
Pandas의 melt(wide → long)와 pivot(long → wide)이 이 변환을 담당합니다.
긴 형식 vs 넓은 형식.
넓은 형식: 한 행이 한 객체, 여러 열에 다른 측정.
예: 학생|수학|영어|과학 — 홍길동|90|85|95.
긴 형식: 한 행이 한 측정.
예: 학생|과목|점수 — 홍길동|수학|90, 홍길동|영어|85, ...
melt — wide → long.
df_long = df.melt(id_vars="학생", value_vars=["수학", "영어", "과학"], var_name="과목", value_name="점수").
「학생」을 식별자로 두고 나머지 열을 「과목, 점수」 두 열로 풀어 줍니다.
tidy data 만들기의 표준.
pivot — long → wide.
df_wide = df_long.pivot(index="학생", columns="과목", values="점수").
melt의 정반대.
보고서·시각화에는 wide가, 분석·집계에는 long이 더 편한 경우가 많습니다.
pivot_table은 pivot의 강화판.
같은 (행, 열) 조합에 여러 값이 있을 때 자동 집계.
pivot이 「단순 재배열」이라면 pivot_table은 「재배열 + 집계」.
본격적 데이터 정리는 pivot_table이 더 자주 쓰입니다.
한 줄 요약
melt는 wide → long으로 펼치고, pivot은 long → wide로 모읍니다.
tidy data 원칙을 따라 분석은 long, 보고서·시각화는 wide가 자연스럽습니다.
더 알아볼 것
- Tidy Data 원칙 (Hadley Wickham)
- stack·unstack — pivot의 친척
- melt의 var_name·value_name