본문 바로가기
Python/데이터 시각화

Seaborn 라이브러리를 활용한 시각화 Best 8

by 찐남 2022. 5. 28.

데이터를 분석하려면
먼저 데이터를 이해해야 합니다.

데이터 시각화는 데이터를 이해하는
가장 좋은 방법 중 하나입니다.

Python의 Matplotlib 및 Seaborn은
일반적으로 데이터를 시각화하는 데
사용하는 라이브러리입니다.

Matplotlib 라이브러리를 활용한
기초적인 데이터 시각화 방법은
아래 포스팅 글을 참고하세요.

matplotlib 산점도 그리기

이번 포스팅에서는 Matplotlib 라이브러리를 활용해서 산점도(scatterplot)를 그려 볼게요. 앞선 포스팅에서와 마찬가지로 기본적인 환경 세팅을 하겠습니다. ① matplotlib 라이브러리 사용 정의 ② 그

zzinnam.tistory.com

matplotlib 파이 차트 그리기

Matplotlib 라이브러리는 파이썬에서 그래프를 그릴 때, 가장 많이 사용하는 대표 라이브러리입니다. 기본이 되는 여러 그래프 중 이번 포스팅에서는 파이 차트를 실습해 볼게요. 앞선 포스팅과 마

zzinnam.tistory.com

matplotlib 막대그래프 그리기

이번 포스팅에서는 Matplotlib 라이브러리의 기본 그래프 중에서 막대그래프를 그려 볼게요. 지난번 포스팅과 마찬가지로 본격적인 작업에 앞서 기본적인 환경 세팅을 하겠습니다. ① matplotlib 라

zzinnam.tistory.com

matplotlib 선 그래프 그리기

Matplotlib 라이브러리는 파이썬에서 그래프를 그릴 때, 가장 많이 사용하는 대표 라이브러리입니다. 이와 관련된 내용이 너무나 많아서, 기본적이고, 핵심적인 내용만 정리하겠습니다. 본격적인

zzinnam.tistory.com


이번 포스팅에서는 Seaborn에 대해 알아보고
실제 적용해보도록 하겠습니다.

먼저 Seaborn이 무엇이며,
설치 방법에 대해 알아보겠습니다.

다음으로
산점도, 히스토그램, 막대 플롯, 상자 플롯,
바이올린 플롯, 패싯 그리드,
페어 플롯 및 히트맵을
예시로 그리는 방법을 보여 드리겠습니다.


Seaborn 라이브러리?

Seaborn은 Matplotlib에 구축된
데이터 시각화를 위한
Python 라이브러리입니다.

Matplotlib은 2D 및 3D 그래프를
그리는 데 사용되며
Seaborn은 통계 그래프를
그리는 데 사용됩니다.

Seaborn은 Matplotlib를 기반으로 하기 때문에
이 두 라이브러리를 함께 사용하여
매우 강력한 시각화를 생성할 수 있습니다.

다음 명령으로
Seaborn 라이브러리를 설치할 수 있습니다.

pip install seaborn


Anaconda를 설치하면
Seaborn이 자동으로 설치됩니다.

Seaborn을 설치한 후 사용하려면
이 라이브러리를 가져와야 합니다.

import seaborn as sns


이번 포스팅에서는 iris data를
사용하겠습니다.

iris.csv
0.00MB


위에 업로드된 데이터를
읽어 드립니다.

import pandas as pd
import seaborn as sns

irisData = pd.read_csv("D:/Python_apply/iris.csv")
irisData.head()

데이터셋의 구조를 보겠습니다.

irisData.shape

150 rows와 7개의 columns으로
구성되어 있습니다.

Seaborn에는 사용할 수 있는
몇 가지 테마가 있습니다.

set_theme 메서드를 사용하여
이러한 테마를 제어할 수 있습니다.
테마를 제어합시다.

이를 위해 rc 매개변수를 사용하겠습니다.

sns.set_theme()

