Seaborn 기초

yst3147·2022년 2월 11일
0

공부 내용

  • Seaborn
  • Seaborn Parameter
  • Seaborn API
    • Categorical API
    • Distribution API
    • Relational API
    • Regression API
    • Matrix API

Seaborn

Seaborn 소개

  • Seaborn은 Matplot 기반 통계 시각화 라이브러리
    • 통계 정보 : 구성, 분포, 관계 등
    • Matplotlib 기반
      -> Matplotlib으로 커스텀 가능
    • 쉬운 문법, 깔끔한 디자인

Seaborn 설치

!pip install seaborn==0.11
import seaborn as sns

Seaborn Parameter

  • countplot은 Categorical API의 대표적인 시각화
    • 범주를 이산적으로 세서 막대그래프로 그려 줌
  • seaborn 공통 파라미터 종류
    • x : x축 feature (세로 막대)
    • y : y축 feature (가로 막대)
    • data : dataframe
    • hue : 데이터의 구분 기준을 정하여 색상을 통해 내용을 구분
      • hue_order : 색상 순서 정렬
    • palette : 색상 변경
    • color : hue 그룹에 Gradient 색상을 전달
    • saturation : 채도(많이 사용하진 않음)
    • ax : ax subplot 지정

Categorical API

  • 범주 통계값들을 시각적으로 보여주는 API
  • 통계값 종류
    • count : 데이터 수
    • mean : 평균
    • std : 표준편차
    • 사분위수 : 데이터를 4등분한 관측값(크기 순서에 따른 위치값)
      • min
      • 25% (lower quartile)
      • 50% (median)
      • 75% (upper quartile)
      • max

Code

data.describe()

Box Plot

  • 분포를 살피는 대표적인 시각화 방법
  • 중간의 사각형의 선은 25%, medium, 75% 4분위수 값을 의미

커스텀 가능 요소

  • width : 박스 너비
  • linewidth : 선 두께
  • filtersize : 이상치 점 크기

Violin Plot

  • boxplot은 대표값을 보여주지만 실제 분포를 표현하기는 부족
    -> Violinplot은 이런 분포 정보를 제공해주는 데 적합함
  • 흰점이 중간값, 중간 검정 막대가 IQR 범위
    • interquartile range (IQR): 25th to the 75th percentile.

발생되는 오해

  • 데이터가 연속적이지 않음(kernel density estimate 사용)
    • Kernel Density Estimation(커널밀도추정) : 히스토그램 등을 smoothing 하는 것
  • 연속적 표현에서 생기는 데이터의 손실과 오차가 존재
  • 데이터의 범위가 없는 데이터까지 표시

오해를 줄이기 위한 파라미터

  • bw : 분포 표현을 얼마나 자세하게 보여줄 것인가
    • 'scott', 'silverman', float
  • cut : 끝부분을 얼마나 자를 것인가?
    • float
  • inner : 내부를 어떻게 표현할 것인가
    • "box", "quartile", "point", "stick", None

hue 사용 분포 비교

  • 비교를 위한 조정 가능 변수
  • scale : 각 바이올린의 종류(데이터의 크기 반영 방법)
    • "area", "count", "width"

  • split : 동시 표현 가능

그 외 Categorical API plot

boxenplot

swarmplot

stripplot

Distribution API

범주형/연속형 모두 살펴볼 수 있는 분포 시각화

Univariate Distribution

단일 변수 분포 확인

  • plot 종류
    • histplot : 히스토그램
    • kdeplot : kernel Density Estimate
    • ecdfplot : 누적밀도함수
    • rugplot : 선을 사용한 밀도함수

histplot

  • 막대 개수, 간격 조정 파라미터
    • binwidth : 막대 너비
    • bins : 막대 개수

  • seaborn에서는 막대가 아닌 다른 모양도 만들 수 있음

  • n개의 분포 표현 또한 가능

    • layer, dodge(연속), stack(쌓음), fill(퍼센트)

kdeplot

  • 연속확률밀도를 보여주는 함수

    • seaborn의 다양한 smoothing 및 분포 시각화의 보조 정보로도 사용
  • fill='True'를 통해 내부를 채워 표현하는 것을 추천
    -> 단순히 선만 그려서는 정보 전달이 어려울 수 있기 때문

  • bw_method를 사용하여 분포를 더 자세하게 표현 가능

  • histogram을 연속적으로 표현할 수 있음
    • stack
    • layer (사용 추천)
    • fill (왜곡 조심)

ecdfplot

  • 누적되는 양을 표현

rugplot

  • 조밀한 정도를 통해 밀도 표현
    • 한정된 공간 내에서 분포 표현하기에 좋음(사용 추천하진 않음)

Bivariate Distribution

  • 2개 이상 변수의 분포 동시 확인
  • 결합 확률 분포(joint probability distribution)
  • 2개의 축 모두 입력을 넣어 줌
  • 사용 함수
    • histplot
    • kdeplot

histplot

kdeplot

Relation & Regression API

Scatter Plot

  • 산점도 사용 가능 요소
    • style : marker 스타일
    • hue : marker 색상
    • size : marker 크기
  • 각각 style_order, hue_order, size_order로 순서 조절 가능

Line Plot

  • 피벗테이블 활용 시계열 데이터 시각화

  • 기존 데이터 활용 시 자동으로 평균과 표준편차로 오차범위 시각화

Reg Plot

  • 회귀선(추세선)을 추가한 scatter plot

  • order 파라미터를 통해 다차원 회귀선도 그릴 수 있음

Matrix API

Heatmap

  • 상관관계 시각화에 많이 사용
  • vmin, vmax로 범위 조정
  • center로 범위 중간 지정
  • cmap을 통해 가독성 향상
  • annot, fmt를 사용해 실제 값에 들어갈 내용 작성 가능
  • linewidth를 사용하여 칸 사이 나눌 수 있음
  • square를 사용하여 정사각형 사용 가능

  • 대칭인 경우나 특정 모양에서 필요없는 부분 지울 수 있음

0개의 댓글