Python 데이터 시각화

Python 데이터 시각화
Matplotlib 기반으로 하는 Seaborn 라이브러리를 이용하여 Python 그래프 그리기 방법 등 데이터 시각화 방법에 대해서 설명드리도록 하겠습니다.

Python 데이터 시각화

데이터 시각화 라이브러리

이 글에서 Python을 이용하여 그래프를 그리거나 데이터를 시각화 하기 위해서 Seaborn 이라는 패키지를 이용할 것입니다. 이 피캐지는 matplotlib 패키지를 기반으로 하고 있으며, pandas 데이터를 이용하여 쉽게 통계학적인 그래프를 그릴 수 있습니다. Seaborn 라이브러리는 다음과 같은 특징이 있습니다.

  • 데이터셋 지향적인 API 제공
  • 다양한 종류의 예제 데이터셋 제공
  • 데이터 패턴등을 분석 하기 위한 편리한 뷰 기능 제공
  • Linear Regression 모델의 시각화 기능 제공
  • color palettes 등의 도구 제공

Python seaborn 설치

seaborn 패키지는 conda 또는 pip 명령어로 다음과 같이 설치 할 수 있습니다.

$ conda install seaborn
$ pip install seaborn

이 글에서 사용된 예제 소스코드는 아래의 명령어로 다운 받으실 수 있습니다.

$ git clone https://hiseon.me/reps/python-seaborn-example.git

Seaborn 데이터셋

Python 데이터 시각화를 위해서는 샘플 데이터가 필요합니다. Seaborn 패키지에는 load_dataset 함수로 샘플 데이터를 읽어올 수 있습니다. 현재 Seaborn 에서 제공되는 데이터셋은 아래의 페이지에서 참고 하실 수 있습니다.

https://github.com/mwaskom/seaborn-data

Python 그래프 그리기

 

아래는 tips 라는 데이터셋을 시각화 한 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
tips = sns.load_dataset("tips")
sns.relplot(x="total_bill", y="tip", col="time",
            hue="smoker", style="smoker", size="size",
            data=tips);
Python 데이터 시각화

위의 예제 소스코드를 설명 드리도록 하겠습니다. 먼저 아래의 내용은 seaborn 패키지를 import 하는 코드입니다.

import seaborn as sns
import matplotlib.pyplot as plt

seaborn 패키지는 그래프를 그리기 위해서 내부적으로는 matplotlib 패키지를 사용합니다. 대부분의 그래프는 직접 seaborn 패키지를 이용하여 그릴 수 있지만, 커스터마이징 등은 matplotlib 패키지의 API를 이용해야 합니다.
다음 코드 seaborn 패키지의 테마와 스케일링, 컬러 팔레트(Color Palette) 등을 기본 설정 값으로 사용한다는 의미입니다.

sns.set()

Python 그래프 그리기 위해서 아래의 함수를 이용하여 tips 라는 예제 데이터를 가져옵니다.

tips = sns.load_dataset("tips")

아래의 코드는 그래프를 그리는 내용입니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

sns.relplot(x="total_bill", y="tip", col="time",
            hue="smoker", style="smoker", size="size",
            data=tips)

다음 코드는 그래프를 출력하는 내용입니다.

plt.show()

다음 코드는 직접 데이터셋을 생성하여 그래프를 그리는 예제를 나타냅니다.

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame(dict(time=np.arange(500),
                       value=np.random.randn(500).cumsum()))
g = sns.relplot(x="time", y="value", kind="line", data=df)

plt.show()

회귀 데이터 시각화

아래의 예제 소스코드는 회귀(Regression) 데이터셋을 시각화 하는 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="ticks")

# Load the example dataset for Anscombe's quartet
df = sns.load_dataset("anscombe")

# Show the results of a linear regression within each dataset
sns.lmplot(x="x", y="y", col="dataset", hue="dataset", data=df,
           col_wrap=2, ci=None, palette="muted", height=4,
           scatter_kws={"s": 50, "alpha": 1})

plt.show();

