快學資料探勘—資料探索—異常值分析
阿新 • • 發佈:2019-02-11
缺失值分析
缺失值產生的原因
- 有些資訊暫時無法獲取,或者獲取資訊的代價太大。
- 有些資訊是被遺漏的。可能是因為輸入時認為不重要、忘記填寫或對資料理解錯誤等一些人為因素而遺漏,也可能是由於資料採集裝置的故障、儲存介質的故障、傳輸媒體的故障等非人為原因而丟失。
- 屬性值不存在。在某些情況下,缺失值並不意味著資料有錯誤。對一些物件來說某些屬性值是不存在的,如一個未婚者的配偶姓名、一個兒童的固定收入等。
使用描述性統計分析,可以得到含有缺失值的屬性的個數,以及每個屬性的未缺失數、缺失數與缺失率等。
異常值分析
異常可能由於測量、輸入錯誤或系統執行錯誤而造成,也可能是由資料內在特性引起的,或異常行為所導致。異常值分析是檢驗資料是否含有不合理的資料。由於異常產生的機制是不確定的,因此,異常檢測演算法檢測出的“異常”是否真正地對應為實際的異常行為,不是由異常檢測演算法來說明、解釋的,只能由領域專家來解釋。
異常值分析方法
- 基於統計的方法
- 基於距離的方法
- 基於密度的方法
- 基於聚類的方法
- 基於分類的方法
- 基於深度的方法
- 基於小波變換的方法
- 基於圖的方法
- 基於模式的方法
- 基於神經網路的方法
基於統計的方法
- 描述性統計分析
- Z得分
- 箱形圖分析
本文只檢測缺失值,並使用箱型圖檢測異常值
資料集
日期 | 銷量 |
---|---|
2015/3/1 | 51 |
2015/2/28 | 2618.2 |
2015/2/27 | 2608.4 |
2015/2/26 | 2651.9 |
2015/2/25 | 3442.1 |
2015/2/24 | 3393.1 |
2015/2/23 | 3136.6 |
2015/2/22 | 3744.1 |
2015/2/21 | 6607.4 |
2015/2/20 | 4060.3 |
2015/2/19 | 3614.7 |
2015/2/18 | 3295.5 |
...
缺失值分析
我們使用SPSS進行缺失值分析,設定如下
缺失值分析結果
結論分析
1. 日期沒有缺失值2. 銷量存在一個缺失值,對應的日誌為2015-02-143. 銷量的缺失率:0.5%
缺失值替換
箱型圖分析
箱型圖分析結果
1. 箱型圖超過3倍IQR的一共5個值,分別是 22, 51, 60 和 6607.40, 9106.442. 根據具體業務我們把日銷量在400以下或5000以上設定為異常資料
Python程式
#coding: utf-8 import matplotlib.pyplot as plt from numpy import nan as NA import pandas as pd # 讀取資料來源 xlsFilename = "catering_sale.xls" df = pd.read_excel(xlsFilename) ######################################################## # 缺失值 # 獲得缺失值的個數 missingNumCountDf = df.isnull().sum() print("\n缺失值個數") print(missingNumCountDf) # 獲得缺失率 missingPercentDf = 100 * (missingNumCountDf / df.count()) print("\n缺失率") print(missingPercentDf) # 獲得缺失記錄 missingDf = df[df.iloc[:,1].isnull()] print("\n缺失記錄") print(missingDf) # 過濾掉缺失值 df2 = df.dropna() # 顯示箱圖 plt.rcParams['font.sans-serif'] = ['SimHei'] #用來正常顯示中文標籤 plt.rcParams['axes.unicode_minus'] = False #用來正常顯示負號 #bp = df2.boxplot() bp = plt.boxplot(df2.values[:,1], patch_artist=True) fliers = bp['fliers'] for fly in fliers: data = fly.get_data() for (x,y) in fly.get_xydata(): plt.text(x, y, "%.2f" % y, verticalalignment="top", horizontalalignment='right') print("\n異常值") print(data[1]) plt.show()
缺失值個數
日期0
銷量1
dtype: int6488888888888888888888
缺失率
日期0.0
銷量0.5
dtype: float64
![img](http://)
缺失記錄
日期 銷量
14 2015-02-14 NaN
異常值
[51.0 865.0 22.0 60.0 6607.4 4060.3 9106.44 4065.2]