[TOC]
當我們得到數據后,接下來就是要考慮樣本數據集的數據和質量是否滿足建模的要求?是否出現不想要的數據?能不能直接看出一些規律或趨勢?每個因素之間的關系是什么?
通過檢驗數據集的數據質量,繪制圖表,計算某些特征值等手段,對樣本數據集的結構和規律進行分析的過程就是數據探索。數據質量檢測對后面的數據預處理有很大參考作用,並有助於選擇合適的建模方法。
數據探索大致分為 質量探索 和 特征探索 兩方面。
數據質量分析
**定義:**數據質量分析是數據預處理的前提,也是對數據挖掘的結果有效性和准確性的保證,只有擁有可信的數據,才能夠構建准確的模型。
主要任務: 檢測是否存在臟數據(不符合要求與不能方便地進行分析的數據)。包括缺失的數據,異常的數據,不一致的數據,以及含有其他不標准符號以及重復的數據。
1.缺失值分析
數據的缺失主要包括 記錄的缺失 和 記錄中某個字段的缺失 。他們都會造成分析結果的不准確。
產生原因是一些信息無法獲取或者在收集獲取的時候出現了遺漏或者設計的時候的一些值在獲取的時候並沒有。
數據缺失會丟失大量有用信息,或者造成建模混亂,得到的模型不准確,規律難以得到。
使用簡單的統計分析,可以得到含有缺失值的屬性的個數,以及缺失數,缺失率等。
2.異常值分析
異常值分析是檢驗數據是否有錄入錯誤以及含有不合常理的數據。通過檢測數據是否有異常,發現問題並而找到改進的策略。 異常值是指樣本中的個別值,數值明顯偏離其余的觀測值,故又叫離群值。
分析步驟:
(1)簡單統計量分析
首先可以通過一些常見的檢測值對變量做一個探索,查看哪些數據是不合情理的。比如用最大值和最小值,和實際的的現實意義聯系判斷變量取值是否合理。
(2)正態分布原則
正態分布原則就是異常值被定義為一組測試值中與平均值的偏差超過三倍標准差的值。
(3)箱型圖分析
箱型圖提供的一個識別異常值的一個標准,異常值通常被定義為小於Ql - 1.5IQR或大於Qu + 1.5IQR的值。Ql稱為下四分位數,表示樣本值中有四分之一 比它小;Qu成為上四分位數,表示樣本值中有四分之一比它大;IQR是四分位數間距,是QI和Qu的差,包括全部樣本的一半。
實例:
這里我們首先先爬取華為手機日銷量數據,如下:
我們規定商品的價格的平均值前后一定范圍價格為正常值,來分析所有商品的價格情況。
但是有些數據是缺失的,而且數據多的時候人工識別不出,可以用程序 檢測含有缺失值的記錄和屬性以及個數,來求缺失率。 數據的基本情況:
這里可以看到數據一共有147939條,還可以得到平均值(mean),標准差(std),最小值(min),最大值(max)以及四分位數等。
下面可以用箱型圖檢測異常值。
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號
data = '淘寶天貓.csv'
this_price = pd.read_csv(data,usecols = ['價格'],encoding = 'utf-8')
plt.figure() # 建立圖像
p = this_price.boxplot(return_type='dict')
x = p['fliers'][0].get_xdata()
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()
之前未處理的圖片
處理后的圖片
可以根據不同的需求進行調節,然后按照不同規則進行選取和分析數據。
3.一致性分析
數據不一致是指數據的矛盾性,不相容性,可能有不同表之間的聯系,然后改變了其他表但並未改變與之相連的表。