Chapter_1_2_Python_visualisation_seaborn

Page content

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

I. Matplotlib & Seaborn

(1) 기본 개요

Matplotlib는 파이썬 표준 시각화 도구라고 불리워지며 파이썬 그래프의 기본 토대가 된다고 해도 무방하다. 객체지향 프로그래밍을 지원하므로 세세하게 꾸밀 수 있다.

Seaborn 그래는 파이썬 시각화 도구의 고급 버전이다. Matplotlib에 비해 비교적 단순한 인터페이스를 제공하기 때문에 초보자도 어렵지 않게 배울 수 있다.

(2) matplotlib & Seabon 설치

설치방법은 윈도우 명령 프롬프트, MacOS, Linux 터미널에서 pip install matplotlib입력하면 되지만, 간혹 여러 환경에 따라 달라질 수 있으니 관련 싸이트에서 확인하기를 바란다.

II. 기본적인 시각화 문법

  • 시각화 문법은 아래와 같다.
import seaborn as sns
sns.name_of_graph(x, y, dataset, options)
  • 우선 Sample 데이터를 불러와서 데이터를 확인해보자.
import seaborn as sns
from tabulate import tabulate

sns.set()
tips = sns.load_dataset("tips")
print(tabulate(tips.head(), tablefmt="pipe", headers="keys"))
|    |   total_bill |   tip | sex    | smoker   | day   | time   |   size |
|---:|-------------:|------:|:-------|:---------|:------|:-------|-------:|
|  0 |        16.99 |  1.01 | Female | No       | Sun   | Dinner |      2 |
|  1 |        10.34 |  1.66 | Male   | No       | Sun   | Dinner |      3 |
|  2 |        21.01 |  3.5  | Male   | No       | Sun   | Dinner |      3 |
|  3 |        23.68 |  3.31 | Male   | No       | Sun   | Dinner |      2 |
|  4 |        24.59 |  3.61 | Female | No       | Sun   | Dinner |      4 |
  • 위 데이터는 매우 간단한 테이블일 수 있지만, 다변량의 그래프를 하나의 이미지 안에서 어떤 형태로 그래프를 작성할 것인지 선택하는 것은 쉽지 않다.
sns.relplot(x="total_bill", y="tip", col="time",
            hue="smoker", style="smoker", size="size",
            data=tips);

/img/python_edu/01_basic/Step1_Visualisation/Chapter_1_2_Python_visualisation_seaborn png

  • 소스코드에 대한 설명을 간단히 하면 아래와 같다.

    • relplot은 다변량의 그래프를 작성할 때 사용한다.
    • col 대신 row를 사용해도 된다. 여기에는 categorical(=범주형) 자료가 온다. (만약 값이 많으면..?)
    • hue는 그래프에 표현되는 색상을 의미한다.
    • style은 범주형 자료를 다르게 표현할 때 사용한다. (예: 동그라미, 별표 등) 대개 범주형 데이터를 지정한다.
    • size 자료의 크기를 의미한다.
  • 이쯤되면 여기에서 질문을 해야 한다. 강사는 위 코드를 어떻게 다 알고 있나요?

III. 프로그래밍 초보자를 위한 공식문서 사용법

  • 초보자들이 흔히 하는 실수
    • 위 소스코드를 외워서 쓰려는 습관 (다 외울 수 있을까?)
    • 자주 사용하면 반복적인 것은 자연스럽게 외워진다.
  • 그런데, 회사에서 또는 고객사에서 seaborn 대신에 bokeh 패키지를 사용하라고 한다면? (또 외워야 하는건가?)

(1) Tips

  • 첫째, 소스코드를 의미없이 무작정 외우지 않는다.
  • 둘째, 본인이 사용하는 패키지의 문서는 항시 들고 다닌다.
  • 셋째, 공부하다가 발견한 가독성 및 성능좋은 소스코드는 본인만의 개발블로그나 문서화하는 습관을 들인다.
  • 넷째, 항상 배운 것으로 그치지 않고, 다른 데이터셋으로 한번더 적용해본다.
  • 문제는? 공식문서는 한글을 지원하지 않는다! (But, 매우 훌륭한 번역기가 매우 많이 있다)

(2) 기존에 배운 학습 응용 방법

  • 먼저 위 코드를 복사해서 적당한 위치에 붙여 넣는다.
sns.relplot(x="total_bill", y="tip", col="time",
            hue="smoker", style="smoker", size="size",
            data=tips);
import seaborn as sns

dots = sns.load_dataset("dots")
print(dots.head(5))
  align choice  time  coherence  firing_rate
0  dots     T1   -80        0.0    33.189967
1  dots     T1   -80        3.2    31.691726
2  dots     T1   -80        6.4    34.279840
3  dots     T1   -80       12.8    32.631874
4  dots     T1   -80       25.6    35.060487
sns.relplot(x='time', 
            y = 'firing_rate', 
            col = 'choice', 
            hue = 'align',
            kind = 'line',
            data = dots)
<seaborn.axisgrid.FacetGrid at 0x7ff1aabafc18>

png

  • 이제 여러분 차례입니다. Happy To Code

IV. Reference

An introduction to seaborn. Retrieved from https://seaborn.pydata.org/generated/seaborn.relplot.html#seaborn.relplot.

IV. What’s Next

  • 이번 시간에는 간단하게 Python에서 실행하는 matplotlib 시각화의 기본적인 문법에 대해 배웠습니다.
  • 다음 시간에는 seaborn에 대해서 배워보도록 합니다.