# 그래픽의 이미지 품질 설정
sns.set(rc={"figure.dpi":300})

# 그래픽 크기 설정
sns.set(rc = {"figure.figsize":(6,3)})


이제 통계 플롯에 대해
자세히 알아보겠습니다.

1) Scatter Plot

데이터를 이해하는 가장 좋은 기술은
산점도입니다.

산점도는
변수 간의 관계를 표시하는 데 사용됩니다.

붓꽃 종류별 꽃잎의 길이와 폭의
산점도를 살펴보겠습니다.

sns.scatterplot( x = "SepalLength",
y = "SepalWidth",
data = irisData,
hue = "Species" )


꽃잎의 길이는 x축에 있고,
꽃잎의 폭은 y축에 있습니다.

산점도에서 붓꽃 종류들이
어떻게 다른지 알 수 있습니다.

2) Histogram

산점도를 사용하여 붓꽃 종류에 대한
몇 가지 정보를 보았습니다.

두 번째로 보여드릴 그래프 유형은
히스토그램 플롯입니다.

히스토그램 플롯은
데이터의 분포를 보여줍니다.

히스토그램 플롯을 사용하여
하나 이상의 변수의 분포를
볼 수 있습니다.

이제 histplot 함수를 사용하여
꽃받침의 길이를 살펴보겠습니다.

sns.histplot(x = "PetalLength", data = irisData)


히스토그램은 구간 내에 속하는
관측치의 수를 계산합니다.

y 인수로 히스토그램 플롯을
90도 회전할 수 있습니다.

sns.histplot(data = irisData, y="PetalLength")


히스토그램에서 사각형의 너비를
제어할 수 있습니다.

이를 위해 bindwidth 매개변수를
사용할 수 있습니다.

sns.histplot(data = irisData, x = "PetalLength", binwidth = 0.5)


확률 분포 곡선을 나타내는 kde를
히스토그램 플롯에 추가할 수도 있습니다.

sns.histplot(data = irisData, x = "PetalLength", kde = True)


hue 매개변수를 사용하여
범주의 히스토그램을 볼 수 있습니다.

sns.histplot(data = irisData, x = "PetalLength", hue = "Species")

이 그림에서 붓꽃 종류를 보여주는 범주의
히스토그램을 볼 수 있습니다.

3) Barplot

막대 그림은 각 직사각형의 높이가 있는
숫자 변수의 중심 경향 추정치를 나타냅니다.

붓꽃 종류의 꽃받침의 폭을
보여주는 막대 그림을 보겠습니다.

sns.barplot(x = "Species", y = "PetalWidth", data = irisData)


기본적으로 막대는
값의 평균을 기반으로 계산됩니다.

추정치 매개변수를 사용하여 평균 대신
다른 통계를 사용할 수 있습니다.

hue 매개변수를 사용하여
그룹에 따른 붓꽃 종류의
꽃받침의 길이를 확인하겠습니다.

sns.barplot( x = “Species”,
y = “PetalLength”,
data = irisData,
hue = “group”)

4) Box plot

상자 그림은 범주형 변수 수준 간의
수치 데이터 분포를 비교하는 데 사용됩니다.

붓꽃 종류별 꽃잎의 길이 분포를 보겠습니다.

sns.boxplot(x = "Species", y = "SepalLength", data = irisData)


여기에서 상자는
데이터의 사분위수를 보여줍니다.

수염의 길이는 나머지 분포를 나타냅니다.

min-max 이외의 값은 이상치로
생각할 수 있습니다.

hue 매개변수를 사용하여
그룹에 따른 붓꽃 종류별
꽃잎의 길이의 상자 그림을 볼 수 있습니다.

sns.boxplot(x = "Species", y = "SepalLength", data = irisData, hue = "group")

5) Viloin plot

바이올린 플롯은 상자 플롯으로
생각할 수 있습니다.

이 플롯은 범주형 변수 간의 수치 분포를
비교하는 데 사용됩니다.

