在前面的實(shí)驗(yàn)中我們學(xué)習(xí)過(guò)四分位數(shù)库菲。四分位數(shù),是指將一組數(shù)據(jù)值按大小排序后分成四等分志膀,每一部分包含 1/4 的數(shù)據(jù)熙宇,這種劃分的分割點(diǎn)就是四分位數(shù)鳖擒。其中第1部分和第2部分的分割點(diǎn)稱為第1分位數(shù) Q 1 , 也被稱為第25百分位數(shù)(上四分位),第3部分和第4部分的分割點(diǎn)稱為第3四分位數(shù)Q 3烫止,也被稱為第75百分位數(shù)(下四分位)蒋荚。而第二部分和第三部分的分割點(diǎn)是第2四分?jǐn)?shù),也就是中位數(shù)馆蠕。其中四分位距 IQR是指第三四分位數(shù)和第一分四分位數(shù)的差期升,也就是 IQR = Q3 - Q1。
所有小于 Q1 - 1.5IQR或大于 Q3 + 1.5IQR 的數(shù)據(jù)項(xiàng)被稱為異常值互躬。
編寫一個(gè)查找上文中定義的異常值的函數(shù),函數(shù)接受一個(gè)列表參數(shù)播赁,代表數(shù)據(jù)序列。函數(shù)將查找列表中的所有異常值吼渡,并將所有異常值作為列表返回行拢。
代碼如下:
import numpy as np
def find_outlier(data):
outlier = []
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1
for item in data:
if item < Q1 - 1.5 * IQR or item > Q3 + 1.5 * IQR:
outlier.append(item)
return outlier
if __name__ == '__main__':
l = [-100, -30, -20, -10, 0, 10, 15, 35, 50, 160]
result = find_outlier(l)
print(result)