BE/Python

[Python] 데이터 시각화 - Seaborn 통계 데이터 시각화

콩다영 2023. 11. 21.
728x90

데이터 시각화를 수행할 때, 어떤 그래프를 선택해야 정보가 가장 잘 전달될지 고려해야 한다.

특히 데이터가 무한한 경우, 특정 값에 대한 정확한 확률 계산은 의미가 없을 수 있다. 이런 상황에서는 특정 범위에 대한 계산이 더 유의미할 것이다.  이때, 확률을 효과적으로 표현해 주는 라이브러리로 seaborn이 유용하다.

 

seaborn를 사용하여 통계 데이터 시각화를 해보자 !!


◈  Seaborn  

      Statistical    Data Visualization

          통계를 기반한                      데이터 시각화

      : matplotlib를 기반으로 하는 Python 데이터 시각화 라이브러리.

import pandas as pd
import seaborn as sns      # seaborn은 sns로 칭한다.

 

   ▼    seaborn 사이트

seaborn의 다양한 데이터 통계 그래프

 

 

seaborn은 데이터를 시각적으로 나타내는 데에 강력한 기능을 제공하며,

특히 확률 분포를 표현하는 데에 적합한 그래프를 생성할 수 있다.

 

 

여기서 잠깐 확률 밀도 함수의 특징을 알아보자 !

 

PDF (Probability Density Function) : 확률 밀도 함수

  • 데이터셋의 분포를 나타낸다.
  • 특정 구간의 확률은 그래프 아래 그 구간의 면적과 동일하다.
  • 그래프 아래의 모든 면적을 더하면 1이 된다.

 

데이터는 무수히 많은 경우의 수를 가지고 있지만, 우리가 갖은 데이터로는 정확한 분포의 그래프를 그리기 어렵다.

하지만 KDE(Kernel Density Estimation)  사용하면 주어진 데이터 셋을 이용하여 진짜 분포에 가깝게 추측이 가능하다.

 

import pandas as pd
import seaborn as sns

data_df = pd.read_csv('dataset/body.csv', index_col=0)   # 데이터 csv파일 읽기
data_df.head()                                           # 상위 데이터 조회

data_df['Height']                                        # 해당 컬럼행 데이터 조회 (pandas Series)
data_df['Height'].value_counts()                         # 몇번 있는지 중복 데이터 수 조회
data_df['Height'].value_counts().sort_index()            # index순으로 sort
data_df['Height'].value_counts().sort_index().plot()     # 그래프 그리기

주어진 데이터셋으로만 그린 그래프

 


 

 

▼ seaborn 사용하여 그래프 그리기

sns.kdeplot(data_df['Height'])             # seaborn kdeplot함수에 키 데이터 전송.

KDE를 사용한 그래프

 

 

 

▷  bw = (수치) 

몇 개의 구간으로 나누는지 데이터의 정확도를 높여준다.

bw를 너무 크게 설정하면 오히려 정확하지 않은 잘못된 그래프를 그려주니 유의하여 설정해 줘야 된다 !

sns.kdeplot(data_df['Height'], bw=0.05)

bw 설정해준 그래프

 

 

 

728x90
반응형

댓글