Python 라이브러리 Pandas에는 데이터프레임을 구조화하는 함수들이 있다.
각 인덱스(행)와 컬럼(열)을 통해 데이터에 접근 및 조작이 가능하다.
데이터프레임 구조화 함수
pivot()
: 특정 열을 기준으로 데이터를 재구성하는 함수pivot_table()
:pivot()
함수와 비슷하나,aggfunc
매개변수를 활용하여 다양한 집계 함수를 적용할 수 있음stack()
: 특정 열을 인덱스로 변환해서 행으로 쌓아올리는 함수unstack()
:stack()
함수의 반대 과정으로, 특정 인덱스를 열로 다시 변환하는 함수melt()
: 여러 열을 하나의 열로 묶는 함수로, 이 경우 열 이름을 담는 열과 값을 담는 열로 구분됨
데이터프레임 구조화 예시
아래는 Pandas 데이터프레임을 생성하고, 순서대로 pivot()
, pivot_table()
, stack()
, unstack()
, melt()
함수를 적용하는 예시이다.
데이터프레임 생성
1 | import pandas as pd |
1 | 원본 데이터프레임: |
1. pivot()
1 | try: |
1 | pivot() 오류 발생 |
- temperature의 값이 중복되므로
pivot()
함수는 오류를 발생시킨다. 이를 해결하기 위해pivot_table()
함수를 사용할 수 있다.
2. pivot_table()
1 | pivot_table = df.pivot_table(index='date', columns='city', values='temperature', aggfunc='mean') |
1 | pivot_table() 결과: |
3. stack()
1 | stacked = pivot_table.stack() |
1 | stack() 결과: |
4. unstack()
1 | unstacked = stacked.unstack() |
1 | unstack() 결과: |
5. melt()
1 | melted = pd.melt(df, id_vars=['date', 'city'], value_vars=['temperature', 'humidity', 'wind_speed']) |
1 | melt() 결과: |
Reference
API reference — pandas 2.2.3 documentation
[Pandas] 데이터프레임 재구조화하기(Stack,Unstack)