반응형
스태킹과 언스태킹¶
피벗함수와 유사한 .stack()과 .unstack()이 있습니다. 스태킹은 칼럼 레이블과 그 값을 로우 인덱스와 값으로 회전시킵니다. 언스테이킹은 로우 인덱스와 그 값이 칼럼 레이블과 값으로 회전 되도록 변경합니다.
In [5]:
import pandas as pd
sensor_readings = pd.DataFrame({
"axis" : ['x', 'x', 'x', 'x', 'x', 'y','y','y','y','y'],
"error" : [0,1,0,0,0,1,1,0,1,0]},
index = {0,1,2,3,4,5,6,7,8,9})
sensor_readings
Out[5]:
axis | error | |
---|---|---|
0 | x | 0 |
1 | x | 1 |
2 | x | 0 |
3 | x | 0 |
4 | x | 0 |
5 | y | 1 |
6 | y | 1 |
7 | y | 0 |
8 | y | 1 |
9 | y | 0 |
데이터프레임이 여러 개의 컬럼을 갖고 있다면 모든 컬럼은 인덱스 레벨로 이동합니다. 아래와 같이 stack() 적용 후 데이터프레임을 보면 axis와 error 컬럼이 인덱스로 이동하면서 계층형 인젝스로 변경된 것을 알 수 있습니다.
In [6]:
stacked = sensor_readings.stack()
stacked
Out[6]:
0 axis x error 0 1 axis x error 1 2 axis x error 0 3 axis x error 0 4 axis x error 0 5 axis y error 1 6 axis y error 1 7 axis y error 0 8 axis y error 1 9 axis y error 0 dtype: object
변경된 index 정보를 확인해보면 MultiIndex 객체 형식이고 인덱스가 튜플로 구분되어진 것을 확인할 수 있습니다. 튜플의 첫번째 요소부터 인덱스 상위 계층으로 구성됩니다.
그리고 sensor_readings 데이터프레임을 stacked()을 수행하고 난 type은 series임을 주의해야합니다. staked의 type 이 series로 표시됩니다.
In [22]:
print(type(stacked.index))
print(type(stacked))
<class 'pandas.core.indexes.multi.MultiIndex'> <class 'pandas.core.series.Series'>
staked()를 사용해서 series로 변경된 계층형 인덱스를 참조하기 위해서는 튜플형식으로 인덱스를 사용합니다. (4, 'axis')는 4번 index의 axis 컬럼값을 출력합니다. (4, 'error') 계층형 인덱스는 4번 index의 'error' 컬럼값을 출력합니다.
In [15]:
stacked[(4, 'axis')]
Out[15]:
'x'
In [23]:
stacked[(4, 'error')]
Out[23]:
0
계층형 인덱스를 언스태킹 unstake()를 사용합니다. unstak()를 수행하면 계층형 인덱스 정보가 컬럼으로 변경된 것을 확인할 수 있습니다.
In [26]:
stacked.unstack()
Out[26]:
axis | error | |
---|---|---|
0 | x | 0 |
1 | x | 1 |
2 | x | 0 |
3 | x | 0 |
4 | x | 0 |
5 | y | 1 |
6 | y | 1 |
7 | y | 0 |
8 | y | 1 |
9 | y | 0 |
반응형
'Programming' 카테고리의 다른 글
[VSCODE] 파이썬 개발 환경 구축하기 (0) | 2022.01.23 |
---|---|
[collab] 코랩 GPU 사용하기 및 성능비교 (4) | 2022.01.17 |
[Pandas] 데이터 피봇팅 (0) | 2022.01.16 |
파이썬 코랩 (collab) 만들기 (0) | 2022.01.16 |
[구글스프레드] 드롭다운 메뉴 만들기 (0) | 2022.01.14 |