aa.pptx
0.04MB

box plot은 사분위수(상위 25%, 50%, 75%를 각각 Q1, Q2, Q3 표현)를 그림으로 나타낸 것이다. Q1 ~ Q3 사이의 상위 25~75% 구간이 가운데 box로 나타내지고, Q2(상위 50%)는 박스 중간에 직선으로 표시된다. Q1 - (Q3 - Q1) * 1.5 이하와 Q3 + (Q3 - Q1) * 1.5 이상의 구간에 존재하는 샘플들은 이상치(outlier)로 간주되며 점으로 표시된다. 이 범위 내의 최소값(minimum)과 최대값(maximum)을 양 끝의 수직선으로 나타낸다. 

 

아래 코드는 https://stackoverflow.com/questions/50554235/how-to-base-seaborn-boxplot-whiskers-on-percentiles 의 코드를 수정한 것인데, seaborn box plot을 이해하기에 좋은 예제인 것 같다. 

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
a1 = tips["total_bill"]
ax = sns.boxplot(x=tips["total_bill"], whis=[5, 95])
plt.grid(True)
plt.figure()
ax = sns.boxplot(x=tips["total_bill"])
plt.grid(True)

print(tips["total_bill"].describe())

실행결과

[229 rows x 16 columns]
count    244.000000
mean      19.785943
std        8.902412
min        3.070000
25%       13.347500
50%       17.795000
75%       24.127500
max       50.810000
Name: total_bill, dtype: float64

아래 그림은 5%와 95%를 minimum, maximum으로 구분한 플롯.

아래 그림은 원래 함수의 디폴트에 따라 minimum, maximum으로 구분한 플롯.

https://jimmy-ai.tistory.com/51에서는 

"참고로, box plot은 사분위수(상위 25, 50, 75% 숫자 : Q1, Q2, Q3)를 기준으로
Q1 ~ Q3 사이의 상위 25~75% 구간이 가운데 box로 색칠되고,
Q1 - (Q3 - Q1) * 1.5 이하와 Q3 + (Q3 - Q1) * 1.5 이상의 구간을 끝 선으로 나타내고
이 밖의 범위에 해당하는 숫자는 이상치(점으로 표시)로 취급하는 그림입니다.
박스의 끝점이 Q1, Q3에 해당하고, 박스 가운데 선이 Q2에 해당하는 것을 참고하세요."

라고 설명하고 있다. 그런데, Q1 - (Q3 - Q1) * 1.5 이하와 Q3 + (Q3 - Q1) * 1.5 이상의 구간을 끝 선으로 나타낸다면, 박스로부터 양 끝으로부터 양 끝 선(수직선)까지 길이가 같아야하는데 다르다. 그래서 검색해보니, 

https://datagy.io/seaborn-boxplot/

https://datagy.io/seaborn-boxplot/ 에서 제대로 설명하고 있다. 

https://flowingdata.com/2008/02/15/how-to-read-and-use-a-box-and-whisker-plot/

위 그림은 https://flowingdata.com/2008/02/15/how-to-read-and-use-a-box-and-whisker-plot/ 에서 설명하고 있는 그림인데, minumum을 25%의 1.5배보다 작은 것이라고 설명하고 있는데 잘못 설명하여 헷갈리게 만든다. 

 

 

 

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 
Posted by uniqueone
,