반응형
판다스 melt로 데이터프레임 재구조화하기
데이터 분석 과정에서 넓은 형식(wide format)의 데이터를 긴 형식(long format)으로 변환해야 할 때가 있습니다. 판다스의 melt 함수는 이러한 작업을 쉽게 수행할 수 있게 해줍니다. 이번 포스팅에서는 melt 함수의 사용법과 활용 예제를 살펴보겠습니다.
melt 기본 사용법
import pandas as pd
# 샘플 데이터프레임 생성
df = pd.DataFrame({
'Name': ['John', 'Mary', 'Peter'],
'Math': [90, 85, 78],
'Science': [95, 92, 88],
'History': [88, 90, 85]
})
print("원본 데이터프레임:")
print(df)
# melt 적용
melted_df = pd.melt(df, id_vars=['Name'], var_name='Subject', value_name='Score')
print("\nmelt 적용 후:")
print(melted_df)
출력:
원본 데이터프레임:
Name Math Science History
0 John 90 95 88
1 Mary 85 92 90
2 Peter 78 88 85
melt 적용 후:
Name Subject Score
0 John Math 90
1 Mary Math 85
2 Peter Math 78
3 John Science 95
4 Mary Science 92
5 Peter Science 88
6 John History 88
7 Mary History 90
8 Peter History 85
melt의 주요 매개변수
1. `id_vars`: 식별자로 사용할 열 (변환하지 않을 열)
2. `value_vars`: 변환할 열 (지정하지 않으면 id_vars를 제외한 모든 열)
3. `var_name`: 새로 생성될 변수명 열의 이름
4. `value_name`: 새로 생성될 값 열의 이름
복잡한 데이터프레임에 melt 적용하기
import pandas as pd
# 복잡한 데이터프레임 생성
df = pd.DataFrame({
'Student': ['John', 'Mary', 'Peter'],
'Math_2021': [90, 85, 78],
'Math_2022': [92, 88, 80],
'Science_2021': [95, 92, 88],
'Science_2022': [97, 94, 90]
})
print("원본 데이터프레임:")
print(df)
# melt 적용 및 추가 처리
melted_df = pd.melt(df, id_vars=['Student'], var_name='Subject_Year', value_name='Score')
melted_df[['Subject', 'Year']] = melted_df['Subject_Year'].str.split('_', expand=True)
melted_df = melted_df.drop('Subject_Year', axis=1)
print("\nmelt 및 추가 처리 후:")
print(melted_df)
출력:
원본 데이터프레임:
Student Math_2021 Math_2022 Science_2021 Science_2022
0 John 90 92 95 97
1 Mary 85 88 92 94
2 Peter 78 80 88 90
melt 및 추가 처리 후:
Student Score Subject Year
0 John 90 Math 2021
1 Mary 85 Math 2021
2 Peter 78 Math 2021
3 John 92 Math 2022
4 Mary 88 Math 2022
5 Peter 80 Math 2022
6 John 95 Science 2021
7 Mary 92 Science 2021
8 Peter 88 Science 2021
9 John 97 Science 2022
10 Mary 94 Science 2022
11 Peter 90 Science 2022
melt 함수는 데이터 재구조화에 매우 유용합니다. 특히 시계열 데이터 분석이나 데이터 시각화 전 처리 과정에서 자주 사용됩니다. 이 기능을 잘 활용하면 복잡한 데이터 구조를 쉽게 다룰 수 있습니다.
반응형
'파이썬 기초문법' 카테고리의 다른 글
판다스 merge로 데이터프레임 결합하기 (0) | 2024.07.03 |
---|---|
판다스 pivot으로 데이터 구조 재구성하기 (0) | 2024.06.15 |
판다스 transform으로 그룹별 변환 적용하기(그룹별 최대값 / 최소값) (0) | 2024.06.12 |
pandas apply로 데이터프레임 컬럼별 함수 적용하기 (0) | 2024.05.17 |
메타클래스로 파이썬 클래스 작성을 한 단계 업그레이드하기 (0) | 2024.05.12 |