[시각화 도구/Matplotlib - 기본 그래프 도구] 박스 플롯

2022. 11. 17. 13:42

박스 플롯 범주형 데이터의 분포를 파악하는데 적합하다.

 

그림 1

박스 플롯은 5개의 통계 지표(최소값, 1분위값, 중간값, 3분위값, 최대값)을 제공한다.

 

# 예제 4-24

import pandas as pd
import matplotlib.pyplot as plt

from matplotlib import font_manager, rc
font_path = 'C:\Windows\Fonts\malgunsl.ttf'
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)

plt.style.use('seaborn-poster')
plt.rcParams['axes.unicode_minus']=False

df = pd.read_csv('auto-mpg.csv', header=None)

df.columns = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model year', 'origin', 'name']

fig = plt.figure(figsize=(15, 5))
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)

ax1.boxplot(x=[df[df['origin']==1]['mpg'],
              df[df['origin']==2]['mpg'],
              df[df['origin']==3]['mpg']],
           labels=['USA', 'EU', 'JAPAN'])

ax2.boxplot(x=[df[df['origin']==1]['mpg'],
              df[df['origin']==2]['mpg'],
              df[df['origin']==3]['mpg']],
           labels=['USA', 'EU', 'JAPAN'],
           vert=False)

ax1.set_title('제조국가별 연비 분포(수직 박스 플롯)')
ax2.set_title('제조국가별 연비 분포(수평 박스 플롯)')

plt.show()

만들어둔 axe 객체 각각에 박스 플롯을 그리는 boxplot() 메소드를 적용한다.

'origin' 값이 1인 'mpg'열, 2인 'mpg'열, 3인 'mpg'열 3개를 리스트에 담아 x옵션에 할당한다.

labels 옵션을 이용하여 각 열을 나타내는 라벨을 정의한다. 화면 오른쪽 ax2 객체vert=False 옵션을 사용하여 수평 박스 플롯을 그린다.

 

예제 4-24 출력 결과

출력 결과에서 'o'로 표시되는 점들은 이상치를 의미한다.

이상치는 데이터의 범위에서 크게 벗어난 값들을 의미한다.


파이썬 머신러닝 판다스 데이터분석
저자 : 오승환
출판 : 정보문화사
발매 : 2019.06.05

 

BELATED ARTICLES

more