Seaborn은 파이썬의 고급 시각화 라이브러리로, 데이터 분석과 통계 시각화를 위한 강력한 도구입니다.
Matplotlib을 기반으로 하며, Pandas와 잘 통합되어 복잡한 통계 시각화도 간단하게 구현할 수 있습니다.
이번 글에서는 Seaborn을 활용한 주요 통계 시각화 기법을 공부한 내용을 중심으로 기록하고 공유하려합니다.
1. Seaborn 이란?
1.1 Seaborn의 특징
Seaborn은 Python의 인기 있는 데이터 시각화 라이브러리로, 통계 데이터를 시각화하기에 강력한 기능을 제공합니다.
- 통계 데이터 시각화를 위한 고급 플롯 제공
- 데이터프레임(Pandas)과 긴밀한 연동
- 미적 스타일과 색상 테마 제공
- 복잡한 시각화도 간단한 코드로 구현 가능
장점 :
- 고급통계시각화 지원
- Pandas 데이터 프레임과의 긴밀한 연동
- 스타일과 디자인이 세련됨
- 다변량 데이터 시각화에 강점
- 쉽고 간결한 코드
- 색상 팔레트 제공
- Matplotlib와의 통합
단점:
- 복잡한 시각화의 한계
- 대규모 데이터 처리 제한
- 플롯 종류의 제한
- 복잡한 레이아웃 구성 어려움
- 한정된 학습 자료
2. Seaborn 설치 및 기본 설정
2.1 Seaborn 설치
pip install seaborn
2.2 기본 임포트 및 스타일 설정
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid") #스타일 설정
3. 주요 통계 시각화 기법
3.1 분포 플롯 (Distribution Plot)
데이터의 분포를 시각화하고 이해할 때 유용합니다.
- 히스토그램과 KDE(커널 밀도 추정)
import numpy as np
data = np.random.normal(size=1000) # 정규분포 데이터 생성
sns.histplot(data, kde=True, bins=30, color="blue", alpha=0.7)
plt.title("Histogram with KDE")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()
3.2 관계 플롯 (Relational Plot)
변수 간의 관계를 시각화 합니다.
- 산점도 (Scatter Plot)
import pandas as pd
df = pd.DataFrame({
"Age": np.random.randint(20, 60, 100),
"Salary": np.random.randint(30000, 120000, 100)
})
sns.scatterplot(x="Age", y="Salary", data=df)
plt.title("Age vs Salary")
plt.xlabel("Age")
plt.ylabel("Salary")
plt.show()
- 선형 관계 (Line Plot)
sns.lineplot(x="Age", y="Salary", data=df)
plt.title("Line Plot of Age vs Salary")
plt.show()
3.3 범주형 데이터 시각화 (Categorical Data Visualization)
- 막대 그래프 (Bar Plot)
sns.barplot(x="Age", y="Salary", data=df, ci=None)
plt.title("Average Salary by Age")
plt.show()
- 박스 플롯 (Box Plot)
sns.boxplot(x="Age", y="Salary", data=df)
plt.title("Salary Distribution by Age")
plt.show()
3.4 상관관계 히트맵 (correlation Heatmap)
데이터 변수 간의 상관관계를 시각적으로 나타냅니다.
correlation = df.corr()
sns.heatmap(correlation, annot=True, cmap="coolwarm", fmt=".2f")
plt.title("Correlation Heatmap")
plt.show()
3.5 페어 플롯 (Pair Plot)
모든 변수 간의 관계를 한눈에 시각화 할 수 있습니다.
sns.pairplot(df)
plt.show()
4. Seaborn 통계 시각화 실용예제
4.1 다변량 데이터 시각화
df = pd.DataFrame({
"Age": np.random.randint(20, 60, 200),
"Salary": np.random.randint(30000, 120000, 200),
"Gender": np.random.choice(["Male", "Female"], 200)
})
sns.scatterplot(x="Age", y="Salary", hue="Gender", data=df, palette="coolwarm")
plt.title("Salary vs Age by Gender")
plt.show()
4.2 타임 시리즈 데이터 분석
dates = pd.date_range("2024-01-01", periods=100)
values = np.cumsum(np.random.randn(100))
time_series_df = pd.DataFrame({"Date": dates, "Value": values})
sns.lineplot(x="Date", y="Value", data=time_series_df)
plt.title("Time Series Data")
plt.xticks(rotation=45)
plt.show()
4.3 이상탐지
박스 플롯을 사용하여 이상치를 탐지합니다.
sns.boxplot(x=df["Salary"])
plt.title("Salary Outliers")
plt.show()
[참고]
- Seaborn 과 Matplotlib의 차이점
- Seaborn : 통계 시각화에 특화, 데이터프레임과 긴밀히 연동, 스타일링 강점
- Matplotlib : 저수준 라이브러리 , 커스터마이징 가능
- 요약
Seaborn을 활용하면 데이터 통찰력을 얻는 데 필요한 고급 통계 시각화를 간단한 코드로 구현할 수 있습니다.
이번 글에서 다룬 내용을 활용해 데이터를 분석하고, 더 나아가 실무에서 시각화를 적용해 보세요~ 😊
'Data Analysis' 카테고리의 다른 글
16주간의 도전, Meta Code 데이터 분석 부트캠프 후기 (2) | 2025.04.18 |
---|---|
Pandas와 Matplotlib/Seaborn을 활용한 데이터 시각화: 완벽 가이드 (2) | 2024.11.29 |
Python NumPy 완벽 가이드: 데이터 과학의 기초 (2) | 2024.11.28 |
Python Pandas 완벽 가이드: 데이터 분석의 시작 (2) | 2024.11.27 |
선형대수 (2) (0) | 2024.07.18 |