[Python라이브러리 +] Seaborn

MINJEE·2023년 9월 4일
post-thumbnail

SEABORN

: 데이터 시각화 라이브러리

0. seaborn 라이브러리 임포트

import seaborn as sns

1. 1개 데이터

sns.countplot(data=df, x=’칼럼명’)  # 칼럼의 각 값의 개수를 막대그래프로
sns.countplot(df[’칼럼명’])

2. 2개의 수치형 데이터

sns.그래프종류(data=df, x='x축칼럼', y='y축칼럼', hue='색상구별기준칼럼')
sns.relplot(data=df, x='x축컬럼', y='y축컬럼', hue='구분컬럼', kind='그래프종류')
  • kind=‘scatter'(기본값, 산점도),|'line'(선 그래프)
sns.jointplot(data=df, x='x축컬럼', y='y축컬럼', kind='그래프형태')
  • kind='scatter'(기본값, point), |'reg'(point+regression), |'kde'(누적분포차트 like 지도),| ‘hex’
    • ‘kde’ 는 사이가 좁을수록 데이터가 많은 것
    • ‘hex’ 는 색깔이 진할수록 데이터가 많은 것
  • 2개의 수치형 데이터를 사용한 그래프 예시
    import seaborn as sns
    
    # seaborn에 있는 예제로 활용할 수 있는 데이터셋 불러옴 (tips 데이터셋 활용)
    t = sns.load_dataset('tips')
    
    sns.relplot(data=t, x='tip', y='total_bill') #산점도
    sns.relplot(data=t, x='tip', y='total_bill', kind='line') #선그래프
    sns.relplot(data=t, x='tip', y='total_bill', hue='sex') #성별기준으로 색상구분
    sns.jointplot(data=t, x='tip', y='total_bill')
    sns.jointplot(data=t, x='tip', y='total_bill', kind='kde')
    sns.jointplot(data=t, x='tip', y='total_bill', kind='reg')
    sns.jointplot(data=t, x='tip', y='total_bill', kind='hex')

3. 모든 수치형 데이터 (2개씩)

sns.pairplot(data=df, hue=’색상구별기준칼럼’)
  • 모든 수치형 데이터를 활용한 그래프 예시
    sns.pairplot(t)
    sns.pairplot(data=t, hue='sex')

4. 수치형 데이터와 범주형 데이터

sns.boxplot(data=df, x='범주형컬럼' , y='수치형컬럼' , hue='구분컬럼')  # 상자그림
sns.swarmplot(data=df, x='범주형컬럼' ,y='수치형컬럼' ,hue='구분컬럼' ,dodge=False) # 데이터 개수와 분포를 같이 확인가능
  • dodge=False(기본값), |True(hue에 지정한 칼럼 기준으로 나눠서 표시)
sns.barplot(data=df, x='범주형컬럼', y='수치형컬럼 ,hue='구분컬럼' ,palette='막대색상')  # 막대그래프
  • palette=‘firebrick’|‘gray’ 등 색깔 지정

  • 수치형과 범주형 데이터 그래프 예시
    sns.boxplot(data=t, x='day', y='tip')
    sns.boxplot(data=t, x='day', y='tip', hue='smoker')
    sns.swarmplot(data=t, x='day', y='tip')
    sns.swarmplot(data=t, x='day', y='tip', hue='smoker')
    sns.swarmplot(data=t, x='day', y='tip', hue='smoker', dodge=True)
    sns.barplot(data=t, x='size', y='tip')
    sns.barplot(data=t, x='size', y='tip', hue='sex')

5. 수치형 데이터와 2개의 범주형 데이터

sns.heatmap(data=df, annot=False, fmt=’수치형 표현형식’, cmap=’색상')  # 히트맵
  • annot=False(기본값, 수치표현없이 그림만),|True(수치도 표현)
  • fmt= ‘.0f’(정수로 표현), ‘.2f’(소수점 2자리까지 표현)
  • cmap 추천색상 : ‘Reds’, ‘Blues’, ‘vlag’, ‘Pastel1’, ‘RdBu_r’

  • 사용 예시
    tt =t.pivot_table(index='day',columns='size', values='tip', aggfunc='mean')
    sns.heatmap(data=tt, annot=True, fmt='.2f', cmap='Blues')

6. 한번에 여러 그래프 그리기

import matplotlib.pyplot as plt
    
f, ax = plt.subplots(a, b, figsize=(n, m))  # a x b 개의 그래프를 그릴 수 있는 n x m 크기의 공간 마련

# a x b 개의 그래프 코드 작성

plt.xticks( rotation = 90 )  # x축 항목이름 90도 회전시키기
  • f : plt.subplots를 실행하고 그래프를 채운 후 결과 보관
  • ax : 그래프 그릴 때, sns.그래프종류(data=df, x=,y=, ax=[1,2])
    → 1행2열 자리에 그래프 그리기
  • ax[n,m].axvline(수직선 위치 x값, ls = ‘—’ ) : n행 m열 그래프에 수직선 그리기
    • ls = ‘—’ : 점선으로 그리기

한글 데이터 표시

# 한글이 들어간 데이터로 그래프 그릴 때

import matplotlib
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
import platform
import seaborn as sns

# 이미지 한글 표시 설정
if platform.system() == 'Windows':
	font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
	rc('font', family = font_name)
else:
	rc('font', family = 'AppleGothic')
        
# 그래프에서 마이너스 기호가 표시되도록 설정
matplotlib.rcParams['axes.unicode_minus'] = False
profile
개발, 분석 배운 내용 정리하기!

0개의 댓글