數據處理—異常值處理


異常值是指樣本中的個別值,其數值明顯偏離其余的觀測值。 異常值也稱離群點,異常值的分析也稱為離群點的分析

異常值分析 → 1,3σ原則 2, 箱型圖分析 異常值處理方法 → 1, 刪除 2,修正填補

1,# 異常值分析

(1)3σ原則

如果數據服從正態分布,異常值被定義為一組測定值中與平均值的偏差超過3倍的值 → p(|x - μ| > 3σ) ≤ 0.003

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
% matplotlib inline

data = pd.Series(np.random.randn(10000)*100)

# 創建數據

u = data.mean() # 計算均值
std = data.std() # 計算標准差
stats.kstest(data, 'norm', (u, std))
print('均值為:%.3f,標准差為:%.3f' % (u,std))
print('------')

# 正態性檢驗

fig = plt.figure(figsize = (10,6))
ax1 = fig.add_subplot(2,1,1)
data.plot(kind = 'kde',grid = True,style = '-k',title = '密度曲線')
plt.axvline(3*std,hold=None,color='r',linestyle="--",alpha=0.8)
plt.axvline(-3*std,hold=None,color='r',linestyle="--",alpha=0.8)

# 繪制數據密度曲線

ax2 = fig.add_subplot(2,1,2)
error = data[np.abs(data - u) > 3*std]
data_c = data[np.abs(data - u) <= 3*std]
print('異常值共%i條' % len(error))

# 篩選出異常值error、剔除異常值之后的數據data_c

plt.scatter(data_c.index,data_c,color = 'k',marker='.',alpha = 0.3)
plt.scatter(error.index,error,color = 'r',marker='.',alpha = 0.5)
plt.xlim([-10,10010])
plt.grid()

# 圖表表達

 

 

(2)箱型圖分析

fig = plt.figure(figsize = (10,6))
ax1 = fig.add_subplot(2,1,1)
color = dict(boxes='DarkGreen', whiskers='DarkOrange', medians='DarkBlue', caps='Gray')
data.plot.box(vert=False, grid = True,color = color,ax = ax1,label = '樣本數據')

# 箱型圖看數據分布情況

# 以內限為界

s = data.describe()
print(s)
print('------')

# 基本統計量

q1 = s['25%']
q3 = s['75%']
iqr = q3 - q1
mi = q1 - 1.5*iqr
ma = q3 + 1.5*iqr
print('分位差為:%.3f,下限為:%.3f,上限為:%.3f' % (iqr,mi,ma))
print('------')

# 計算分位差

ax2 = fig.add_subplot(2,1,2)
error = data[(data < mi) | (data > ma)]
data_c = data[(data >= mi) & (data <= ma)]
print('異常值共%i條' % len(error))

# 篩選出異常值error、剔除異常值之后的數據data_c 求出兩個臨界值,做布爾篩選

plt.scatter(data_c.index,data_c,color = 'k',marker='.',alpha = 0.3)
plt.scatter(error.index,error,color = 'r',marker='.',alpha = 0.5)
plt.xlim([-10,10010])
plt.grid()

# 圖表表達

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM