缺失值分析
缺失值產生的原因
- 有些信息暫時無法獲取,或者獲取信息的代價太大。
- 有些信息是被遺漏的。可能是因爲輸入時認爲不重要、忘記填寫或對數據理解錯誤等一些人爲因素而遺漏,也可能是由於數據採集設備的故障、存儲介質的故障、傳輸媒體的故障等非人爲原因而丟失。
- 屬性值不存在。在某些情況下,缺失值並不意味着數據有錯誤。對一些對象來說某些屬性值是不存在的,如一個未婚者的配偶姓名、一個兒童的固定收入等。
使用描述性統計分析,可以得到含有缺失值的屬性的個數,以及每個屬性的未缺失數、缺失數與缺失率等。
異常值分析
異常可能由於測量、輸入錯誤或系統運行錯誤而造成,也可能是由數據內在特性引起的,或異常行爲所導致。異常值分析是檢驗數據是否含有不合理的數據。由於異常產生的機制是不確定的,因此,異常檢測算法檢測出的“異常”是否真正地對應爲實際的異常行爲,不是由異常檢測算法來說明、解釋的,只能由領域專家來解釋。
異常值分析方法
- 基於統計的方法
- 基於距離的方法
- 基於密度的方法
- 基於聚類的方法
- 基於分類的方法
- 基於深度的方法
- 基於小波變換的方法
- 基於圖的方法
- 基於模式的方法
- 基於神經網絡的方法
基於統計的方法
- 描述性統計分析
- 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]