[Python] 범주형에 따라 그래프 나누어 그리기

카테고리 없음

[Python] 범주형에 따라 그래프 나누어 그리기

INCHELIN 2021. 3. 14. 21:32
728x90

범주형에 따라 그리드로 나누어 그래프를 나누어 한 번에 그리는 방법입니다.

 

캐글의 타이타닉 데이터를 이용하여 보여드리겠습니다. 각 그래프에 대한 설명은 생략하도록 하겠습니다. 

import pandas as pd
import seaborn as sns

train = pd.read_csv('train.csv')
train.head()

train['Survived'].value_counts()


0과 1로 이루어진 범주형 변수 'Survived'에 따라 연령대('Age')가 어떤지 히스토그램 그래프로 살펴보겠습니다.

g = sns.FacetGrid(train, col='Survived')
g.map(plt.hist, 'Age', bins=20)


또는, 남자/여자로 이루어진 범주형 변수 'Sex'에 따라 연령별 탑승요금에 대해 산점도로 봐보겠습니다.

x축에는 'Age', y축에는 'Fare' 변수를 입력했습니다.

g = sns.FacetGrid(train, col='Sex')
g.map(plt.scatter, 'Age', 'Fare')


탑승항구(Embarked)에 따라

x축에는 탑승클래스(Pclass), y축에는 생존여부(Survived)를 성별에 따라 어떤지 point plot으로 살펴보겠습니다.

point plot은 각 카테고리 별로 어떤지 보는 그래프입니다.

 

g = sns.FacetGrid(train, row='Embarked', size=2.2, aspect=1.6)
g.map(sns.pointplot, 'Pclass', 'Survived', 'Sex', palette='deep')
g.add_legend()


마지막으로 조건을 하나 더 추가해서 탑승항구(Embarked)와 생존여부(Survived)를 행과 열로 나누어 그리는데요,

x축은 성별(Sex), y축은 요금(Fare)으로 bar plot을 그려봅니다.

 

g = sns.FacetGrid(train, row='Embarked', col='Survived', size=2.2, aspect=1.6)
# size, aspect는 그래프의 크기를 조절하는 파라미터

g.map(sns.barplot, 'Sex', 'Fare', alpha=.5, ci=None)
# alpha는 그래프 색상의 불투명도 조절, ci는 신뢰구간 표시 여부

g.add_legend()

 

출처 :www.kaggle.com/startupsci/titanic-data-science-solutions

728x90