본문 바로가기
데이터분석 공부하기

Seaborn 시각화

by 고공이 2021. 4. 23.

본 글은 코드잇에서 공부한 토대로 정리한 글입니다.

www.codeit.kr/learn/courses/data-science/1065

 

코딩이 처음이라면, 코드잇

월 3만원대로 Python, JavaScript, HTML/CSS, Java 등 1,600개 이상 프로그래밍 강의를 무제한 수강하세요

www.codeit.kr:443

 

오늘은 Seaborn 시각화 에 대해서 정리하려고 합니다.

 

Seaborn 을 사용해서 다양한 그래프를 그릴 수 있는데 Pandas 를 사용하는 것보다 조금 더 근사한 그래프를 그릴 수 있고, 이것으로 더 좋은 인사이트를 얻을 수도 있답니다!

 

Seaborn-코드잇

Seaborn 은 통계를 기반으로 한 데이터 시각화입니다. 그러니깐 Seaborn 을 제대로 이해하긴 위해서는 통계를 잘 알아야겠죠! 그중에서도 데이터 사이언스나 통계 공부를 하다보면 자주보는 개념이 바로 PDF 입니r다.

 

PDF(Probability Density Function) 는 확률밀도함수로 각 데이터들의 확률이 어떻게 분포되어있는지 나타내는 함수입니다.

 

PDF

그림에서도 알 수 있듯이 히스토그램을 선으로 연결한 것과 비슷한데 지금 이 확률밀도함수는 학생들의 키를 나타낸 그래프입니다. 이 그래프를 통해 학생들의 키가 어떤 분포를 가지는지 알 수 있습니다.

 

여기서 확률밀도 함수는 이 세 가지 만 알면 됩니다.

 

1. 데이터 셋의 분포를 알 수 있다.

2. 특정구간의 확률은 그래프 아래 구간의 면적과 동일하다.

3. 그래프 아래의 모든 면적을 더하면 1이다.

 

 

그럼 어떤 학생의 키가 173.5일 확률은 무엇일까요?

 

173.5 키를 가질 확률

바로 확률은 0 입니다. 173.5로 표시된 선은 확률이 0을 가르키고, 사실 키는 173.50000001 일수도 173.499999 일수도 있죠. 편의상 173.5로 표현하는 것일 뿐 정확히 딱 떨어지는 숫자로 표현될 수 없는 변수이기 때문입니다. 그래서 키, 몸무게, 속도 등 양적 변수 같은 경우 특정 값을 계산하는 것은 무의미하고, 확률밀도함수를 이용해 그 사이의 확률인 특정 범위에 대해서 계산합니다.


자, 그럼 개념을 알았으니 간단한 예제를 통해 제가 몰랐던 내용들을 정리하겠습니다.

 

 

위 그림들 처럼 bw 의 차이로 서로 다른 그래프가 그려집니다. bw 가 너무 크면 부정확한 그래프가 그려질 수 있으니 조심해야 한다네요!

 

위 그림은 kde를 90도 돌려서 대칭이 되게 그린 그래프인 바로 violinplot 입니다. violinplot 은 제가 타이타닉 DB분석을 할때 많이 봤던 굉장히 친숙한 그래프인데요, 이 그래프로 데이터 분포가 전체적으로 어떻게 이루어졌는지 알 수 있습니다.

 

 

위 그림은 키, 몸무게의 kde 를 3차원으로 만든 것입니다. 그림을 잘 살펴보면, 선이 가까울수록 가파르고, 선 사이가 멀수록 편평하다는 것을 알 수 있습니다. 이는 키와 몸무게의 연광성을 동시에 분포로 살펴볼 수 있다는 장점을 가지고 있습니다. 

 

그리고 catplot 을 이용해 카테고리 별로 비교할 수가 있습니다.

 

이 그림을 보고 리눅스가 전반적으로 저렴하고, 맥이 비싸다라는 것을 알 수 있겠죠!

 

만약 데이터 하나하나 살펴보고 싶다면 strip 을 써서 확인할 수 있습니다. 맥 데이터는 리눅스보다 그 갯수가 확실히 적네요. 

그렇다면 운영체제별로 어떤 프로세서 브랜드를 쓰고 있는지 알아보고 싶습니다. 바로 hue 를 이용해 알 수 있는데요, hue 는 색을 다르게 나타내게 해주는 파라미터랍니다. processor_brand 에는 intel 과 amd 데이터가 있는데 그래프를 살펴보니 intel 보다는 amd 가 더 저렴하네요! 그리고 확실히 intel 을 많이 쓰고 있다는 것을 알 수 있습니다.

 

자, 마지막입니다. strip 은 데이터가 겹쳐지게 표현되지만, swarm 을 쓰면 데이터들이 겹쳐지지 않고 펼쳐진 모습으로 그릴 수 있습니다.

 

아주 간단한 지식이지만, 알면 알수록 눈으로 데이터에 대한 특징을 한 눈에 볼 수 있다는 게 시각화의 매력인 것 같습니다.

 

 

그럼 여기서 한가지 질문이 생겼습니다.

 

 

catplot 에서 violin 을 쓰는 것과 violinpolt 을 쓰는 것과의 차이점은 무엇일까?

 

 

이 코드에서 볼 수 있듯이 결과물은 똑같이 아래의 그림과 같이 나오게 됩니다. 아래 그림을 간단히 설명하면 보험 회사에서 보험금이 어떻게 지출되었는지 분석하기 위해 흡연 여부 카테고리에 따라 보험금을 살펴볼 수 있는 그래프를 그려본 것입니다.

흡연 여부에 따른 보험금

 

바로, 기능은 거의 같지만, 미세한 차이가 있다 는 것입니다. 기본적으로는 catplot 을 쓴다면 카테고리 시각화에 좀 더 초점이 맞추어진 표현이고, violinplot을 쓴다면 바이올린 플롯을 그리는 것에 더 초점이 맞추어져 있는 표현이라고 보면 됩니다.

 

그럼 오늘은 포스팅은 여기서 마무리하겠습니다. 감사합니다:)

'데이터분석 공부하기' 카테고리의 다른 글

여러가지 JOIN들  (0) 2021.09.12
Primary Key의 종류  (0) 2021.08.15
시각화와 그래프  (0) 2021.04.22
데이터베이스와 DBMS  (0) 2021.03.17
큰 DataFrame 살펴보기  (0) 2021.03.17

댓글