box plot
중간값, 사분위수, 최대값, 최소값을 나타냅니다.
사분위수 (Q4)는 25%, 50%, 75%을 기준으로 다음과 같은 값을 나타냅니다.
Q1 : 25%에 해당하는 값
Q2 : 50%에 해당하는 값
Q3: 75%에 해당하는 값
사분위수 (Q4)는 25%, 50%, 75%을 기준으로 다음과 같은 값을 나타냅니다.
Q1 : 25%에 해당하는 값
Q2 : 50%에 해당하는 값
Q3: 75%에 해당하는 값
데이터에 대한 사분위수 여러 위치에서의 값을 계산하기 위한 함수로 두가지를 적용할 수 있다.
np.percentile(obj, q, axis=None)
pd객체.quantile(q=0.5, axis=0)
>>> import random
>>> import numpy as np
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>> d=np.random.randn(100)
>>> import numpy as np
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>> quant=np.percentile(d, [1, 25, 50, 75, 99])
>>> d_df=pd.DataFrame(d)
>>> quant_pd=d_df.quantile([0.01, 0.25, 0.5, 0.75, 0.99])
>>> quant
array([-2.07556171, -0.68066232, 0.13129747, 0.74443201, 2.22612439])
>>> quant_pd
0
0.01 -2.075562
0.25 -0.680662
0.50 0.131297
0.75 0.744432
0.99 2.226124
>>> np.mean(d) #평균값
0.062143098969234777
위의 사항을 그래프로 그리기 위해 상자 그림(box plot)을 적용합니다.
박스는 Q1 <= value <=Q3
하한 꼬리 values <= Q1
상한 꼬리 values >= Q3
만약사분위수의 범위 밖에 놓인 값들은 상한 또는 하한 꼬리 밖에 다른 기호('+')로 표시됩니다.
여러 열로 이루어진 데이터의 경우 각 열에 대한 상자 그래프를 한 그림으로 나타냅니다.
>>> d=np.random.randn(100, 5)
>>> quant=np.percentile(d, [1, 25, 50, 75, 99], axis=0)
>>> d_df=pd.DataFrame(d)
>>> quant_pd=d_df.quantile([0.01, 0.25, 0.5, 0.75, 0.99], axis=0)
>>> quant
array([[-2.03436223, -2.34074921, -2.41527064, -1.92245118, -2.11524036],
[-0.50685564, -0.93960178, -0.88419683, -0.32447958, -0.89025227],
[ 0.13300156, -0.04173886, -0.09255196, 0.25337128, -0.19390771],
[ 0.74933145, 0.43231908, 0.60672149, 0.7233356 , 0.68667474],
[ 1.92347734, 1.9740066 , 2.86430905, 2.08295018, 2.57055993]])
>>> quant_pd
0 1 2 3 4
0.01 -2.034362 -2.340749 -2.415271 -1.922451 -2.115240
0.25 -0.506856 -0.939602 -0.884197 -0.324480 -0.890252
0.50 0.133002 -0.041739 -0.092552 0.253371 -0.193908
0.75 0.749331 0.432319 0.606721 0.723336 0.686675
0.99 1.923477 1.974007 2.864309 2.082950 2.570560
>>> plt.boxplot(d)
>>> plt.show()
댓글
댓글 쓰기