
作者:張良均 譚立云 劉名軍 江建明
來源:大數據DT(ID:hzdashuju)
內容摘編自《Python數據分析與挖掘實戰》(第2版)
導讀:數據質量分析是數據挖掘中數據準備過程的重要一環,是數據預處理的前提,也是數據挖掘分析結論有效性和準確性的基礎。沒有可信的數據,數據挖掘構建的模型將是空中樓閣。
數據質量分析的主要任務是檢查原始數據中是否存在臟數據。臟數據一般是指不符合要求以及不能直接進行相應分析的數據。在常見的數據挖掘工作中,臟數據包括:缺失值、異常值、不一致的值、重復數據及含有特殊符號(如#、¥、*)的數據。
本文將主要對數據中的缺失值、異常值和一致性進行分析。
01 缺失值分析
數據的缺失主要包括記錄的缺失和記錄中某個字段信息的缺失,兩者都會造成分析結果不準確。下面從缺失值產生的原因及影響等方面展開分析。
1. 缺失值產生的原因
缺失值產生的原因主要有以下3點:
有些信息暫時無法獲取,或者獲取信息的代價太大。
有些信息是被遺漏的??赡苁且驗檩斎霑r認為該信息不重要、忘記填寫或對數據理解錯誤等一些人為因素而遺漏,也可能是由于數據采集設備故障、存儲介質故障、傳輸媒體故障等非人為原因而丟失。
屬性值不存在。在某些情況下,缺失值并不意味著數據有錯誤。對一些對象來說某些屬性值是不存在的,如一個未婚者的配偶姓名、一個兒童的固定收入等。
2. 缺失值的影響
缺失值會產生以下的影響:
數據挖掘建模將丟失大量的有用信息。
數據挖掘模型所表現出的不確定性更加顯著,模型中蘊含的規律更難把握。
包含空值的數據會使建模過程陷入混亂,導致不可靠的輸出。
3. 缺失值的分析
對缺失值的分析主要從以下兩方面進行:
使用簡單的統計分析,可以得到含有缺失值的屬性的個數以及每個屬性的未缺失數、缺失數與缺失率等。
對于缺失值的處理,從總體上來說分為刪除存在缺失值的記錄、對可能值進行插補和不處理3種情況。
02 異常值分析
異常值分析是檢驗數據是否有錄入錯誤,是否含有不合常理的數據。忽視異常值的存在是十分危險的,不加剔除地將異常值放入數據的計算分析過程中,會對結果造成不良影響;重視異常值的出現,分析其產生的原因,常常成為發現問題進而改進決策的契機。
異常值是指樣本中的個別值,其數值明顯偏離其他的觀測值。異常值也稱為離群點,異常值分析也稱為離群點分析。
1. 簡單統計量分析
在進行異常值分析時,可以先對變量做一個描述性統計,進而查看哪些數據是不合理的。最常用的統計量是最大值和最小值,用來判斷這個變量的取值是否超出了合理范圍。如客戶年齡的最大值為199歲,則判斷該變量的取值存在異常。
2. 3σ原則
如果數據服從正態分布,在3σ原則下,異常值被定義為一組測定值中與平均值的偏差超過3倍標準差的值。在正態分布的假設下,距離平均值3σ之外的值出現的概率為P(|x-μ|>3σ)≤0.003.屬于極個別的小概率事件。
如果數據不服從正態分布,也可以用遠離平均值的標準差倍數來描述。
3. 箱型圖分析
箱型圖提供了識別異常值的一個標準:異常值通常被定義為小于QL -1.5IQR或大于QU +1.5IQR的值。
QL稱為下四分位數,表示全部觀察值中有四分之一的數據取值比它小;
QU稱為上四分位數,表示全部觀察值中有四分之一的數據取值比它大;
IQR稱為四分位數間距,是上四分位數QU與下四分位數QL之差,其間包含了全部觀察值的一半。
箱型圖依據實際數據繪制,對數據沒有任何限制性要求,如服從某種特定的分布形式,它只是真實直觀地表現數據分布的本來面貌;另一方面,箱型圖判斷異常值的標準以四分位數和四分位距為基礎,四分位數具有一定的魯棒性:多達25%的數據可以變得任意遠而不會嚴重擾動四分位數,所以異常值不能對這個標準施加影響。
由此可見,箱型圖識別異常值的結果比較客觀,在識別異常值方面有一定的優越性,如圖3-1所示。
▲圖3-1 箱型圖檢測異常值
餐飲系統中的銷量數據可能出現缺失值和異常值,例如表3-1中數據所示。
▲表3-1 餐飲日銷額數據示例
分析餐飲系統日銷額數據可以發現,其中有部分數據是缺失的,但是如果數據記錄和屬性較多,使用人工分辨的方法就不切實際,所以這里需要編寫程序來檢測出含有缺失值的記錄和屬性以及缺失率個數和缺失率等。
在Python的pandas庫中,只需要讀入數據,然后使用describe()方法即可查看數據的基本情況,如代碼清單3-1所示。
代碼清單3-1 使用describe()方法查看數據的基本情況
import pandas as pd
catering_sale = '../data/catering_sale.xls' # 餐飲數據
data = pd.read_excel(catering_sale, index_col='日期')
# 讀取數據,指定“日期”列為索引列
print(data.describe())
代碼清單3-1的運行結果如下:
本文摘編自《Python數據分析與挖掘實戰》(第2版) 銷量
count 200.000000
mean 2755.214700
std 751.029772
min 22.000000
25% 2451.975000
50% 2655.850000
75% 3026.125000
max 9106.440000
其中count是非空值數,通過len(data)可以知道數據記錄為201條,因此缺失值數為1.另外,提供的基本參數還有平均值(mean)、標準差(std)、最小值(min)、最大值(max)以及1/4、1/2、3/4分位數(25%、50%、75%)。
更直觀地展示這些數據并且可以檢測異常值的方法是使用箱型圖。其Python檢測代碼如代碼清單3-2所示。
代碼清單3-2 餐飲日銷額數據異常值檢測
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') # 畫箱型圖,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata() # 'flies'即為異常值的標簽
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-2.可以得到圖3-2所示的箱型圖。
▲圖3-2 異常值檢測箱型圖
從圖3-2可以看出,箱型圖中超過上下界的7個日銷售額數據可能為異常值。結合具體業務可以把865.0、4060.3、4065.2歸為正常值,將22.0、51.0、60.0、6607.4、9106.44歸為異常值。最后確定過濾規則為日銷額在400元以下或5000元以上則屬于異常數據,編寫過濾程序,進行后續處理。
03 一致性分析
數據不一致性是指數據的矛盾性、不相容性。直接對不一致的數據進行挖掘,可能會產生與實際相違背的挖掘結果。
在數據挖掘過程中,不一致數據的產生主要發生在數據集成的過程中,可能是由于被挖掘數據來自于不同的數據源、對于重復存放的數據未能進行一致性更新造成的。
例如,兩張表中都存儲了用戶的電話號碼,但在用戶的電話號碼發生改變時只更新了一張表中的數據,那么這兩張表中就有了不一致的數據。
本文摘編自《Python數據分析與挖掘實戰》(第2版),經出版方授權發布。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25