異常值的分析方法
1、簡單統計量分析
做乙個描述性統計,進而檢視哪些資料不合理。最常用的是最大值和最小值,如年齡的最大值199,則存在異常。
2、3σ原則
針對服從正態分佈的資料,
3、箱形圖分析(r語言)
首先,讀取資料集,用sum(),mean()函式來分別獲取缺失樣本數、缺失比例。
saledata
sum(complete.cases(saledata)) #true為1,false為0。結果為非缺失樣本數
sum(!complete.cases(saledata)) #結果為缺失樣本數
mean(!complete.cases(saledata)) #缺失比例
saledata[!complete.cases(saledata),] #獲取缺失值記錄
然後,進行箱形圖分析
sp
sd.s
mn.s
points(1.1,mn.s,col="red",pch=18) #標出均值點,其中1.1為x軸座標
arrows(xi,mn.s-sd.s,xi,mn.s+sd.s,code=3,col="pink",angle=75,length=.1) #畫出箭頭,從均值點到上、下標準差的距離
text(rep(c(1.05,0.95),length(sp$out)/2),sp$out,sp$out,col="red") #標出異常點的值,在點的左邊、右邊(1.05,0.95)各標示一半。其中sp$out是所有異常值點
最後,結合具體業務,判定哪些點為正常值,哪些點為異常值。
3、箱行圖分析(python)
首先,識別缺失值:
import pandas as pd
data = pd.read_excel('catering_sale.xls',index_col = u'日期') #指定日期列為索引列
data.describe() #檢視資料的基本情況
輸出結果為:
count是非空值數,通過len(data)得到201,所以缺失值數為1。
然後,進行箱形圖分析
import pandas as pd
data = pd.read_excel('catering_sale.xls',index_col = u'日期')
import matplotlib.pyplot as plt
plt.rcparams['font.sans-serif'] = ['simhei'] #正常顯示中文標籤
plt.rcparams['axes.unicode_minus'] = false #正常顯示負號
plt.figure() #建立影象
p = data.boxplot(return_type='dict') #畫箱形圖,指定返回型別為字典
x = p['fliers'][0].get_xdata() #『fliers』為異常值的標籤
y = p['fliers'][0].get_ydata()
y.sort() #從小到大排序
#用annotate函式新增注釋
#其中有些相近的點,注釋會出現重疊,需要除錯、控制注釋的位置
for i in range(len(x)):
if i > 0:
plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.05-0.8/(y[i]-y[i-1]),y[i]))
else:
plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.08,y[i]))
plt.show() #展示箱形圖
輸出結果為:
最後,結合具體業務,判定哪些點為正常值,哪些點為異常值。
異常值的處理方法:
1、刪除
2、視為缺失值,進行補數
3、平均值修正,可用前後兩個觀測的平均值修正。
4、不處理
資料處理 缺失值處理 異常值處理
造成資料缺失的原因是多方面的,主要可能有以下幾種 有些資訊暫時無法獲取,致使一部分屬性值空缺出來。有些資訊因為一些人為因素而丟失了。有些物件的某個或某些屬性是不可用的。如乙個未婚者的配偶姓名。獲取這些資訊的代價太大,從而未獲取資料。空值處理的重要性 空值的存在,造成了以下影響 系統丟失了大量的有用資...
資料處理 利用 python進行異常值分析
異常值分析是檢驗資料是否有錄入錯誤資料和不合常理的資料。不加剔除的把異常值代入資料分析過程中,會對結果產生不良影響,而對異常值的分析其原因,常常成為為發現問題的而改進決策的契機。異常值是指樣本中的個別值,其數值明顯偏離其餘的資料。異常值通常也稱為離群點,所以異常值分析也叫做離群點分析。異常值分析通常...
資料預處理之異常值處理
異常值,即在資料集中存在不合理的值,又稱離群點。比如年齡為 1,膝上型電腦重量為1噸等,都屬於異常值的範圍。從集合角度來看,異常值即離群點,如下圖所示 對屬性值進行乙個描述性的統計,從而檢視哪些值是不合理的。比如對年齡這個屬性進行規約 年齡的區間在 0 200 如果樣本中的年齡值不再該區間範圍內,則...