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를 지정해 특정 열만 녹일 수도 있습니다.

이해되셨나요? 😃 더 궁금한 점 있으면 질문해주세요! 🚀

+ Recent posts