본문 바로가기
[개발] 이야기

[seaborn, pandas] boxplot에 대한 관찰

by 헤이나우
반응형

어떤 데이터를 어떻게 표현해주는게 좋을까?

관찰 - boxplot

이번엔 boxplot에 대해서 관찰해보겠습니다.

seaborn과 판다스에는 데이터를 boxplot으로 시각화하는 함수가 내장되어 있다.

그럼 그리는건 좋은데 무엇을 boxplot으로 그려야할지 난감할 때가 많다.

무조건 먼저 그려버리고 데이터의 특성이 잘 나타내는지 지켜보는것이 시각화의 방법일까?

머릿속으로 먼저 데이터를 파악한 후에 머릿속에 그려지는 차트를 표현하는것이 가장 좋은 방법일거 같다.

그럼 boxplot에 대해서 어떤 특성을 가지고 있는지 확인할 필요가 있어 보인다.

그럼 간단하게 np.array를 만들어 boxplot을 그려봅시다

values = np.array([1,3,4,5,6,8,10,14,16,20])
values
sns.boxplot(data=values)

이 차트가 의미하는 수치는 무엇일까요?

이 차트를 이해하기 위해서 4분위(quartile)를 이해해야 합니다.

그래프에서 박스 위쪽 수염이 최대값, 맨 아래 수염이 최소값, 박스의 위라인이 75%, 아래 선이 25%지점, 가운데 박스의 안쪽 선이 중앙값 입니다.

이 수치가 맞는지 직접 구해봅시다.

values.max(), np.quantile(values, .75), np.quantile(values, .25)\
, values.min(), np.quantile(values, .5)

결과 : (20, 13.0, 4.25, 1, 7.0)

 

그럼 하나더 그려보겠습니다.

values = np.array([-200,1,40,50,60,80,100,140,160,200,500])
values
sns.boxplot(data=values)

각각의 수치 결과

values.max(), np.quantile(values, .75)\
, np.quantile(values, .25), values.min(), np.quantile(values, .5)

# 결과 : (500, 150.0, 45.0, -200, 80.0)

보시다 싶이 -200, 500이라는 값이 다른 셋이 비해서 터무니없이 높거나 낮을때 boxplot은 이수치를 이상치로 판별하고 box의 값으로 설정을 안하고 점으로 따로 그리도록 합니다.

이러한 수치를 이상치라고 합니다.

먼저 사분범위를 구합니다. 사분법위는 Q3 - Q1 값 ⇒ 이를 IQR이라 합니다.

Q1 -(1.5*IQR) 이하값, Q3 + (1.5 * IQR)이상값이 이상치 수치가 됩니다.

 

 

이러한 차트 하나에 정말 많은 수치가 포함되어 있네요

감사합니다.!

반응형

댓글