Skip to content

파이썬 라이브러리 seaborn #

Find similar titles

2회 업데이트 됨.

Edit
  • 최초 작성자
    기린
  • 최근 업데이트
    shlee

Structured data

Category
Programming

Seaborn # Python에는 데이터를 시각화하기 위한 다양한 라이브러리들이 있다. Matplotlib은 전 세계에서 가장 많이 사용되는 시각화 라이브러리이며, Seaborn은 Matplotlib을 쉽게 사용하기 위해 개발된 고수준 (high-level) 라이브러리이다. Seaborn의 가장 큰 장점은 간결함으로, 비교적 짧은 코드로 통계학의 주요 그래프를 빠르고 편리하게 만들 수 있다.

Seaborn 설치 방법 및 Dependency #

Seaborn 라이브러리는 많은 사람에게 자주 사용되기 때문에 pip 와 conda 명령어를 통해 손쉽게 설치할 수 있다. * PyPl을 이용하는 경우 pip install seaborn * Conda를 이용하는 경우 conda install seaborn Seaborn을 이용하기 위해서 추가로 설치가 필요한 라이브러리 정보는 아래와 같다.

  • Python 버전: 3.7 이상
  • 필수 라이브러리: numpy, pandas, matplotlib
  • 선택적 라이브러리: statsmodels, , scipy, fastcluster

Seaborn 이용 방법 #

다른 Python 라이브러리와 마찬가지로 import 명령어를 이용하여 불러오면 되며, 많은 사용자가 sns 이란 단어로 줄여서 이용한다.

import seaborn as sns
print(sns.__version__)
> '0.12.1'

Seaborn 을 활용하여 그릴 수 있는 그림 및 예시 코드 #

Seaborn 라이브러리 이용하면 다양한 그림을 표현할 수 있지만, 아래 예시에서는 많이 사용되는 대표 그림들을 살펴보도록 한다.

공통으로 자주 사용되는 옵션 #

  • data: 시각화에 사용할 데이터를 지정
  • x: 그림 상 x축에 표시할 데이터 정보
  • Y: 그림 상 Y축에 효시할 데이터 정보
  • hue: 데이터를 색으로 구분하여 표시
  • style: 데이터를 형태로 구분하여 표시
  • size: 데이터를 크기로 구분하여 표시

예시 데이터 #

Seaborn 라이브러리 내부에는 학습을 위해 몇 가지 예제 데이터가 포함되어 있다. Line plot ~ Scatter plot에서는 tips 데이터를,

tips = sns.load_dataset("tips")
tips
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner
1 10.34 1.66 Male No Sun Dinner
2 21.01 3.50 Male No Sun Dinner
3 23.68 3.31 Male No Sun Dinner
4 24.59 3.61 Female No Sun Dinner
... ... ... ... ... ... ...
239 29.03 5.92 Male No Sat Dinner
240 27.18 2.00 Female Yes Sat Dinner
241 22.67 2.00 Male Yes Sat Dinner
242 17.82 1.75 Male No Sat Dinner
243 18.78 3.00 Female No Thur Dinner
244 rows × 7 columns

Heat map & Cluster map에서는 glue 데이터를 이용한다.

glue = sns.load_dataset("glue").pivot("Model", "Task", "Score")
glue
Task
Model
CoLA MNLI MRPC QNLI QQP RTE SST-2 STS-B
BERT 60.5 86.7 89.3 92.7 72.1 70.1 94.9 87.6
BiLSTM 11.6 65.6 81.8 74.6 62.5 57.4 82.8 70.3
BiLSTM+Attn 18.6 67.6 83.9 74.3 60.1 58.4 83.0 72.8
BiLSTM+CoVe 18.5 65.4 78.7 70.8 60.6 52.7 81.9 64.4
BiLSTM+ELMo 32.1 67.2 84.7 75.5 61.1 57.4 89.3 70.3
ERNIE 75.5 92.3 93.9 97.3 75.2 92.6 97.8 93.0
RoBERTa 67.8 90.8 92.3 95.4 74.3 88.2 96.7 92.2
T5 71.6 92.2 92.8 96.9 75.1 92.8 97.5 93.1

Line plot #

Line plot은 기본적으로 한 변수에 따른 다른 변수의 변화를 표시하는 데 사용된다.

기본적인 사용 방법은 아래와 같으며, 가운데 선이 각 x축 변수의 평균, 선 위/아래로 음영 표시된 영역은 신뢰구간을 의미한다.

