반응형
pandas의 stack() 함수와 unstack() 함수로 데이터 프레임을 재구조화할 수 있습니다.
간단하게 설명하자면,
stack은 컬럼을 인덱스로 가져오는 것이며,
unstack은 (지정한 level)의 인덱스를 컬럼으로 보내는 역할을 합니다.
import pandas as pd
df = pd.DataFrame({'col_1':[1,2,3],'col_2':[4,5,6]}, index=['a','b','c'])
df
Stack
stack은 컬럼을 인덱스로 보내는 역할을 합니다. 아래를 보시면 인덱스에 해당하는 각 컬럼을 차례대로 쌓는 다고 생각하시면 됩니다.
stack = df.stack()
stack
df 데이터프레임의 인덱스 level 0인 a,b,c에 해당하는 컬럼을 차례대로 쌓아 올린다.
stack.index
stack 함수를 실행시키면 멀티 인덱스로 바뀌게 됩니다.
'a' 인덱스를 호출하면 2개의 'col_1', 'col_2'의 해당하는 값들이 추출되며
['a', 'col_1'] 인덱스를 호출하면 이에 해당하는 1 값이 추출됩니다.
print(stack['a'])
print('-------')
print(stack['a','col_1'])
Unstack
unstack 함수는 말 그댈도 stack 함수와 반대의 역할을 하며, 인덱스 값을 컬럼으로 올려줍니다.
stack.unstack()
unstack은 인덱스 level별로 컬럼을 올려줍니다.
unstack()과 같이 level값을 지정해주지 않으면 제일 level이 높은 인덱스부터 하나씩 올립니다.
stack.unstack(level=0)
unstack할 인덱스가 level = 0이어서 'a', 'b', 'c' 인덱스들을 컬럼으로 올라가게 됩니다.
응용
g = df_last.groupby(["연도","지역명"])["평당분양가격"].mean()
g
'연도'와 '지역명'을 기준으로 그룹을 나누며 value 값은 '평당분양가격'으로 평균값을 나타내고 있습니다.
g.unstack()
컬럼명이 '지역명'인 인덱스가 컬럼으로 올라는 것을 볼 수 있습니다.
g.unstack().transpose()
transpose()를 통해 인덱스와 컬럼을 바꿀 수 있습니다. ( transpose() 는 .T와 바꿔 사용 가능하다. )
반응형
'Python > Pandas' 카테고리의 다른 글
[Pandas] dtype 기반 열 선택 / select_dtypes (0) | 2022.06.06 |
---|---|
[pandas] pivot_table 원하는 대로 테이블 만들기 (0) | 2022.05.18 |
[pandas] rename, reset_index (0) | 2022.05.17 |
[pandas] 레이블인코딩 / 원핫 인코딩 / 문자열을 범주형 데이터로 바꾸기 (0) | 2022.03.05 |
[Pandas] 데이터 살펴보기 / head,tail,info,describe,shape,count,value_counts (0) | 2022.02.24 |