데이터분석

33-(3). seaborn

장수우 2024. 1. 15. 01:11
학습 주제
  • Visualization - seaborn
주요 학습 내용
  • seaborn
    • Seaborn은 Python에서 통계 그래픽을 만들기 위한 라이브러리
    • seaborn은 matplotlib을 기반으로 하며 pandas 데이터 구조와 밀접하게 통합
    • Pandas DataFrame과 직관적으로 연계되기 때문에 쉽고 빠르게 데이터 시각화가 가능
    • Seaborn에서 사용할 수 있는 플롯들은 크게 3가지 종류의 플롯군으로 나뉜다
      1. Relplot: 2개 이상의 변수간의 관계를 효과적으로 나타내는 플롯
      2. Displot: 1개 이상의 변수 값의 분포를 효과적으로 나타내는 플롯
      3. Catplot: 범주형 데이터의 분포를 효과적으로 나타내는 플롯
  • relplot
    • Relplot은 데이터 세트의 변수가 서로 어떻게 연관되어 있는지,  그리고 이러한 관계가 다른 변수에 어떻게
      의존하는지 이해하는데 도움을 주는 시각화를 가능하게 해준다.
    • Relplot에서 사용 가능한 플롯은 scatter plot과 line plot이 있다
    • 색상, 크기 및 스타일을 사용하여 최대 3개의 추가 변수를 매핑이 가능
  • scatter plot
    • 두 개의 연속형 변수 total_bill과 tip간의 관계를 scatter plot으로 표현할 수 있다
    • hue, size, style을 통해서 데이터포인트가 가지는 categorical 변수값을 표현할 수 있다
    • hue가 가지는 값이 연속형 변수인 경우 색이 palette형태로 표현된다
    • size를 사용하는 경우 sizes=(a,b) 옵션을 통해 점들의 크기를 조정할 수 있다
  • line plot
    • 시간과 같이 지속성을 가진 변수과 다른 변수의 관계를 나타낼 때는 lineplot이 효과적
    • x축 값 하나에 따른 y값이 하나가 아닌 다양한 값을 갖고 있을 수도 있다.
    • 이 때 기본적으로, lineplot은 여러 값들을 모아서 평균을 선으로, 95% 신뢰구간을 색으로 표현
    • CI를 표시하지 않으려면 errorbar=None으로, 혹은 표준편차의 범위로 표시하고싶으면
      errorbar='sd'로 옵션을 준다
    • hue를 통해서 연속형 변수 또한 구분하여 lineplot을 그릴 수 있다
    • Palette를 이용하여 선의 색 차이를 조정할 수도 있다
    • light 값이 커질수록 가장 밝은 색의 명도가 높아져 명도 차이가 커진다.
    • n_colors에는 가질 수 있는 카테고리 개수를 넣어줍니다
    • Size를 이용해서 선의 굵기를 조절해 줄 수 도 있다.
  •  facet
    • 변수가 많아질수록 한 플롯 안에서 표현하다 보면 가시성이 떨어지고 효과적인 분석이 어려울 수 있다
    • facet, 즉 여러 플롯으로 나눠 분석을 하는 것이 효과적일 수 있다
    • col이나 row를 이용해 플롯들을 나누고 height을 통해서 플롯의 크기를 조절할 수 있다
  •  displot
    • 변수 하나 혹은 두 개의 분포를 나타낼 때 distplot에 포함된 여러 플롯들을 사용하면 해당 변수 값이 가지는
      분포 및 범위를 효과적으로 확인할 수 있습니다
    • 기본적으로 displot을 사용하면 히스토그램을그려줍니다
  • histogram
    • histogram의 막대 너비는 binwidth 혹은 bins를 사용해 조절해줄 수 있다
    • 변수가 이산형 변수인 경우, discrete=True 옵션을 통해 x축 값 중앙에 막대가 위치하도록 할 수 있다
    • 또한, shrink 옵션을 통해 막대 간 공간 조절이 가능하다
    • displot의 경우 hue 옵션을 통해 추가 변수를 조건으로 한 분포를 시각화 할 수 있다
    • 막대 간 겹쳐지는 부분의 경우 element=step 옵션을 사용하거나 multiple=stack 옵션을 사용 가능
    • 변수가 카테고리형인경우 multiple=dodge 또한 사용 가능
    • displot 또한 col이나 row를 이용해 변수에 따른 여러 플롯으로 나눠 그릴 수 있다
    • stat='probability' 옵션을 통해 모든 막대의 높이의 합이 1이 되게 만들 수 있고, 이를 빈도의 비율값으로 
      해석할 수 있다.
  • kdeplot
    • kde plot을 이용해 histogram과 다른 부드러운 곡선으로 이어진 분포 시각화가 가능
    • bw_adjust를 이용해 곡선을 세밀하게 혹은 더 부드럽게 표현이 가능합니다
    • kde plot 또한 hue를 이용해서 변수간 분포를 더 세밀하게 시각화할 수 있다
    • 또한, fill=True 옵션을 이용해 곡선 아래 색칠된 형태로 표현이 가능합니다
  • heatmap / contour
    • hue 옵션을 사용하는 대신, y에 2번째 변수를 넣어 여러 변수의 분포를 표현하는 시각화 또한 가능
    • 기본적으로 displot은 heatmap을 그려준다
    • kde plot에서 y 변수를 추가해주면 contour plot을 그려준다
    • heatmap의 경우 (x축,y축)의 binwidth를 조절하여 각 칸의 크기를 조절해줄 수 있다
    • 또한, cbar=True 로 설정시 색깔에 따라 갖는 빈도 값을 확인할 수 있다
    • contour plot의 경우 thresh와 levels를 이용해 선의 간격을 조절할 수 있습니다
  • joint plot
    • joint plot의 경우 2개의 변수 간 분포와 각 변수의 분포를 동시에 보여준다
    • 기본적으로는 scatter plot과 histogram, kind=’kde’ 인 경우 contour plot과 kde plot을 그려준다
  • pair plot
    • Pair plot을 이용해 각 변수들간의 pairwise 관계를 시각화할 수 있다
    • 특히, 고려해야할 변수들이 많은데 변수간 상관관계 파악이 필요한 경우 유용하다
  • catplot
    • Relplot에서 다루고자 하는 변수가 categorical(혹은 이산형) 데이터인 경우 scatter plot이나 line plot 대신 
      catplot을 사용하여 좀 더 효과적인 시각화가 가능
    • catplot에서 사용 가능한 플롯들은 3가지로 나뉜다.
      1. 범주형 산점도: strip plot, swarm plot
      2. 범주형 분포도: box plot, violin plot
      3. 범주형 추정도표: bar plot, point plot
  • strip plot
    • catplot의 기본 플롯은 strip plot이며, 한쪽 변수가 categorical 데이터인 산점도라고 생각
    • 한 범주에 속하는 모든 점이 범주형 변수에 해당하는 축을 따라 동일한 위치에 있게 된다.
    • jitter 옵션을 통해서 좌우로 퍼진 정도를 조절하거나 비활성화한다
    • 데이터에 pandas Categorical 데이터 유형이 있는 경우 범주의 기본 순서를 여기에서 설정가능
    • 데이터 유형이 Categorical이 아닌 경우에도 적용 가능하지만 Categorical 데이터로 취급되어 문제가 발생하는
      경우도 존재
    • 이때 native_scale을 사용하면 x축 데이터의 분포를 보존할 수 있다
    • order 옵션을 사용해서 Categorical 변수의 순서를 바꿔줄 수도 있다
    • x와 y에 들어가는 변수 이름에 따라 축을 가로로 변경 가능
  • swarm plot
    • swarm plot을 활용하면 점들의 중첩을 방지하는 알고리즘을 사용하여 시각화가 가능합니다
    • 상대적으로 데이터 수가 적은 경우에만 잘 작동하지만 관측치 분포를 더 잘 표현할 수 있습니다
    • 관계형 도표와 마찬가지로 hue를 사용하여 범주형 도표에 다른 차원을 추가할 수 있습니다
      (size나 style은 지원되지 않습니다)
  • boxplot
    • 데이터 세트의 크기가 커짐에 따라 범주형 산점도는 각 범주 내의 값 분포에 대해 제공할 수 있는 정보가 제한
    • 이때 boxplot을 사용할 수 있다.
    • hue를 추가 가능하며 각 수준에 대한 상자는 더 좁아지고 범주형 축을 따라 이동
  • boxenplot
    • boxen plot을 이용하면 분위수를 좀 더 자세하게 표시할 수 있다
  • violinplot
    • violin plot은 box plot과 kde 곡선을 결합한 형태
    • Boxplot에서 쓰인 IQR과 whisker또한 표현
    • bw와 cut을 이용해서 kde 곡선을 조절할 수 있다
    • box plot이나 violin plot을 swarm plot과 결합하는 것도 가능
    • swarmplot의 ax에 box plot이나 violin plot을 넣어준다.
    • 이 때, violin plot에서 inner=None을 통해 내부의 boxplot을 제거해줍니다
  • barplot
    • catplot을 통해서도 barplot을 그릴 수 있다
    • 이 때, 추가적으로 95% 신뢰구간을 볼 수 있다
    • errorbar 옵션을 이용해서 다른 방식으로 분산을 표현할 수 있다
  • Pointplot
    • Pointplot은 Categorical 변수에 따라 다른 변수가 어떻게 변화하는지를효과적으로 나타냅니다
    • 이 때 점 추정치 중심으로 95% 신뢰구간이 표현됩니다
    • marker, linestyles 옵션을 이용해 선과 점 추정치의 형태를 바꿔줄 수 있다
공부하면서 어려웠던 점
  • 다양한 파이썬 라이브러리들의 사용법과 시각화하는 방법을 배웠다 이제 프로젝트를 진행하면서 내게 맞는 방법을 찾아가면 될 것 같다. 전반적으로 다양하게 배워서 매우 도움이 되었다.
반응형

'데이터분석' 카테고리의 다른 글

35. 데이터 분석 프로세스  (1) 2024.01.27
34. 회귀분석과 데이터모델링  (1) 2024.01.27
33-(2). Matplotlib  (1) 2024.01.15
33-(1) Matplotlib Visualization - 기본문법  (1) 2024.01.14
32-(2). 정량적 데이터 분석  (1) 2024.01.14