본문 바로가기
Python/Data Visualization

[연속형 변수 단일값 시각화] Univariate analysis of continuous variables

by ISLA! 2023. 8. 22.

kaggle study

 

▶︎ 결과

 

▶︎ 시각화 코드

1. 라이브러리 임포트

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import matplotlib
from wordcloud import WordCloud

import warnings
warnings.filterwarnings("ignore", category=FutureWarning)

 

2. 데이터 로드

df = pd.read_csv('healthcare-dataset-stroke-data.csv')
tabular = pd.read_csv('tabular-playground-series-mar-2021_train.csv')

 

3. 시각화

  • fig 객체 : 배경색상 지정 ➡ facecolor
  • 서브 플롯 그리드 객체 : fig.add_gridspec()
  • 서브 플롯 생성
fig = plt.figure(figsize = (20, 8), facecolor = 'white')  # 배경색상 : 흰색
gs = fig.add_gridspec(1,2)  # 서브플롯 그리드 객체 추가

# 서브 플롯 생성 및 텍스트 추가
ax = [None for i in range(2)]
ax[0] = fig.add_subplot(gs[0,0])
ax[1] = fig.add_subplot(gs[0,1])

 

  • 첫번째 서브플롯
    • 텍스트 주석 추가 : 위치 값, 텍스트, 폰트 정보 입력
    • kdeplot 플롯 그리기 
      • zorder : 그래픽 요소간 겹침 순서 조정 
    • histplot 히스토그램 그리기
      • shrink : 기본값은 1, 1보다 작으면 얇아지고 1보다 크면 굵어짐
# 첫 번째 서브플롯에 텍스트 주석 추가(주석 두개) >> 좌표 정보 기입
ax[0].text(-24, 0.019, 'Distribution of the age variable',
          fontsize = 23, fontweight = 'bold', fontfamily = 'monospace')
ax[0].text(-24, 0.01826, 'Most of the people in the dataset are between 40 to 60 years old',
          fontsize = 17, fontweight = 'light', fontfamily='monospace')

# Kernel Density Estimate 플롯 그리기
# zorder=3는 KDE 플롯을 그리는 과정에서 해당 곡선이 다른 그래픽 요소들보다 더 위에 그려지도록 하는 역할
# 이로써 그래픽 요소들 간의 겹침 순서를 조정하여 시각적인 효과
sns.kdeplot(x = df['age'], ax=ax[0], shade = True, color = 'gold', alpha = 0.6,
           zorder=3, linewidth = 5, edgecolor = 'black')
           
           
# shrink 매개변수를 사용하여 히스토그램 막대의 너비를 조절
sns.histplot(x = df['bmi'], ax = ax[1], color = 'olive', alpha = 1, zorder = 2, 
            linewidth = 1, edgecolor = 'black', shrink = 0.5)

 

  • 두 시각화 그래프에 대해서
    • ylabel 없음
    • 그리드 적용 : 두 그래프 모두 / y 축 값에 대해 / 맨 뒤에 위치 시키기 / 색상은 블랙 / 선 스타일은 점선 / dashes 로 눈금간격 조정
    • 각 서브플롯의 상단(top), 오른쪽(right), 왼쪽(left) 스파인(축 테두리)을 숨기기 : 그래프의 위, 오른쪽, 왼쪽 테두리가 숨겨지며, 시각적으로 그래프의 경계가 더 깔끔해짐 ➡ 즉, 그래프 테두리가 사라져서 깔끔해보임
  • 두 번째 그래프의 x 축 값 범위 지정
  • 두 그래프 간 간격 조정
for i in range(2):
    ax[i].set_ylabel('')
    ax[i].grid(which='both', axis = 'y', zorder = 0, color = 'black', linestyle = ':', dashes=(2,7))
    
    for direction in ['top', 'right', 'left']:
        ax[i].spines[direction].set_visible(False)
        
ax[1].set_xlim(10, 70)

plt.tight_layout()

 

 

스터디 출처

https://www.kaggle.com/code/gaetanlopez/how-to-make-clean-visualizations

 

How to make clean visualizations

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

 

728x90