Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- dataframe
- 노마드코딩
- 가상환경
- 알고리즘스터디
- queue
- 파이썬
- python
- 코딩테스트
- 데이터시각화
- 선그래프
- type hint
- openCV
- programmers
- 프로그래머스
- pandas
- Stack
- Algorithm
- javascript
- aws jupyter notebook
- NumPy
- Join
- MySQL
- 백준
- String Method
- 정보처리기사 c언어
- Selenium
- 알고리즘
- 자료구조
- 알고리즘 스터디
- Matplotlib
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[Pandas] 피벗 테이블(Pivot Table) & 멀티 인덱스(MultiIndex) 본문
Python/Numpy & Pandas
[Pandas] 피벗 테이블(Pivot Table) & 멀티 인덱스(MultiIndex)
all_sound 2022. 10. 10. 23:30피벗 테이블
- 판다스 pivot_table() 사용
- pivot_table() 함수의 기본 구성요소 : 행인덱스, 열인덱스, 데이터값, 데이터집계함수
# 데이터 확인
df = sns.load_dataset('titanic')
df.head()
# 데이터 프레임 -> 피벗 테이블
pd.pivot_table(df, # 피벗할 데이터 프레임
values='age', # 데이터로 사용할 들어갈 열
index='class', # 행 위치에 들어갈 열
columns='sex', # 열 위치에 들어갈 열
aggfunc='mean') # 데이터 집계 함수
pd.pivot_table(data=df, # 피벗할 데이터 프레임
values='survived', # 데이터로 사용할 열
index='class', # 행 위치에 들어갈 열
columns='sex', # 열 위치에 들어갈 열
aggfunc=['mean', 'sum']) # 데이터 집계 함수
# 더 많은 열을 사용해서 피벗 데이블 구성
pd.pivot_table(df,
values=['age', 'fare'],
index=['class', 'sex'],
columns='survived',
aggfunc=['mean', 'max'])
멀티 인덱스
# 타이타닉 데이터에서 'calss', 'sex' 열에 대해 그룹객체 생성
grouped = df.groupby(['class', 'sex'])
# 평균으로 집계 후 변수에 저장
gdf = grouped.mean() #멀티 인덱스 상태
gdf
▶ 멀티 인덱스의 인덱싱
# 'class'열의 'First'행만 인덱싱
gdf.loc['First']
# 'First' 행의 'female' 행 인덱싱
gdf.loc[('First', 'female')] # index를 차례로 찾아들어감
▶ 멀티 인덱서 (.xs)
- group객체.xs()
- 그룹 범주와 상관없이 소 인덱스를 따로 추출 (레벨 지정)
# 소 인덱스를 따로 추출 ( sex 열을 기준으로 male 추출)
gdf.xs('male', level='sex')
▶ 멀티 인덱스 해제
gdf.reset_index()
# 열이 멀티인덱스인 경우
gdf2 = df.groupby('class').agg(['mean','max'])[['age','fare']]
gdf2
# 열이름 새로 지정
gdf2.columns = ['age_mean', 'age_max', 'fare_mean','fare_max']
gdf2.head()
피벗테이블의 멀티인덱싱 응용
# 피벗 테이블 생성
pdf = pd.pivot_table(df,
index = ['class','sex'],
columns = 'survived',
values = ['age','fare'],
aggfunc = ['mean','max'])
pdf
# 'First' 그룹 인덱싱
pdf.xs('First')
# 'sex'열의 'male'행 인덱스
pdf.xs('male', level='sex')
# 'class'열의 'First'행, 'sex'열의 'female'행 인덱싱
pdf.xs(('First','female'), level=['class','sex'])
# 열의 멀티인덱싱 (axis=1)
# 'mean'열만 인덱싱
pdf.xs('mean', axis=1)
# 'mean'열의 'age'열 인덱싱
pdf.xs(('mean','age'), axis=1)
'Python > Numpy & Pandas' 카테고리의 다른 글
[Pandas] 그룹객체 생성과 그룹연산 (Groupby, agg, transform, filter, apply) (0) | 2022.10.10 |
---|---|
[Pandas] 데이터프레임 연결 (concat, merge, join) (0) | 2022.10.07 |
[Pandas] 함수 매핑(mapping) / apply, applymap, pipe (0) | 2022.10.06 |
[Pandas] 시계열 데이터 생성, 변환, 분리, 인덱싱(to_datetime, to_period, date_range, period_range 등) (0) | 2022.10.05 |
[Pandas] 범주형(category) 데이터처리 / 구간분할(pd.cut, np.histogram) (0) | 2022.10.04 |