본문 바로가기

빅데이터분석기사_실기/기초

피벗테이블

  • 데이터를 행과 열로 그룹화하여 (=crosstab) 요약통계를 계산!
  • pd.pivot_table(데이터명, index = '행 기준', columns = '열 기준', values='값에 적용될 컬럼', aggfunc = '집계함수')
from google.colab import drive
drive.mount('/content/drive')
import pandas as pd

file_path = '/content/drive/MyDrive/data/titanic_train.csv'
df = pd.read_csv(file_path)

 

실습데이터 준비


단일인덱스, 단일 컬럼, 단일 값 피벗테이블

pd.pivot_table(df, index='Sex', columns = 'Pclass', values='Survived', aggfunc = 'mean')

결과

행 기준은 Sex, 열 기준은 Pclass, 각 값에는 그룹 별 Survived의 평균!

여자일수록, Pclass가 높을수록(1에 가까움) 생존 확률이 올라갔음을 유추할 수 있다.


pd.pivot_table(df, index = 'Sex', columns = 'SibSp', values = 'Survived', aggfunc = 'mean')

결과

행 기준은 Sex, 열 기준은 SibSp(동반 가족의 수), 각 값에는 그룹 별 Survived의 평균!

동반 가족이 없을수록 생존확률이 높았다고 유추할 수 있다.


pd.pivot_table(df, index='Sex', columns='Survived', values='Age', aggfunc='mean', margins=True)

결과

margins=True 옵션을 통해 각 행(열)의 전체 평균도 구할 수 있다.


pd.pivot_table(df, index='Sex', columns='Survived', values='Age', aggfunc=['max','min','mean'])

결과

aggfunc에 리스트로 여러개의 집계함수를 넣으면 여러개의 연산을 한번에 할 수있다.


다중 인덱스, 다중 컬럼, 다중 값 피벗테이블

pd.pivot_table(df, index=['Sex','Pclass'], columns='Survived', values='Age', aggfunc='mean')

결과

다중인덱스: 행 기준이 Sex와 Pclass

열 기준은 Survived, 값에는 그룹별 나이 평균


pd.pivot_table(df, index='Survived', columns=['Sex','Pclass'], values='Age', aggfunc='mean')

결과

다중컬럼: 열 기준은 Sex와 Pclass

행 기준은 Survived, 값에는 그룹별 나이 평균


pd.pivot_table(df, index=['Sex','Pclass'], columns=['Survived','Embarked'], values='Age', aggfunc='mean')

결과

다중인덱스: 행 기준은 Sex와 Pclass

다중컬럼: 열 기준은 Survived와 Embarked

값에는 그룹별 나이 평균


pd.pivot_table(df, index=['Sex','Pclass'], columns=['Survived','Embarked'], values=['Age','Fare'], aggfunc='mean')

결과

다중인덱스: 행 기준은 Sex와 Pclass

다중컬럼: 열 기준은 Survived와 Embarked

다중값: 값은 age 평균, 그리고 Fare 평균 

'빅데이터분석기사_실기 > 기초' 카테고리의 다른 글

데이터 구조 변경: stack, unstack, melt  (0) 2024.06.12
crosstab  (0) 2024.06.11
groupby  (0) 2024.06.11
데이터 분포와 통계량  (0) 2024.06.11
데이터 결합  (0) 2024.06.11