반응형

 

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

<seaborn 관련 글>

 

2021.08.08 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_1편. Seaborn 소개

2021.08.18 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_2편. Seaborn 학습을 위한 데이터 셋 3종 소개 (ft. 붓꽃, 타이타닉, 팁 데이터 셋)

2021.08.19 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_3편. Seaborn 그래프 종류 총 정리(ft. Relational plots)

2021.08.22 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_4편. Seaborn 그래프 종류 총 정리(ft. Distribution plots)

2021.08.23 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_5편. Seaborn 그래프 종류 총 정리(ft. Categorical plots)

 


 

오늘은 지난 시간의 Distribution plots에 이어서, Male/Female, Yes/No와 같은 범주형 변수와 연속형 변수(숫자) 간의 관계를 나타내기 위한 그래프인 Categorical plots에 대해서 공부해보겠습니다.

 

Categorical plots

1) barplot

2) countplot

3) boxplot

4) violineplot

5) stripplot

6) swarmplot

7) boxenplot

8) pointplot

9) catplot

 

Categroical plots은 종류가 많은 관계로 이번 시간에는 붉은색으로 표시한 4가지 plot에 대해 공부해 보고, 다음 시간에 나머지 plot들에 대해 이어서 공부해 보겠습니다.

 

1. barplot

  • 이변량(bivariate) 분석을 위한 plot
  • x축에는 범주형 변수, y축에는 연속형 변수를 입력
  • x에 연속형, y에 범주형을 넣으면 수평막대그래프를 출력

 

seaborn 강의 2편에서 소개해드렸던 'tips' 데이터 셋으로 그래프를 그려보겠습니다.

 

x축에 범주형 변수 'day'와 y축에 'tip'이라는 연속형 변수(숫자)를 넣어주었습니다.

 

ax = sns.barplot(data=tips, x = 'day', y = 'tip')

 

아래의 그래프는 요일에 따른 tip의 평균 금액을 나타냅니다. 일요일이 평균적으로 팁을 많이 받았네요.

 

앞서 배웠던 그래프들과 마찬가지로 hue 파라미터를 이용해 범주형 변수에 따라 그래프를 나누어서 표현 가능합니다.

ax = sns.barplot(x="day", y="tip", hue="smoker", data=tips)

 

아래의 그래프는 요일별로 흡연 여부에 따라 팁의 평균금액을 나타내 보았습니다. 흡연여부와 팁의 금액은 별로 상관 없어 보이네요.

 

여기서 위에 검은 막대가 무엇인지 궁금하실 텐데요. 이 막대는 오차를 나타내는 막대입니다.

 

ci 파라미터는 3가지 옵션(숫자 / 'sd' / None)을 가질 수 있으며, 숫자는 신뢰구간(%), 'sd'는 표준편차, None은 표현하지 않음을 의미합니다. 자세한 설명을 위해서는 통계 지식이 필요하므로 추후에 설명하기로 하고, None을 넣어서 검은색 막대를 없애보겠습니다.

 

이번 코드에서 주의 깊게 보실부분은 ci 설정과 x와 y의 데이터를 바꾸어줌으로써 수평막대 그래프로 바뀐 것입니다.

ax = sns.barplot(y="day", x="tip", ci=None, data=tips)

 

 

2. countplot

  • histplot과 마찬가지로 동일한 데이터의 갯수를 count
  • 단, histplot은 연속형 데이터, countplot은 범주형 데이터를 입력받음
  • x에 데이터를 넣으면 막대그래프, y에 데이터를 넣으면 수평막대그래프를 출력

 

마찬가지로 hue 파라미터를 설정 가능합니다. 그냥 seaborn 그래프는 전부 hue를 설정가능한 것 같네요.

ax = sns.countplot(x="smoker", hue="sex", data=tips)

 

레스토랑 손님중 흡연자 수를 성별에 따라 나누어 표현해 보았습니다. 손님중 비흡연자가 더 많고, 남자 손님이 더 많았던 것 같네요.

 

3. boxplot

  • 변수 1개(x or y축)일 때는 연속형 변수 입력 (범주형 변수는 에러)
  • 변수 2개(x and y축)일 때는 연속형 변수와 범주형 변수를 입력
  • 데이터 통계치(최대, 최소, 평균, 1사분위수, 3사분위수)를 한번에 표시
  • 특정 데이터의 전체적인 분포를 확인하기 좋은 그래프
  • 특이치(outliar)를 발견하기 좋음

 

연속형 변수가 x축에 들어가면 가로 그래프, y축에 들어가면 세로 그래프를 출력합니다.

ax = sns.boxplot(x="tip", data=tips)

 

변수를 두 개 쓸 때는 하나는 범주형, 하나는 변수형으로 써줘야합니다.

 

ax = sns.boxplot(x="day", y="total_bill", data=tips)

박스 플롯이 의미하는 바는 아래 그림에 설명되어 있으며, 더 궁금하신분은 글 하단의 링크를 참고해주세요.

 

출처. https://flowingdata.com/2008/02/15/how-to-read-and-use-a-box-and-whisker-plot/

 

4. violinplot

  • 변수 입력 규칙은 boxplot과 동일
  • 데이터의 분포에 따라 통통하고 홀쭉하게 표현한 모습이 바이올린을 닮은 그래프
  • boxplot은 이상치를 한 눈에 파악할 수 있고, violinplot은 데이터 분포를 한 눈에 파악할 수 있음

 

ax = sns.violinplot(x="day", y="total_bill", data=tips)

 

 


<참고하면 좋은 자료>

 

boxplot 설명

https://leebaro.tistory.com/entry/%EB%B0%95%EC%8A%A4-%ED%94%8C%EB%A1%AFbox-plot-%EC%84%A4%EB%AA%85

 

<참고 자료>

 

seaborn 공식 자료

https://seaborn.pydata.org/api.html

 

반응형

+ Recent posts