2024.10.22 - [빅데이터 공부] - [Pandas] 데이터 변형하기 - groupby
2024.12.07 - [빅데이터 공부] - [Pandas] 데이터 변형하기 - pivot, pivot_table
1. groupby()
2. pd.pivot(), pd.pivot_table()
3. stack(), unstack()
실습을 위한 라이브러리 임포트
import numpy as np
import pandas as pd
참고
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.stack.html
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.unstack.html
특징
- 데이터 가독성이 떨어질 때 사용한다
- 멀티 컬럼(오른쪽으로 갈 수록 마지막 레벨)
- 멀티 인덱스(아래로 갈 수록 마지막 레벨)
- stack: 컬럼을 인덱스로(마지막 레벨부터 인덱스로 바뀜)
- unstack: 인덱스를 컬럼으로(마지막 레벨부터 컬럼으로 바뀜)
데이터 프레임 생성
df = pd.DataFrame({
"r1": ["one", "one", "two", "three"] * 6,
"r2": ["A", "B", "C"] * 8,
"r3": ["foo", "foo", "foo", "bar", "bar", "bar"] * 4,
"r4": np.random.randn(24)
})
stack() : 컬럼을 인덱스로
pivot_table을 이용하여 멀티 컬럼으로 바꾼다
# index: r1, column: r2, r3, value: r4
st = pd.pivot_table(df, index='r1', columns=['r2', 'r3'], values='r4')
st
인덱스: r1
컬럼: r2, r3
컬럼의 마지막 레벨을 인덱스로 보내고 싶을 때
st.stack()
컬럼의 마지막 레벨인 r3(아래로 갈수록 마지막 레벨)가 인덱스의 마지막 레벨로 이동했다
인덱스: r1 -> r1, r3
컬럼: r2, r3 -> r2
컬럼의 처음 레벨을 인덱스로 보내고 싶을 때(순서대로 0, 1, ...)
st.stack(0)
인덱스: r1 -> r1, r2
컬럼: r2, r3 -> r3
unstack(): 인덱스를 컬럼으로
멀티 인덱스인 st.stack(0)을 가지고 다시 unstack()을 해보겠다
uns = st.stack(0)
uns
인덱스: r1, r2
컬럼: r3
인덱스의 마지막 레벨을 컬럼으로 보내고 싶을 때
uns.unstack()
인덱스의 마지막 레벨인 r2(오른쪽으로 갈수록 마지막 레벨)가 컬럼의 마지막 레벨로 이동했다
인덱스: r1, r2 -> r1
컬럼: r3 -> r3, r2
인덱스의 처음 레벨을 컬럼으로 보내고 싶을 때(순서대로 0, 1, ...)
uns.unstack(0)
인덱스: r1, r2 -> r2
컬럼: r3 -> r3, r1
'빅데이터 공부' 카테고리의 다른 글
[Pandas] 데이터 변형하기 - pivot, pivot_table (0) | 2024.12.07 |
---|---|
[Pandas] 데이터 변형하기 - groupby (0) | 2024.10.22 |
[Pandas] DataFrame (0) | 2024.07.14 |
PCA (2) | 2024.01.09 |
[빅데이터분석기사 실기] 제3유형-가설검정 (0) | 2024.01.08 |