sns.lineplot(data=tips, x="day", y="tip")

lineplot_1

errorbar=None (or False)를 추가하면 해당 음영 영역을 생략할 수 있다.

sns.lineplot(data=tips, x="day", y="tip", errorbar=None)

lineplot_2

hue="sex"를 사용하여 성별에 따라 서로 다른 선을 그린 후 색을 다르게 표시할 수 있다.

sns.lineplot(data=tips, x="day", y="tip", errorbar=None, hue="sex")

lineplot_3

style="time"을 사용하여 서로 다른 시간을 선의 형태로 구분하여 표시할 수 있다.

sns.lineplot(data=tips, x="day", y="tip", errorbar=None, hue="sex", style="time")

lineplot_4

Histogram #

Histogram은 하나 혹은 두 개 변수의 분포를 나타낼 때 사용할 수 있다.

sns.histplot(data=tips, x="tip")

histogram_1

Histogram 또한 hue 옵션을 사용하면 해당 변수의 차이를 시각적으로 확인할 수 있다.

sns.histplot(data=tips, x="tip", hue="sex")

histogram_2

또한, kde=True 옵션을 사용하면 변수에 대한 분포의 밀도 추정치를 연속된 곡선 시각화할 수 있다.

sns.histplot(data=tips, x="tip", hue="sex", kde=True)

histogram_3

두 개의 변수를 지정하는 경우, x축과 y축이 지정한 변수를 표시하고 해당 값이 관찰된 수는 색의 진한 정도로 표시된다.

sns.histplot(data=tips, x="total_bill", y="tip")

histogram_4

Bar plot #

Bar plot은 Histogram과 유사한 형태를 보이는 그림이지만, 주로 이변량(bivariate) 분석을 위한 plot으로 사용된다. 일반적으로 x축에는 범주형 변수를, y축에는 연속형 변수를 넣는다.

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

barplot_1

hue 옵션을 사용할 경우, 해당 변수에 따른 구분 및 비교를 할 수 있다.

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

barplot_2

Box plot #

Box plot은 데이터의 분포를 단계적으로 보여줄 때 유용하며, 최댓값, 제3 사분위 수, 중앙값(제2 사분위 수), 제1 사분위 수, 최솟값을 동시에 표현할 수 있다.

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

boxplot_1

Bos plot 또한 hue 옵션을 사용할 수 있다.

sns.boxplot(data=tips, x="day", y="tip", hue="sex")

boxplot_2

Scatter plot #

Scatter plot은 2차원의 좌표평면 위에 데이터를 표시할 때 사용할 수 있다. 기본적으로 두 변수 간의 관계를 시각화하지만, hue, style, size 등을 이용하여 더욱 복잡한 관계를 표현할 수 있다.

sns.scatterplot(data=tips, x="total_bill", y="tip")

scatterplot_1

hue 옵션을 사용하여 변수에 따라 색을 다르게 표현할 수 있으며

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day")

scatterplot_2

style 옵션으로 마커 모양을 변경하거나

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day", style="time")

scatterplot_3

size 옵션으로 마커의 크기를 변경할 수 있다.

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day", style="time", size="size")

scatterplot_4

Heat map #

Heat map은 데이터 간의 수치를 색상으로 표현함으로써, 그 차이를 직관적으로 통찰할 수 있도록 한다.

sns.heatmap(glue)

heatmap_1

annot=True 옵션을 통해 해당 수치를 그림에 표시할 수 있으며, fmt 옵션을 통해 해당 수치의 표기 형식을 지정할 수 있다.

sns.heatmap(glue, annot=True, fmt=".1f")

heatmap_2

Cluster map #

Cluster map은 기존의 Heat map을 같은 형태의 그림을 제공하지만, 유상성에 따라 가로축 혹은 세로축의 순서를 변경하여 제공한다.

sns.clustermap(glue)

clustermap_1

row_cluster 혹은 col_cluster 옵션을 통해 좌측 혹은 상단의 Dendrogram 표시를 생략할 수 있다.

sns.clustermap(glue, row_cluster=False, col_cluster=False)

clustermap_2

row_color 혹은 col_color 옵션을 이용하면, 좌측과 상단에 새로운 칸이 추가되고 지정한 색이 표시된다.

row_colors = ["b", "r", "r", "r", "r", "b", "b", "b", "b"]
sns.clustermap(glue, row_colors=row_colors)

clustermap_3

출처 #

Seaborn

Suggested Pages #

0.0.1_20231010_1_v71