2024.10.22 - [빅데이터 공부] - [Pandas] 데이터 변형하기 - groupby
[Pandas] 데이터 변형하기 - groupby
1. groupby()2. pd.pivot(), pd.pivot_table()3. stack(), unstack() 실습을 위한 라이브러리 임포트import numpy as npimport pandas as pdimport seaborn as sns 팁 데이터 사용tips = sns.load_dataset('tips') 데이터 살펴보기tips.head()ti
dogfoot1.tistory.com
2024.12.07 - [빅데이터 공부] - [Pandas] 데이터 변형하기 - pivot, pivot_table
[Pandas] 데이터 변형하기 - pivot, pivot_table
2024.10.22 - [빅데이터 공부] - [Pandas] 데이터 변형하기 - groupby [Pandas] 데이터 변형하기 - groupby1. groupby()2. pd.pivot(), pd.pivot_table()3. stack(), unstack() 실습을 위한 라이브러리 임포트import numpy as npimport pa
dogfoot1.tistory.com
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
pandas.DataFrame.stack — pandas 2.2.3 documentation
Level(s) to stack from the column axis onto the index axis, defined as one index or label, or a list of indices or labels.
pandas.pydata.org
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.unstack.html
pandas.DataFrame.unstack — pandas 2.2.3 documentation
Level(s) of index to unstack, can pass level name.
pandas.pydata.org
특징
- 데이터 가독성이 떨어질 때 사용한다
- 멀티 컬럼(오른쪽으로 갈 수록 마지막 레벨)
- 멀티 인덱스(아래로 갈 수록 마지막 레벨)
- 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] 데이터 병합하기 - merge (0) | 2025.02.19 |
---|---|
[Pandas] 데이터 병합하기 - concat (0) | 2025.02.17 |
[Pandas] 데이터 변형하기 - pivot, pivot_table (0) | 2024.12.07 |
[Pandas] 데이터 변형하기 - groupby (0) | 2024.10.22 |
[Pandas] DataFrame (0) | 2024.07.14 |