✅ Pandas의 melt() 함수 정리
함수 이름 | pandas.DataFrame.melt() |
역할 | 넓은 형태(Wide Format)의 데이터를 긴 형태(Long Format)로 변환 |
왜 사용? | 여러 개의 열(column)을 하나의 열로 변환하여 분석하기 쉽게 만들기 위해 |
어떻게 동작? | id_vars로 고정할 열, value_vars로 변환할 열을 지정 |
기본 문법 | df.melt(id_vars=['고정할 열'], value_vars=['변환할 열']) |
새로운 열 이름 지정 | var_name='새로운 변수명', value_name='새로운 값명' 옵션 사용 |
✅ Pandas melt() 옵션을 쉽게 풀어서 설명
옵션 이름뜻을 풀어서 설명쉽게 이해하는 방법예제 값
id_vars → "identity variables" | 그대로 유지할 열 (변환하지 않을 열) | 이 열은 그대로 유지되면서 나머지 데이터가 녹아내림 | id_vars=['date'] → 날짜는 그대로 둠 |
value_vars → "value variables" | 하나로 합쳐질 열 (녹여서 합칠 열들) | 이 열들은 하나의 열로 합쳐짐 | value_vars=['Seoul', 'Busan'] → 두 개의 열을 하나로 변환 |
var_name → "variable name" | 새로운 "열 이름" (value_vars의 원래 열 이름이 들어감) | 원래 열(column) 이름을 저장할 새로운 열의 이름을 정함 | var_name='city' → 'Seoul', 'Busan'이 이 열에 저장됨 |
value_name → "value name" | 새로운 "값 이름" (value_vars의 값들이 들어감) | 원래 데이터 값들이 들어갈 새로운 열의 이름을 정함 | value_name='temperature' → 각 도시의 온도 값이 저장됨 |
📌 예제 코드 (옵션 설명을 생각하며 적용해보기)
import pandas as pd
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02'],
'Seoul': [5, 3],
'Busan': [8, 7]
})
df_melted = df.melt(
id_vars=['date'], # date는 변환하지 않고 그대로 유지 (ID 역할)
value_vars=['Seoul', 'Busan'], # 이 두 개의 열을 하나로 합침
var_name='city', # 새롭게 만들어질 열(변수명) → 'city'
value_name='temperature' # 새롭게 만들어질 값(데이터) → 'temperature'
)
print(df_melted)
🔹 출력 결과 (변환 후 데이터)
date city temperature
0 2024-01-01 Seoul 5
1 2024-01-02 Seoul 3
2 2024-01-01 Busan 8
3 2024-01-02 Busan 7
🚀 헷갈리지 않게 기억하는 법
- id_vars → "identity(고유값) 역할을 하는 열" → 변환되지 않고 유지됨
---------------------------------------------------------------------------------------------------------------------------
- value_vars → "value(값)들이 모여 하나로 합쳐질 열" → 여러 개의 열이 하나로 묶임
- var_name → "variable(변수)들의 이름이 들어갈 새 열" → value_vars의 원래 열 이름이 저장됨
---------------------------------------------------------------------------------------------------------------------------
- value_name → "값(value)들이 들어갈 새 열" → value_vars의 실제 데이터 값이 저장됨
반응형
'ChatGPT 아카이브 > Pandas' 카테고리의 다른 글
메서드 체이닝(Method Chaining) 파헤치기 (0) | 2025.03.05 |
---|---|
pivot vs pivot_table 차이점 (0) | 2025.03.05 |
concate / 축(axis) 번호 살펴보기 (0) | 2025.03.05 |
pandas rename 함수 / astype 함수 / Pandas의 View 와 Copy 반환 (0) | 2025.03.05 |
dropna() vs fillna() 비교 / NaN과 None의 차이 (0) | 2025.03.04 |