Seaborn이란?
- 파이썬에서 데이터 시각화를 위한 라이브러리로, matplotlib을 기반으로 다양한 통계 그래프를 쉽게 그릴 수 있습니다.
- 데이터 프레임과의 높은 호환성 덕분에 pandas와 함께 사용하기 좋습니다.
Seaborn의 장점
- 데이터 프레임과 통합된 API
- 다양한 통계 그래프 제공 (히스토그램, 카운트 플롯 등)
- 간편한 스타일링과 테마 설정
- 복잡한 데이터 관계를 쉽게 시각화
설치 방법
pip install seaborn
예제
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
#jupyter 사용 시 Warning 메세지 무시
warnings.filterwarnings('ignore')
#한글 및 마이너스 기호 깨짐 방지 및 style을 통해 plot 배경 흰색으로 설정
plt.rc("font", family = "Malgun Gothic")
sns.set(font="Malgun Gothic", rc={"axes.unicode_minus":False}, style='white')
# 예제 펭귄 데이터셋 호출
df = sns.load_dataset('penguins')
display(df)
Barplot
- 범주형 데이터의 평균값을 막대로 나타내는 그래프입니다.
- 범주형 변수와 수치형 변수의 관계를 보여줍니다
plt.figure(figsize=(10, 8))
# 펭귄의 species별 flipper_length_mm. palette를 설정해 막대 색상 조정 가능
sns.barplot(data=df, x='species', y='flipper_length_mm', hue='species', palette='coolwarm')
plt.xlabel('Species', fontsize=16)
plt.ylabel('flipper_length_mm', fontsize=16)
plt.title('Species별 Flipper Length (mm)', fontsize=18)
plt.show()
#savefig를 통해 저장, bbox_inches를 통해 여백 제거 가능
#plt.savefig('barplot.png', bbox_inches='tight')
Palette 목록: https://seaborn.pydata.org/tutorial/color_palettes.html
Countplot
- 범주형 데이터의 빈도수를 막대로 나타내는 그래프입니다.
- 각 범주의 개수를 보여줍니다.
plt.figure(figsize=(10, 8))
sns.countplot(data=df, x='species', palette='coolwarm')
plt.xlabel('Species', fontsize=16)
plt.ylabel('Count', fontsize=16)
plt.title('Species 개수', fontsize=18)
plt.savefig('countplot.png', bbox_inches='tight')
Histplot
- 데이터의 분포를 히스토그램으로 나타내는 그래프입니다.
- 데이터를 구간으로 나누어 각 구간의 빈도수를 막대로 표시합니다.
- KDE: 커널 밀도 추정(Kernel Density Estimate, KDE)을 표시하는 옵션
- 데이터의 분포를 추정하는 방법으로, 히스토그램과는 다르게 데이터를 부드럽게 연속적인 곡선으로 나타냅니다.
plt.figure(figsize=(10, 8))
sns.histplot(data=df, x='flipper_length_mm', kde=True)
plt.xlabel('Flipper Length', fontsize=16)
plt.ylabel('Count', fontsize=16)
plt.title('Histogram', fontsize=18)
plt.savefig('histplot.png', bbox_inches='tight')
Boxplot
- 데이터의 분포와 중심, 범위, 이상치를 시각화하는 그래프입니다.
- 중간값, 사분위수, 최소/최대값, 이상치 등을 한 눈에 파악할 수 있습니다.
plt.figure(figsize=(10, 8))
sns.boxplot(data=df, x='species', y='flipper_length_mm', palette='Spectral')
plt.xlabel('Species', fontsize=16)
plt.ylabel('Flipper Length (mm)', fontsize=16)
plt.title('Species별 Flipper Length', fontsize=18)
plt.savefig('boxplot.png', bbox_inches='tight')
Scatterplot
- 두 변수 간의 관계를 산점도로 나타내는 그래프입니다.
- 각 점은 데이터의 한 관측치를 나타내며, 두 변수의 값을 x, y 좌표로 표시합니다.
plt.figure(figsize=(10, 8))
sns.scatterplot(data=df, x='body_mass_g', y='flipper_length_mm', hue='species')
plt.xlabel('Body mass (g)', fontsize=16)
plt.ylabel('Flipper Length (mm)', fontsize=16)
plt.title('Body mass vs. Flipper Length', fontsize=18)
plt.savefig('scatterplot.png', bbox_inches='tight')
Pairplot
- 여러 변수 간의 관계를 한 번에 시각화할 수 있는 그래프입니다.
- 데이터의 모든 숫자형 변수 간의 쌍을 산점도로 나타내며, 대각선에는 히스토그램이나 커널 밀도 추정 그래프를 표시합니다.
sns.pairplot(df, hue='species')
plt.savefig('pairplot.png', bbox_inches='tight')
Heatmap
- 행과 열로 이루어진 데이터의 값을 색상으로 나타내는 그래프입니다.
- 주로 상관 행렬과 같은 행렬 데이터를 시각화하는 데 사용됩니다.
# 상관 행렬 계산
corr = df.corr()
# Heatmap
plt.figure(figsize=(10, 8))
sns.heatmap(corr, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('상관 행렬 (Correlation Matrix)', fontsize=18)
plt.savefig('heatmap.png', bbox_inches='tight')
'Python' 카테고리의 다른 글
[sklearn] datasets 샘플 데이터 6개 (0) | 2023.10.31 |
---|---|
[작성중] Selenium을 통한 잡플래닛 (Jobplanet) 면접 후기 가져오기 (0) | 2023.03.10 |
[파이썬] 순서 유지하면서 특정 list에 있는 단어만 남기기 (0) | 2021.07.19 |
[파이썬] 문장에서 특정 값 이후부터 삭제 (0) | 2021.07.18 |
[파이썬] 사전 (dictionary)을 통한 단어 바꾸기 (0) | 2021.07.18 |