Pandas 튜토리얼에 있는 Lessons for new pandas users_05에 대한 내용이다.

본 장에서는 stackunstack 함수에 대해서 간략히 살펴본다.

In [1]:
# 라이브러리 임포트하기
import pandas as pd
In [2]:
# 데이터셋 만들기
d = {'Ansung': [1, 2], 'Seoul': [3, 4]}
i = [2017, 2018]

# 데이터프레임 만들기
df = pd.DataFrame(data = d, index = i)
df
Out[2]:
Ansung Seoul
2017 1 3
2018 2 4
In [3]:
df.index
Out[3]:
Int64Index([2017, 2018], dtype='int64')

stack() : 데이터의 열(column)을 인덱스(index)로 회전시킨다.

unstack() : 데이터의 인덱스를 열로 회전시킨다.

stack과 unstack는 보통 가장 안쪽에 있는 것부터 회전시킨다.

In [4]:
stack = df.stack()
stack
Out[4]:
2017  Ansung    1
      Seoul     3
2018  Ansung    2
      Seoul     4
dtype: int64
In [5]:
# 인덱스를 살펴보면, df의 열 이름(column names)이 포함되어 있다.
stack.index
Out[5]:
MultiIndex(levels=[[2017, 2018], ['Ansung', 'Seoul']],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]])
In [6]:
unstack = df.unstack()
unstack
Out[6]:
Ansung  2017    1
        2018    2
Seoul   2017    3
        2018    4
dtype: int64
In [7]:
unstack.index
Out[7]:
MultiIndex(levels=[['Ansung', 'Seoul'], [2017, 2018]],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]])

T (transpose) 함수를 이용해서 행과 열을 바꿀 수 있다.

In [8]:
transpose = df.T
transpose
Out[8]:
2017 2018
Ansung 1 2
Seoul 3 4
In [9]:
transpose.index
Out[9]:
Index(['Ansung', 'Seoul'], dtype='object')