파이썬 기초문법

판다스 melt로 데이터프레임 재구조화하기(컬럼의 내용을 row로 옮기기)

Family in August 2024. 6. 28. 11:33
반응형


판다스 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 함수는 데이터 재구조화에 매우 유용합니다. 특히 시계열 데이터 분석이나 데이터 시각화 전 처리 과정에서 자주 사용됩니다. 이 기능을 잘 활용하면 복잡한 데이터 구조를 쉽게 다룰 수 있습니다.

반응형