(파이썬-Matplotlib) 시각화 튜토리얼 - 박스플롯

Page content

강의 홍보

박스플롯 그래프

박스플롯(Box Plot) 그래프는 범주형 데이터 기준으로 수치형 데이터의 분포를 파악하는데 적합하다.

박스플롯을 보면, 최소값, 1분위값, 중간값, 3분위값, 최대값을 제공한다.

(1) 라이브러리 불러오기

필요한 모듈을 불러온다.

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

(2) 데이터 생성

이번에는 seaborn 패키지 내 iris 데이터를 활용한다.

iris = sns.load_dataset('iris')
iris

위 데이터에서 species 변수 내 데이터를 확인해본다.

iris['species'].unique()
array(['setosa', 'versicolor', 'virginica'], dtype=object)

박스플롯으로 그래프를 구현할 때에는 위 3개의 데이터를 List안에 담아야 한다.

data = [iris[iris['species']=="setosa"]['sepal_length'], 
        iris[iris['species']=="versicolor"]['sepal_length'],
        iris[iris['species']=="virginica"]['sepal_length']]

(3) 그래프 구현

각각의 데이터를 기준으로 박스플롯을 작성한다. 이 때, 데이터의 평균을 표시하는 showmeans를 추가해본다.

plt.boxplot(data, labels=['setosa', 'versicolor', 'virginica'], showmeans=True)
plt.show()

png

이번에는 옵션 vert=False를 추가한다.

plt.boxplot(data, labels=['setosa', 'versicolor', 'virginica'], showmeans=True, vert = False)
plt.show()

png

그 외 boxplot에 대한 다양한 옵션은 Artist customization in box plots에서 확인한다. (참조: https://matplotlib.org/3.2.2/gallery/statistics/boxplot.html)

(4) 전체코드

전체 코드는 다음과 같다.

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

iris = sns.load_dataset('iris')

data = [iris[iris['species']=="setosa"]['sepal_length'], 
        iris[iris['species']=="versicolor"]['sepal_length'],
        iris[iris['species']=="virginica"]['sepal_length']]

plt.boxplot(data, labels=['setosa', 'versicolor', 'virginica'], showmeans=True)
plt.show()

png