Tukey's fences:
異常值定義為低於Q1 − 1.5 IQR或高於Q3 + 1.5 IQR的觀測值。-wiki Interquartile range
公式:
是下四分位數,是上四分位數,當時為離群值。
要是我會用filter()
|補充|一定說我都只會紙上談兵對不對?哼!這就貼code:
import numpy as np
import random
from matplotlib import pyplot as plt
%matplotlib inline
#生成隨機List
array = list(np.random.randint(10,size=100))
#找Q1,Q3
q1, q3 = np.percentile(array, [25, 75])
print(f"Q1 is: {q1}, Q3 is: {q3}\n")
#上界及下界
above = q3 + 1.5 * (q3 - q1)
below = q1 - 1.5 * (q3 - q1)
print(f"Above is: {above}, Below is: {below}\n")
#機率性加入離群值(也就是說加入的可能在範圍內)
outlier = random.randint(-10,20)
index = random.randint(0, 100)
array.insert(index, outlier)
print(f"Outlier is: {outlier}, Index is: {index}\n")
#過濾
array = list(filter(lambda x: x <= above, list(filter(lambda x: x >= below, array))))
print(f"After filter:\n{array}")
#畫圖
plt.boxplot(array)
plt.show()
完蛋了 不懂了...
那我可以問一下...
如何把最上面的語法修改成只讓它顯示20以下的數字就好
這樣 你懂我意思嘛!?
原本是圖表是數值是0~200↑
如何修改成0~20的這樣?
謝謝大大!!
幹嘛改你的全距?
R(全距)=Xmax(最大值)-Xmin(最小值)
200多是你Dataset的最大值
你數學課都沒在上喔~抓到!
因為這樣才可以把圖重點鎖定在下面(像第三張圖這樣阿)
完蛋了 我好像整個理解錯誤了是嘛!?
好吧。
我剛看完API
上面全部的程式碼和你要的東西都可以縮成這一行:
plt.boxplot(array,showfliers = False, autorange = True)
記得array調成你要輸入的資料。