sns.violinplot(x = "Species", y = "SepalLength", data = irisData)

hue 매개변수를 사용하여
그룹에 따른 꽃잎의 길이의
바이올린 플롯을 볼 수도 있습니다.

sns.violinplot(x = "Species", y = "SepalLength", data = irisData, hue = "group")


바이올린 플롯은 group 변수에 따라
별도로 그려졌습니다.

이제는 하나의 그래프에
여러 그래프를 그리는 방법을 살펴보겠습니다.

6) Facet Grid

패싯 그리드를 사용하여
데이터세트의 다양한 하위 집합에 대한
그리드 그래프를 볼 수 있습니다.

예를 들어 group과 Species 변수에 따른
꽃잎 길이의 히스토그램 플롯을
그려보겠습니다.

Figure에 더 많은 서브플롯을 추가하기 위해
열 및 행 변수를 할당해 보겠습니다.

먼저 행과 열에 포함될 변수를 지정하겠습니다.

sns.FacetGrid(data = irisData, col = "Species", row = "group")


이 명령을 실행하면
Species 변수에는 3개의 범주가 있고,
group 변수에는 2개의 범주(2*3 = 6)가
있기 때문에 6개의 하위 영역이 생성되었습니다.

모든 패싯에 플롯을 그리려면
데이터 프레임에 있는 하나 이상의
열 이름과 함수를 FacetGrid.map
메서드에 전달합니다.

예를 들어 꽃잎 길이의
히스토그램을 살펴보겠습니다.

sns.FacetGrid(data = irisData, col = "Species", row = "group").map(sns.histplot, "SepalLength")


모든 패싯에서
다른 플롯을 그릴 수도 있습니다.

예를 들어 꽃잎 길이의
산점도를 살펴보겠습니다.

sns.FacetGrid(data = irisData, col = "Species", row = "group").map(sns.histplot, "SepalLength", kde = True)

7. Pair plot

변수 간의 쌍 관계를 확인하는 것은
데이터 분석의 중요한 단계 중 하나입니다.

pairplot 방법을 사용하여
변수의 쌍 관계를 볼 수 있습니다.

이 함수는 데이터 세트의 각 숫자 변수에 대한
교차 도표를 생성합니다.

데이터 세트에서 붓꽃 종류에 따른
수치변수 쌍을 살펴보겠습니다.

sns.pairplot(data = irisData.iloc[:,1:len(irisData.columns)-1], hue = "Species", height = 3)


변수가 수치이기 때문에 확률 밀도 함수는
그래프의 대각선 축에 자동으로 그려집니다.

diag_kind 매개변수를 사용하여
대각선 축에 히스토그램을 표시할 수 있습니다.

sns.pairplot(data = irisData.iloc[:,1:len(irisData.columns)-1],
hue = "Species",
height = 3,
diag_kind = "hist")

8. Heatmap

마지막으로 히트맵을 살펴보겠습니다.
히트맵을 사용하여
숫자 변수 간의 상관관계를
볼 수 있습니다.
이것을 보기 위해 corr 함수를 사용합니다.

sns.heatmap(data = irisData.iloc[:,1:len(irisData.columns)-1].corr())


이 그래프에서 수치 변수 간의
관계를 볼 수 있습니다.

annot(ation) 매개변수를 사용하여
각 셀의 숫자 값을 볼 수도 있습니다.

sns.heatmap(data = irisData.iloc[:,1:len(irisData.columns)-1].corr(), annot = True)

Conclusion

데이터를 분석하기 전에
데이터를 탐색하는 것이 매우 중요합니다.

데이터 시각화는 데이터 과학 프로젝트의
중요한 단계 중 하나입니다.

이번 포스팅에서는
seaborn을 사용한 데이터 시각화에 대해
알아보았습니다.

matplotlib 보다 조금 더 쉬운
명령어 형태로 그래프를
그릴 수 있는 것 같아 보입니다.

반응형

댓글