Pandas의 melt 메서드는 데이터프레임을 길게(long format) 변환하는 데 사용됩니다. 이는 열(column)을 행(row)으로 “녹이는” 방식으로, 데이터 분석이나 시각화를 위해 데이터 구조를 재구성할 때 유용합니다.
주요 매개변수
• id_vars: 녹이지 않을 열을 지정합니다. 이 열들은 결과 데이터프레임에서 고정된 열로 유지됩니다.
• value_vars: 녹일 열을 지정합니다. 지정된 열들은 행으로 변환됩니다. 기본값은 나머지 모든 열입니다.
• var_name: 녹여진 열의 이름을 지정합니다. 기본값은 'variable'입니다.
• value_name: 녹여진 값의 이름을 지정합니다. 기본값은 'value'입니다.
사용 목적
• 데이터를 wide format에서 long format으로 변환
• 시각화 라이브러리(e.g., Seaborn, Matplotlib)에서 사용하는 데이터 형태로 변환
• 데이터 정리와 조작
예제 코드
다음과 같은 데이터프레임이 있다고 가정해봅시다.
import pandas as pd
# 샘플 데이터프레임 생성
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Math': [85, 78, 92],
'Science': [88, 89, 94],
'English': [90, 80, 85]
})
print("원본 데이터프레임:")
print(df)
출력:
Name Math Science English
0 Alice 85 88 90
1 Bob 78 89 80
2 Charlie 92 94 85
데이터프레임을 melt 사용해 변환
# melt 메서드 사용
melted_df = pd.melt(df, id_vars=['Name'], value_vars=['Math', 'Science', 'English'],
var_name='Subject', value_name='Score')
print("\nMelt 메서드로 변환된 데이터프레임:")
print(melted_df)
출력:
Name Subject Score
0 Alice Math 85
1 Bob Math 78
2 Charlie Math 92
3 Alice Science 88
4 Bob Science 89
5 Charlie Science 94
6 Alice English 90
7 Bob English 80
8 Charlie English 85
설명
1. id_vars=['Name']: Name 열은 고정되어 녹지 않습니다.
2. value_vars=['Math', 'Science', 'English']: 이 열들이 녹여져서 Subject 열로 변환됩니다.
3. var_name='Subject': 녹여진 열의 이름이 Subject가 됩니다.
4. value_name='Score': 값의 열 이름이 Score가 됩니다.
요약
melt 메서드는 데이터를 깔끔한 형태로 재구성해 데이터 분석과 시각화에 적합한 형식으로 변환합니다. 이를 활용하면 복잡한 데이터 구조를 효율적으로 다룰 수 있습니다.