파이썬 seaborn패키지는 데이터 분석을 목적으로 시각화하기에 좋은 기능들이 많이 있다. 파이썬에서 가장 기본이 되는 데이터 시각화 패키지는 matplotlib이지만, 문법이 조금 복잡해서 데이터 분석을 목적으로 사용하기에는 불편한다. 그에 비해 seaborn은 한 줄의 명령어로 쉽게 원하는 차트를 그릴 수 있어 매우 유용하다.
오늘은 파이썬 데이터 분석을 할 때 유용한, 데이터 시각화 패키지 seaborn에 대해서 알아보도록 하겠다.

 

파이썬 seaborn 그래프 그리기

 


파이썬의 시각화 모듈로 가장 유명한 것은 matplotlib이다. 다양한 기능과 세부적으로 설정할 수 있어 편리하다. 하지만 문법이나 사용법이 조금 까다롭다. seabron은 matplotlib을 기본으로 해서 통계분석을 목적으로 그래프를 더 쉽게 그릴 수 있도록 래핑한 모듈이다. 왜 seaborn이라고 이름을 붙였는지는 모르겠다.


데이터셋은 이전에 사용한 국토교통부에서 제공하는 API로 수집한 전국 부동산 전월세 및 매매 거래 데이터를 이용하도록 하겠다. 우선 피클로 저장된 데이터 셋을 불러 왔다.

 

import pickle
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_pickle("apt_tot.pkl")
df.head()

 


이전 포스팅에서 그래프를 목적에 맞게 분류한 적이 있다. 그 때 분류한 정보를 기준으로 seabron에서 그릴 수 있는 그래프를 하나씩 알아보도록 하자.

그래프를 그려보기 전에 한글을 사용하려면 한글 폰트를 지정해주어야 한다. 아래와 같이 폰트를 지정하면 한글을 사용할 수 있다.

 

import matplotlib.font_manager as fm
fm.get_fontconfig_fonts()
font_location = '/Library/Fonts/NanumBarunGothicBold.ttf'
font_name = fm.FontProperties(fname=font_location).get_name()
plt.rc('font', family=font_name)

 

 

 

1. 박스플랏

데이터 탐색을 위해 그리기 유용한 그래프이다. 아웃라이어, 2분위수, 4분위수, 중앙값들을 한 눈에 확인할 수 있다. palette는 그래프의 색깔 타입을 지정해주는 입력인자이다.

 

sns.boxplot(y="price", data=df, palette="Paired")

 

파이썬 seaborn 박스플랏

 

 

그래프를 하나만 그리는 것보다 다른 변수를 추가하여 속성별로 비교하는 것이 유용하다. 박스플랏의 경우 x축에 변수를 넣어서 비교할 수 있다. 그냥 그래프를 그리면 x축의 텍스트가 겹쳐서 그려진다. 이를 방지하기 위해 xticks함수를 이용해서 45도 기울여줬다.

 

plt.xticks(rotation=45)
sns.boxplot(x="si", y="price", data=df, palette="Paired")

 

파이썬 seaborn 박스플랏 2

 

 

2. 히스토그램

보통은 히스토그램은 함수명이 hist나 histogram인데, seaborn은 특이하게도 distplot이라는 함수를 써야 한다.

 

sns.distplot(df["price"])

 

파이썬 히스토그램

 


히스토그램만 보고 싶다면 kde는 False로 입력한다. 다른 유용한 옵션으로 rug가 있다. 갯수가 있는 곳을 표시해 주기 때문에, 개수가 적은 곳의 분포를 알 수 있게 해준다.

 

sns.distplot(df["price"], kde=False, rug=True)

 

파이썬 히스토그램 2

 

 

히스토그램을 비교하기 위해서는 함수에 입력인자를 넣어서는 안 되고, 변수에 따라 distplot을 그려줘야 한다. 혹시 다른 편리한 방법이 있다면 댓글로 알려주길 바란다.

 

sns.distplot(df["price"][df["si"]=="서울특별시"], kde=False, rug=True)
sns.distplot(df["price"][df["si"]=="부산광역시"], kde=False, rug=True, color="r")

 

파이썬 히스토그램 2개 변수 비교

 

 

3. 카운트 플랏

범주형 변수의 분포를 알기 위해서는 countplot을 사용하면 유용하다. 뒤에서 다룰 catplot을 이용하면 3개의 범주형 변수까지 비교가 가능하다.

 

plt.xticks(rotation=45)
sns.countplot(x="si", data=df)

 

파이썬 카운트 플랏

 

 

df["price_gr"] = pd.cut(df["price"], [10000, 50000, 100000])
sns.countplot(x="si", hue="price_gr", data=df)

 

파이썬 카운트 플랏 2

 

 

df["size_gr"] = pd.cut(df["size"], [90, 120, 200])
sns.catplot(x="si", hue="price_gr", col="size_gr", kind="count", data=df)

 

파이썬 캣플랏

 

 

4. 산점도

산점도는 2개 이상의 연속형 변수를 비교할 때 편리하다. size 입력인자를 이용하면 3개의 변수도 비교가 가능하다.

 

sns.relplot(x="price", y="bo_price", hue="si", data=df)

 

파이썬 seaborn 산점도1

 

 

sns.relplot(x="price", y="bo_price", hue="si", size="size", data=df)

 

파이썬 seaborn 산점도 2

 

 

5. 라인그래프

라인 그래프는 시계열 자료를 시각화할 때 유용하다.

 

sns.lineplot(x="build_y", y="price", data=df)

 

파이썬 라인플랏 1

 

 

sns.lineplot(x="build_y", y="price", hue="si", data=df)

 

파이썬 라인플랏 2

 

 

변수별로 비교하기 위해서 relplot을 사용하면 유용하다. kind라는 입력인자에 line이라는 값을 넣으면 라인그래프를 그릴 수 있다.

 

g = sns.relplot(x="build_y", y="price", col="si", kind="line", data=df)
(g.set_xticklabels(rotation=60))

 

파이썬 seaborn relplot

 

 

오늘은 이렇게 파이썬 시각화 모듈인 seaborn을 이용해서 박스플랏, 히스토그램, 카운트플랏, 산점도, 라인그래프를 그리는 방법에 대해서 알아보았다. matplotlib보다는 문법이 직관적이어서 이해하고 사용하기 편리하다. 앞으로 추가적인 기능들이 더 강화되어 사용하기 좋은 시각화 모듈이 되었으면 좋겠다.

 


다음 포스팅에서는 세로막대, 가로막대, 히트맵, 선형회귀에 대해서 알아보도록 하겠다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기