반응형

이전 글에서 Pandas와 Matplotlib을 활용한 기본적인 데이터 시각화 방법을 배웠습니다.
이번에는 Seaborn 라이브러리를 사용하여 보다 세련된 시각화 기법을 익혀보겠습니다.

Seaborn은 Matplotlib 기반의 고급 시각화 라이브러리로, 스타일이 세련되고 다양한 통계 그래프를 쉽게 만들 수 있습니다.

 


1. Seaborn 라이브러리 소개 및 설정

먼저 Seaborn을 설치하고 불러오겠습니다.

import seaborn as sns  
import matplotlib.pyplot as plt  
import pandas as pd  

# Seaborn 테마 설정 (더욱 세련된 스타일 적용)
sns.set_theme(style="darkgrid")  

# 샘플 데이터 불러오기
df = sns.load_dataset("tips")  # Seaborn 내장 데이터셋
print(df.head())  # 데이터 미리보기

tips 데이터셋

  • 레스토랑에서 손님들이 지불한 총 금액(total_bill), 팁(tip), 성별(sex), 흡연 여부(smoker), 요일(day), 시간(time), 인원 수(size) 등이 포함됨

 


2. 분포 시각화 (Distribution Plot)

2.1 히스토그램 (Histogram) - 데이터 분포 확인

sns.histplot(df['total_bill'], bins=20, kde=True)  
plt.title("총 지출 금액 분포")  
plt.show()
  • bins=20: 히스토그램 구간 개수
  • kde=True: 커널 밀도 함수(KDE) 추가 (데이터 분포를 부드럽게 보여줌)

2.2 커널 밀도 추정(KDE) 그래프

sns.kdeplot(df['tip'], shade=True)  
plt.title("팁 금액 밀도 분포")  
plt.show()
  • KDE(커널 밀도 추정) 그래프는 데이터의 확률 밀도를 부드럽게 표현

 


3. 상관관계 시각화 (Scatter & Correlation Plot)

3.1 산점도 (Scatter Plot) - 두 변수 간 관계 확인

sns.scatterplot(x='total_bill', y='tip', data=df)  
plt.title("총 지출 금액과 팁의 관계")  
plt.show()
  • x='total_bill', y='tip': 두 변수의 관계를 분석
  • 데이터가 우상향하는 경향이 있어 지출 금액이 많을수록 팁도 많아지는 경향을 보임

3.2 회귀선 추가 (Regression Line, lmplot)

sns.lmplot(x='total_bill', y='tip', data=df)  
plt.title("총 지출 금액과 팁의 관계 (회귀선 포함)")  
plt.show()
  • 회귀선(추세선)을 추가하여 관계를 더 명확히 보여줌

 


4. 범주형 데이터 시각화 (Categorical Plot)

4.1 박스 플롯 (Box Plot) - 데이터 분포 비교

sns.boxplot(x='day', y='total_bill', data=df)  
plt.title("요일별 총 지출 금액 분포")  
plt.show()
  • 박스 플롯을 사용하면 중앙값, 사분위수, 이상치를 쉽게 파악 가능

4.2 바 플롯 (Bar Plot) - 평균값 비교

sns.barplot(x='day', y='total_bill', data=df, estimator=sum)  
plt.title("요일별 총 지출 금액 합계")  
plt.show()
  • estimator=sum: 각 요일의 총합을 계산하여 표시

 


5. 관계성 분석 (Pair Plot & Heatmap)

5.1 Pair Plot - 다중 변수 간 관계 분석

sns.pairplot(df, hue='sex')  
plt.show()
  • 여러 변수 간의 관계를 한 번에 확인 가능
  • hue='sex': 성별에 따라 색상을 다르게 표시

5.2 Heatmap - 상관계수 시각화

plt.figure(figsize=(8, 6))  
sns.heatmap(df.corr(), annot=True, cmap='coolwarm', fmt=".2f")  
plt.title("변수 간 상관관계")  
plt.show()
  • df.corr(): 변수 간의 상관관계 계산
  • annot=True: 숫자 값 표시
  • cmap='coolwarm': 색상 지정

 


결론

  • Seaborn을 활용하면 고급 통계 그래프를 쉽게 구현 가능
  • 분포 분석: histplot(), kdeplot()
  • 관계 분석: scatterplot(), lmplot()
  • 범주형 데이터 분석: boxplot(), barplot()
  • 다중 변수 분석: pairplot(), heatmap()

다음 글에서는 데이터 전처리와 시각화를 결합하여 인사이트 도출하는 방법을 알아보겠습니다! 

반응형

+ Recent posts