pd.melt 및 pd.pivot_table은 Python에서 데이터 변형을 위한 pandas 라이브러리의 함수입니다.
용도와 사용법에 비슷한 부분이 있어서 함께 정리합니다.
1. pd.melt
이 함수는 DataFrame을 와이드 포맷에서 롱 포맷으로 변환하거나 재구성하는 데 사용됩니다. DataFrame을 unpivot 하여 열을 행으로 변환합니다. 이 함수는 DataFrame을 입력으로 사용하고 식별자 변수(id_vars)로 남아 있어야 하는 열을 지정하고 나머지는 단일 열로 통합됩니다.
예:
서로 다른 지역의 서로 다른 제품에 대한 판매 데이터를 나타내는 DataFrame이 있다고 가정해 보겠습니다.
import pandas as pd
data = {
'Product': ['A', 'B', 'C'],
'Region': ['North', 'South', 'East'],
'Sales_Q1': [100, 200, 150],
'Sales_Q2': [120, 220, 180]
}
df = pd.DataFrame(data)
Output:
Product Region Sales_Q1 Sales_Q2
0 A North 100 120
1 B South 200 220
2 C East 150 180
이 데이터 프레임에서 판매 열('Sales_Q1' 및 'Sales_Q2')을 단일 열로 통합하려면 pd.melt를 사용할 수 있습니다
통합하면 안 되는 열을 id_vars로 지정하고, 통합하는 열을 value_vars로 지정합니다.
이때, value_vars는 지정하지 않으면 id_vars를 제외한 전체가 melt 되고, 명시적으로 지정하면 지정한 열만 melt 됩니다.
id_vars와 value_vars 모두에 지정되지 않은 열은 사라지게 됩니다.
var_name은 melt 되어 하나로 통합되는 열의 이름이며, 아래의 예에서는 Sales_Q1, Sales_Q2을 담는 새로운 열의 이름입니다.
value_name은 값 열의 이름입니다.
melted_df = pd.melt(df, id_vars=['Product', 'Region'],
value_vars=['Sales_Q1', 'Sales_Q2'],
var_name='Quarter', value_name='Sales')
Output:
Product Region Quarter Sales
0 A North Sales_Q1 100
1 B South Sales_Q1 200
2 C East Sales_Q1 150
3 A North Sales_Q2 120
4 B South Sales_Q2 220
5 C East Sales_Q2 180
2. pd.pivot_table
이 함수는 DataFrame에서 피벗 테이블을 만드는 데 사용됩니다. 하나 이상의 열을 기준으로 데이터를 요약하고 집계할 수 있습니다. 이 함수는 DataFrame을 입력으로 사용하고 인덱스로 사용할 열, 피벗 테이블에서 열로 사용할 열 및 집계할 값을 지정합니다. 엑셀의 피벗 테이블과 같은 기능입니다.
예:
동일한 판매 데이터 DataFrame을 사용하여 제품 및 지역별 총판매를 요약하는 피벗 테이블을 생성한다고 가정해 보겠습니다.
pivot_df = pd.pivot_table(df,
values='Sales_Q1', #값
index='Product', #행
columns='Region', #열
aggfunc='sum', #집계함수
fill_value=0) #결측값 채우기
Output:
Region East North South
Product
A 0 100 0
B 0 0 200
C 150 0 0
기본적으로 엑셀의 피벗 테이블과 동일한 개념으로 보면 됩니다. 이 피벗 테이블에서 행(index)은 제품을 나타내고 열(columns)은 지역을 나타내며 값(values)은 제품과 지역의 각 조합에 대한 집계된 판매액입니다. aggfunc='sum' 매개변수는 값을 집계할 때 합계를 계산하도록 지정합니다. fill_value=0 매개변수는 누락된 값을 모두 0으로 채웁니다.
이렇게 간단하게, pd.melt와 pd.pivot_table에 대해 알아보았습니다.
요약하면 pd.melt는 열을 행으로 녹여 DataFrame을 와이드 형식에서 긴 형식으로 변환하는 데 사용되며 pd.pivot_table은 지정된 열을 기반으로 데이터를 요약하고 집계하여 피벗 테이블을 만드는 데 사용됩니다.
이렇게 데이터를 변형하는 기능은 원천 테이블이 키값으로 1:1 매핑이 안되고 1:N 등의 구조일 때 원천테이블을 병합하기 위한 용도로 자주 사용되므로 꼭 기억해두어야 하겠습니다.
※ 위 내용은 "빅데이터 분석기사 실기 준비를 위한 캐글 놀이터"를 따라가며 공부한 내용입니다.
https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr
'데이터분석과 AI > 빅데이터 분석기사' 카테고리의 다른 글
[빅데이터분석기사 실기][작업형1] 슬라이싱 (0) | 2023.06.17 |
---|---|
[빅데이터분석기사 실기][작업형1] imputer로 결측치 처리하기 (0) | 2023.06.16 |
[빅데이터분석기사 실기][작업형1] Shift로 데이터 이동하기 (0) | 2023.06.09 |
[빅데이터분석기사 실기][작업형1] iloc와 loc를 이용한 데이터프레임 접근 (0) | 2023.06.06 |
[빅데이터분석기사 실기][작업형1] 그룹화와 정렬 + 멀티인덱싱 (0) | 2023.06.06 |
댓글