pandas.DataFrame.melt() 사용법 및 예제
melt() 함수는 DataFrame을 긴(long) 형식으로 변환하는 데 사용됩니다.
이는 데이터 분석 및 시각화에 유용하며, 특히 Tidy Data 형식으로 변환할 때 자주 사용됩니다.
🔹 melt() 기본 문법
pd.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value')
🔸 주요 매개변수
- frame : 변환할 DataFrame
- id_vars : 녹이지 않고 유지할 열 (기준 열)
- value_vars : 녹일 열 (기본적으로 나머지 모든 열이 포함됨)
- var_name : 새로 생성될 "변수 이름" 열의 이름 (기본값: variable)
- value_name : 새로 생성될 "값" 열의 이름 (기본값: value)
🔹 예제 1: 기본 사용법
import pandas as pd
# 샘플 데이터 생성
df = pd.DataFrame({
'이름': ['철수', '영희', '민수'],
'국어': [90, 85, 88],
'수학': [80, 95, 92]
})
print("📌 원본 DataFrame:")
print(df)
# melt() 적용
df_melted = df.melt(id_vars=['이름'], var_name='과목', value_name='점수')
print("\n📌 melt() 적용 후:")
print(df_melted)
📌 결과:
📌 원본 DataFrame:
이름 국어 수학
0 철수 90 80
1 영희 85 95
2 민수 88 92
📌 melt() 적용 후:
이름 과목 점수
0 철수 국어 90
1 영희 국어 85
2 민수 국어 88
3 철수 수학 80
4 영희 수학 95
5 민수 수학 92
🔹 **이름을 기준(id_vars=['이름'])**으로 두고, 국어/수학을 녹여서(value_vars=['국어', '수학']) 과목과 점수 열을 생성했습니다.
🔹 예제 2: value_vars를 지정하여 특정 열만 녹이기
df_melted = df.melt(id_vars=['이름'], value_vars=['국어'], var_name='과목', value_name='점수')
print(df_melted)
📌 결과:
이름 과목 점수
0 철수 국어 90
1 영희 국어 85
2 민수 국어 88
🔹 국어만 녹이고, 수학은 변환하지 않았습니다.
🔹 예제 3: var_name과 value_name 변경하기
df_melted = df.melt(id_vars=['이름'], var_name='Subject', value_name='Score')
print(df_melted)
📌 결과:
이름 Subject Score
0 철수 국어 90
1 영희 국어 85
2 민수 국어 88
3 철수 수학 80
4 영희 수학 95
5 민수 수학 92
🔹 **열 이름을 영어(var_name='Subject', value_name='Score')**로 변경했습니다.
🔹 예제 4: 여러 개의 id_vars 사용하기
df = pd.DataFrame({
'학교': ['A', 'A', 'B'],
'이름': ['철수', '영희', '민수'],
'국어': [90, 85, 88],
'수학': [80, 95, 92]
})
df_melted = df.melt(id_vars=['학교', '이름'], var_name='과목', value_name='점수')
print(df_melted)
📌 결과:
학교 이름 과목 점수
0 A 철수 국어 90
1 A 영희 국어 85
2 B 민수 국어 88
3 A 철수 수학 80
4 A 영희 수학 95
5 B 민수 수학 92
🔹 두 개의 기준 열(id_vars=['학교', '이름'])을 유지하고 나머지를 녹였습니다.
🔹 정리
- melt()는 넓은(wide) 데이터 → 긴(long) 데이터로 변환할 때 사용됩니다.
- **기준 열(id_vars)**을 유지하고, 나머지 열을 녹여서 **새로운 열(var_name, value_name)**로 변환합니다.
- 여러 개의 id_vars를 설정할 수도 있으며, value_vars를 지정해 특정 열만 녹일 수도 있습니다.
이해되셨나요? 😃 더 궁금한 점 있으면 질문해주세요! 🚀
'[Lang] Python' 카테고리의 다른 글
TypedDict란? (0) | 2025.02.20 |
---|---|
파이썬에 설치된 패키지와 클래스를 탐색하는 방법 (0) | 2025.02.09 |
맥에서 파이썬 여러 버전 관리하는 법 (0) | 2025.02.09 |
파이썬 의존성을 해결하는 방법 (0) | 2025.02.08 |
pip command 리스트 (1) | 2019.11.09 |
country code로 timezone 구하기 (0) | 2016.11.09 |
python에서 switch/case 처럼 쓰기 (0) | 2016.09.07 |