본문 바로가기
데이터 분석/파이썬 데이터 분석가 되기+챗GPT

04장 데이터 시각화 라이브러리, 시본

by yEvery 2025. 2. 8.

04.1 시본 기본 개념 알아보기

import seaborn as sns
sns.get_dataset_names()

시본(seaborn)

  • 맷플롯립 기반의 데이터 시각화 라이브러리
  • 맷플롯립보다 간편하게 사용, 효과적으로 모양을 다듬을 수 있다.
  • 통계 데이터를 시각적으로 표현하는데 적절, 더 높은 수준의 그래프 생성 가능
  • 자체 데이터셋이 포함

04.2 여섯 가지 그래프 이해하기

 

 범주형 변수 산점도 그래프

sns.stripplot(x='day', y='tip', hue='sex', data=tips, alpha=0.7, ax=ax1)
sns.swarmplot(x='day', y='tip', hue='sex', data=tips, palette='Set2', alpha=0.7, ax=ax2)

 

  • 범주형 변수와 연속형 변수 간의 관계를 시각화, 데이터 분포 확인
  • scatterplot() 함수: 연속형 변수와 연속형 변수의 관계
  • stripplot() 함수: 범주형 변수의 분포를으로, 주로 하나의 변수에 대한 데이터, 점이 겹칠 수 있음, 밀도 표현 유용
  • swarmplot() 함수: 겹치지 않도록 시각화, 중첩되지 않게 나열, 데이터의 분포를 시각적으로 파악
  • 연속형 변수: 연속적인 값, 무한히 많은 값, 실수, ex) 온도, 키, 시간
  • 범주형 변수: 명목형: 서로 구별되는 범주 ex) 성별, 혈액형 순서형: 순서 또는 등급이 있음 ex) 학력 수준, 만족도

남성이 전반적으로 팁을 더 많이 주는 경향, 주말의 남성 팁이 더 높음.

주말에 팁이 더 높게 나타나는 경향, 남성의 팁 분포가 여성보다 더 넓게 퍼져 있음.

 

빈도 그래프

sns.countplot(x='time', data=tips, ax=ax1)
sns.countplot(x='time', hue='day', data=tips, palette='Set2', ax=ax2)
  • 범주형 변수의 카테고리별 빈도를 막대 그래프로
  • countplot() 함수

Dinner에서 팁을 받은 빈도가 더 높다. 특히 Saturday가 상대적으로 다른 날에 비해 높은 빈도.

 

선형 회귀선이 있는 산점도 그래프

sns.regplot(x='total_bill', y='tip', data=tips, color='blue', scatter_kws={'s': 50, 'alpha': 0.5}, line_kws={'linestyle': '--'}, ax=ax1)
sns.regplot(x='total_bill', y='tip', data=tips, color='blue', scatter_kws={'s': 50, 'alpha': 0.5}, line_kws={'linestyle': '--'}, ax=ax2, fit_reg=False)
  • 두 변수 간의 선형 관계 시각화
  • 두 변수 간의 추세 확인
  • regplot() 함수: fit_reg 매개변수False로 지정하면 회귀선을 그리지 않는다.

선형 회귀선을 통해 Total bill 변수와 tip 변수 간에 어느 정도 양의 선형 관계가 있음을 알 수 있다.

선형 회귀선이 없는 그래프는 관계성은 잘 안 보이지만, 데이터 분포에 집중할 때는 오히려 나을 수 있다.

 

히스토그램과 커널 밀도 추정 그래프

sns.histplot(tips['tip'], bins=30, kde=True, color='skyblue')
  • 커널 밀도 추정 그래프: 데이터 분포를 나타냄. 곡선을 사용
  • histplot() 함수: kde 매개변수를 True로 지정하면 커널 밀도 추정(KDE) 곡선을 히스토그램 위에 그림  

대부분의 팁은 0에서 5사이에 분포

 

조인트 그래프

sns.jointplot(x='size', y='tip', data=tips, kind='scatter')
  • 두 연속형 변수 간의 이변량 분포 표현
  • 주로 산점도와 히스토그램으로 함께 시각화
  • 데이터 간의 관계 확인
  • 이변량: 두변수
  • 이변량 분포: 각 변수가 개별적으로 어떻게 분포하는지와 두 변수가 함께 어떻게 변하는지를 함께 고려
  • jointplot() 함수 

식사를 함께 한 그룹의 인원 수(size)가 커지면 tip이 많아짐

팁의 식사 인원은 양의 상관 관계를 가짐.

 

관계 그래프

sns.pairplot(data=tips, hue='sex', diag_kind='hist', palette = 'husl')
  • 데이터셋의 모든 연속형 변수들 간의 산점도와 각 변수의 히스토그램을 한번에 나타냄
  • 데이터의 특성을 빠르게 시각적으로 탐색, 상관 관계 확인하는데 주로 사용
  • pairplot() 함수: diag_kind 매개변수를 통해 대각선에 나타날 그래프의 종류 선택

왼쪽 위에서 오른쪽 아래로 가로지르는 방향에 히스토그램을 그리도록 설정.

성별에 따른 산점도를 통해 팁과 다른 변수들 간의 관계 시각적으로 확인

인당 지불한 총 식사 비용이 높으면 더 많은 팁을 주는 경향