2020년 3월 19일 목요일

Day_00. Intro_06

Pandas pivot table
--group by 와 pivot table 의 차이점
----다차원(multi-demention)에서 작동
----data가 있을 때 어떤 기준으로 나누고 각 그룹의 수치의 값을 볼지 결정한다

** Titanic 의 생존자 data를 seaborn 에서 가져와서 실습해보자**
1. seaborn 에서 titanic 생존자 data를 가져오기
2. 성(sex)별생존자 를 계산한다
3. 선실별 등급(class) 과 성별의 생존률의 관계
4. 0,24,60의 나이대 그룹에서 생존 성별,등급
5. 0,24,60 의 나이대 그룹에서의 생존 성별 등급의 평균 좌석별 요금(fare)
6. 생존자의 총합, 요금의 평균값을 생성


seaborn 에서 titanic 생존자 data를 가져오기

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.style.use('seaborn')

titanic = sns.load_dataset('titanic',engine='python')
titanic


성(sex)별생존자 를 계산한다
titanic.groupby('sex')[['survived']].mean()

--여성과 남성의 생존률 평균치, 그런데 이때 여성의 생존률이 4배 이상이라고 결정지을수 있나?
선실별 등급(class) 과 성별의 생존률의 관계
titanic.groupby(['sex','class'])[['survived']].mean()

titanic.groupby(['sex','class'])[['survived']].mean().unstack()
---row base로 옆으로 펼친다

Pivot table로 구성하기
titanic.pivot_table('survived', index='sex', columns='class')

0,24,60의 나이대 그룹에서 생존 성별,등급
--3개의 그룹상황에서의 pivoting

age_div = pd.cut(titanic['age'],[0,24,60])
--원하는 나이 구간을 위해 생성한다
titanic.pivot_table('survived',['sex','age'],'class')
--age라는 column으로만 pivoting 할 때 상황

titanic.pivot_table('survived',['sex',age_div],'class')
--위에서 선언한 age_div를 이용해 구간을 적용함

0,24,60 의 나이대 그룹에서의 생존 성별 등급의 평균 좌석별 요금(fare)
--2개의 multi group 이 필요함

age_div = pd.cut(titanic['age'],[0,24,60])
fare_div = pd.qcut(titanic['fare'],2)
titanic.pivot_table('survived',['sex',age_div],['class',fare_div])



생존자의 총합, 요금의 평균값을 생성
titanic.pivot_table(index='sex',columns='class',aggfunc={'survived':sum,'fare':np.mean})



댓글 없음:

댓글 쓰기