원본 데이터 셋는 각각의 x, y 값만 주어졌지만, 데이터셋으로 부터 선형 회귀 그래프가 그려진 것을 확인 할 수 있습니다.

다양한 포인트 크기와 색상의 산점도

아래의 예제코드는 mpg 데이터 셋을 이용하여 산점도(Scatterplot)를 그리는 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="white")

# Load the example mpg dataset
mpg = sns.load_dataset("mpg")

# Plot miles per gallon against horsepower with other semantics
sns.relplot(x="horsepower", y="mpg", hue="origin", size="weight",
            sizes=(40, 400), alpha=.5, palette="muted",
            height=6, data=mpg)

plt.show()

각각의 카테고리의 값에 따라서 색상과 크기를 한꺼번에 산점도에 나타낸 것을 확인 할 수 있습니다.

에러 범위와 함께 시계열 데이터 시각화

아래의 예제 코드는 시계열 데이터로 라인 그래프를 그리면서 에러범위를 함께 나타낸 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="darkgrid")

# Load an example dataset with long-form data
fmri = sns.load_dataset("fmri")

# Plot the responses for different events and regions
sns.lineplot(x="timepoint", y="signal",
             hue="region", style="event",
             data=fmri)

plt.show();

예제를 실행한 화면은 다음과 같습니다.

산점도와 등고선 시각화

아래의 예제는 주어진 데이터셋에서 Paired density 와 산점도를 Matrix 그래프로 출력한 예제입니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="white")

df = sns.load_dataset("iris")

g = sns.PairGrid(df, diag_sharey=False)
g.map_lower(sns.kdeplot)
g.map_upper(sns.scatterplot)
g.map_diag(sns.kdeplot, lw=3)

plt.show();

위의 그래프는 데이터의 패턴등을 분석하는데 유용하게 사용 될 수 있을 것입니다.

 

[출처] https://hiseon.me/python/python-data-visualization/

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
46 [python][Django] [개념] Django는 Web Server가 아니라구요!! file 졸리운_곰 2023.03.11 464
45 [python][Django] [Django] Django Rest Framework에서 request 로깅하기 졸리운_곰 2023.03.11 381
44 [python][Django] Django REST Framework 졸리운_곰 2023.03.10 486
43 [python][Django] Django의 기본 개념 file 졸리운_곰 2023.03.10 473
42 Django 장고 텍스트에디터 사용하기(CKeditor) file 졸리운_곰 2020.11.22 933
41 Django Traffic Monitor + 트래픽 초과 알림 file 졸리운_곰 2020.11.22 513
40 공공 데이터 XML 크롤링을 통해 Django HTML에 띄워보기 file 졸리운_곰 2020.05.05 536
39 파이썬 장고와 워드프레스 연동의 간단한 방법 : Simple django wordpress integration with Django WordPress API library 졸리운_곰 2019.10.28 1200
38 Django의 세션을 이용한 단계별 페이지 만들기 file 졸리운_곰 2019.02.02 880
37 Django 템플릿 (Template) 졸리운_곰 2019.02.02 606
36 python django 기본 file 졸리운_곰 2018.09.02 1097
35 PyCharm과 함께 DJango와 RestFramework를 활용한 웹 사이트 구축하기 file 졸리운_곰 2018.05.22 563
34 Installing Python and Django on WampServer file 졸리운_곰 2018.02.18 740
33 python django 개요 다이어그램 file 졸리운_곰 2018.02.10 937
32 웹서버 중에서 Django를 선택한 이유 졸리운_곰 2017.08.22 1306
31 Django App 생성 file 졸리운_곰 2017.03.06 472
30 Django - 설치 및 Hello World 웹 서비스 만들기 졸리운_곰 2017.03.05 549
29 Learning Django and AngularJS 졸리운_곰 2017.02.06 1694
28 [Django 17] Django 디버깅 file 졸리운_곰 2017.01.28 1185
27 [Django 16] Django - Site Deployment 졸리운_곰 2017.01.28 598
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED