Boxplot란?
데이터의 분포를 한 눈에 볼 수 있게 시각화하여 이상치(Outlier)등을 탐지할 수 있는 시각화 도구.
- median - 중앙값
- IQR - 25% ~ 75%에 해당한 부분
- 75th Percentile - 제 3사분위수
- 25th Percentile - 제 1사분위수
- Whisker - 최댓값, 최솟값
- Outlier - 이상치
Median - 중앙값
데이터들을 정렬했을 때 중앙값 위치 선으로 표시
예를들어 데이터 [1, 5, 9, 10 ,15, 20, 34] 일 때, 중앙값은 10
# Numpy, pnadas, matplotlib 라이브러리 필요
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
test = pd.DataFrame([1, 5, 9, 10 ,15, 20, 34])
fig, ax = plt.subplots(1,1, figsize=(4,4))
a = list(test[0])
ax.boxplot(a)
※ 10에 주황색 선이 표시되어 있는 것을 볼 수 있다.
IQR
정렬한 데이터의 범위가 25% ~ 75% 에 위치한 범위 부분을 말함.
1. 75th Percentile - 제3 사분위수
데이터 정렬 했을 때 75%에 위치한 수
Q3 = (n+1) * (3 / 4)번째 숫자의 값이
2. 25th Percentile - 제1 사분위수
데이터 정렬 했을 때 25%에 위치한 수
Q1 = (n+1) * 4 번째 숫자의 값이 Q1
※ [1, 5, 9, 10 ,15, 20, 34] 일때, 2번째 위치한 값이 Q3이면 숫자 5가 Q3값이라는 건데, 그래프에는 5보다 조금 위에 위치해 있음..?
의문점 - 여러 블로그를 찾아봤을 대 위와 같은 식을 많이 이용해서 Q1, Q3 그래프를 그리는데 직접 그릴때는 위치가 조금 다르게 나오는이유는?
Whisker - 최댓값, 최솟값
(1.5 * IQR)외의 범위밖의 값들을 이상치라고 생각 하지 않는 부분의 최댓값과, 최솟값을 분류할 수 있게 된다.
1. 최댓값
제 3사분위수 + (1.5 * IQR값) = 최댓값
최댓값 보다 높은 값들은 이상치라고 판단한다.
2. 최솟값
제 1사분위수 - (1.5 * IQR값) = 최솟값
최솟값 보다 낮은 값들은 이상치라고 판단한다.
Outlier - 이상치
최댓값, 최솟값의 범위에서 벗어난 값을 이상치라고 판단한다.
이상치 및 극단치 등의 데이터는 값을 제거하거나, 값을 변경해줘서 처리해주는게 모델 측면에서 더 좋다.
이상치 처리 방법1. 이상치 데이터를 행에서 모두 제거한다.
이상치 처리 방법2. 이상치 데이터에 있는 데이터들을 살리기 위해 중앙값 혹은 최댓값, 최솟값으로 변경한다.
(항상 상황에 따라 좋은 값으로 변경하는 것을 추천)
실제 데이터들을 이용했을때 예시
'파이썬 > 데이터 전처리' 카테고리의 다른 글
정규 표현식 파이썬 예제를 통한 데이터 전처리 실제 활용- [데이터 전처리] (0) | 2021.07.12 |
---|---|
Pandas를 이용한 데이터 전처리 및 분석 EDA(판매 데이터 활용) - [데이터 전처리] (0) | 2021.07.01 |
ML, DL학습에 필요한 Pandas 전처리 방식 모음 정리 - [데이터 전처리] (0) | 2021.06.29 |