1) 피벗테이블
import pandas as pd
import seaborn as sns
pd.set_option('display.max_columns', 10)
pd.set_option('display.max_colwidth', 20)
titanic = sns.load_dataset('titanic')
df = titanic.loc[:, ['age', 'sex', 'class', 'fare', 'survived']]
pdf1 = pd.pivot_table(df,
index = 'class', # 행 위치에 들어갈 열
columns = 'sex', # 열 위치에 들어갈 열
values = 'age', # 데이터로 사용할 열
aggfunc = 'mean') # 데이터 집계 함수
# class 와 sex 별 age 평균 계산
print(pdf1.head())
pdf2 = pd.pivot_table(df,
index = 'class', # 행 위치에 들어갈 열
columns = 'sex', # 열 위치에 들어갈 열
values = 'survived', # 데이터로 사용할 열
aggfunc = ['mean', 'sum']) # 데이터 집계 함수
# class 와 sex 별 survived 평균과 합 계산
print(pdf2.head())
pdf3 = pd.pivot_table(df,
index = ['class', 'sex'], # 행 위치에 들어갈 열
columns = 'survived', # 열 위치에 들어갈 열
values = ['age', 'fare'], # 데이터로 사용할 열
aggfunc = ['mean', 'max']) # 데이터 집계 함수
# class 와 sex, survived 별 age, fare 평균과 최대값계산
print(pdf3.xs('First'))
# First class만 출력
print(pdf3.xs(('First', 'female')))
# First class이고 female인 데이터에 해당하는 결과만 출력
print(pdf3.xs('male', level = 'sex'))
# 행 인덱스의 sex 레벨이 male인 행 선택
print('\n')
print(pdf3.xs(('Second', 'male'), level = [0, 'sex']))
# class가 Second이고 sex가 male인 행 선택
print('\n')
print(pdf3.xs('mean', axis = 1))
# 열 인덱스가 mean인 열을 선택 (평균값이 계산된 열 선택)
print('\n')
print(pdf3.xs(('mean', 'age'), axis = 1))
# 열 인덱스가 mean과 age인 열을 선택 (나이의 평균값 반환)
print('\n')
print(pdf3.xs(1, level = 'survived', axis = 1))
# survived 열이 1 인 것만 선택
print('\n')
print(pdf3.xs(('max', 'fare', 0), level = [0,1,2], axis = 1))
# max, fare, survived열이 0인 것만 선택