반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

<seaborn 관련 글>

 

2021.08.08 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_1편. Seaborn 소개

2021.08.18 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_2편. Seaborn 학습을 위한 데이터 셋 3종 소개 (ft. 붓꽃, 타이타닉, 팁 데이터 셋)

2021.08.19 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_3편. Seaborn 그래프 종류 총 정리(ft. Relational plots)

2021.08.22 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_4편. Seaborn 그래프 종류 총 정리(ft. Distribution plots)

2021.08.23 - [파이썬 패키지/데이터시각화] - [Python/Seaborn] 데이터 시각화 라이브러리_5편. Seaborn 그래프 종류 총 정리(ft. Categorical plots)

 

 


 

Distribution plots

 

오늘은 지난 시간의 Relational plots에 이어서, 변수 하나(x or y) 혹은 변수 두개 (x,y)의 값 분포를 나타내기 위한 Distribution plots에 대해 공부해보겠습니다.

 

1. hisplot

2. kdeplot

3. rugplot

4. ecdfplot

5. displot (위의 모든 그래프 통합개념)
6. distplot(향후 없어질 예정)

 

 

이번 시간에 사용할 데이터 셋은 붓꽃 데이터 셋이며, 데이터 셋 정보와 로드하는 방법은 이전 글을 참고해주세요.

 

1. hisplot

 

histplot은 히스토그램(histogram) 그래프를 그리는 함수로 데이터의 빈도를 나타낼 때 주로 사용합니다.

 

sns.histplot(data=iris, x="sepal_length")

hue 파라미터를 이용해 species(붓꽃의 종류)에 따라 색으로 구분해주었고, multiple 파라미터를 이용해 hue로 분류된 count가 중첩되어 그려지도록 하였습니다.

 

만약 multiple 설정을 안해주면 그래프가 겹쳐져서 표현되어 가시성이 매우 떨어지므로 설정해주시는걸 추천드립니다.

 

sns.histplot(data=iris, x="sepal_length", hue="species", multiple='stack')

 

histplot은 1차원 뿐만 아니라 2차원으로도 그릴 수 있습니다. 다만 이 값들의 count 정보는 나타나지 않아서 그래프만 보고 정확한 정보를 파악하기는 힘들어 보입니다.

 

sns.histplot(data=iris, x="sepal_length", y="sepal_width", hue="species")

 

 

2. kdeplot

 

kdeplot은 커널 밀도 추정(kernal density estimation) 그래프로 histplot이 count(절대량)을 표현한다면 kdeplot은 비율(상대량)을 시각화 합니다. histplot과 마찬가지로 하나 혹은 두 개의 변수에 대한 분포를 그릴 수 있습니다.

 

sns.kdeplot(data=iris, x='sepal_length')

 

역시 마찬가지로 hue 파라미터로 'species'에 따른 색 구분이 가능합니다.

 

sns.kdeplot(data=iris, x='sepal_length', hue="species")

 

변수를 2개를 입력하면, 마치 등고선과 같은 그래프를 그려줍니다. 붓꽃의 종류에 따라 꽃받침(sepal)의 길이와 너비 분포가 어떻게 되는지, 어디에 비율이 가장 많은지 알 수 있겠습니다.

sns.kdeplot(data=iris, x='sepal_length', y="sepal_width", hue="species")

 

<추가 내용>

 

만약 앞에서 배운 histplot과 kdeplot을 함께 그리고 싶으시면 아래와 같이 코딩해주시면 됩니다.

 

sns.histplot(data=iris, x="sepal_length", hue="species", multiple='stack', kde=True)

 

3. rugplot

 

rugplot은 단독으로 쓰이기보다는 주로 kdeplot과 함께 쓰입니다. 그 이유는 rugplot이 데이터 값을 x축과 y축 위에 그려주는 그래프이기 때문입니다. 빠른 이해를 위해 코드로 그래프를 그리고 살펴보겠습니다.

 

sns.kdeplot(data=iris, x='sepal_length', y="sepal_width", hue="species") 
sns.rugplot(data=iris, x='sepal_length', y="sepal_width", hue='species')

대략적으로 어떤 느낌인지 감이 오시나요? rugplot은 다른 그래프를 보완해주는 그래프라고 생각하시면 되겠습니다.

 

 

4. ecdfplot

 

ecdfplot은 분포를 누적화해서 보여줍니다. 아직 잘 모르지만 그리 많이 쓰일 것 같아 보이진 않네요.

 

sns.ecdfplot(data=iris, x='sepal_length')

 

5. distplot

 

지난 시간에 배웠던 relplot과 같이 앞서 배운 4가지 plot들을 모두 그려줄 수 있는 함수입니다.

 

kind 파라미터를 histplot, kdeplot, ecdfplot으로 설정해줌으로써 3가지 plot을 그릴 수 있고, rug 옵션을 True/False로 설정하여 나타낼 수도 있고 나타내지 않을 수도 있습니다. 참고로 kind의 기본값은 hist로 아무 설정이 없을 때는 histplot을 그려줍니다.

 

또한 중요한 특징으로, row와 col 파라미터를 이용해서 subplot을 여러개 함께 나타낼 수 있습니다.

 

sns.displot(data=iris, x="sepal_length", hue="species", col="species")

 

sns.displot(data=iris, kind= "kde", x="sepal_length", hue="species", col="species", rug=True)

 

 

 

 


<참고 자료>

 

https://seaborn.pydata.org/api.html

 

API reference — seaborn 0.11.2 documentation

Independently manipulate the h, l, or s channels of a color.

seaborn.pydata.org

 

 

 

반응형

+ Recent posts