27. 피벗

따또·2021년 7월 27일
0

Pandas DA

목록 보기
27/31
post-thumbnail

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인 것만 선택

profile
따또의 DA 벨로그

0개의 댓글