大數(shù)據(jù)爬取、清洗與可視化教程課件第八章數(shù)據(jù)清洗_第1頁(yè)
大數(shù)據(jù)爬取、清洗與可視化教程課件第八章數(shù)據(jù)清洗_第2頁(yè)
大數(shù)據(jù)爬取、清洗與可視化教程課件第八章數(shù)據(jù)清洗_第3頁(yè)
大數(shù)據(jù)爬取、清洗與可視化教程課件第八章數(shù)據(jù)清洗_第4頁(yè)
大數(shù)據(jù)爬取、清洗與可視化教程課件第八章數(shù)據(jù)清洗_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第8章

數(shù)據(jù)清洗

目錄8.1數(shù)據(jù)清洗概述8.1.1數(shù)據(jù)清洗原理8.1.2主要數(shù)據(jù)類型8.1.3常用工具8.2數(shù)據(jù)清洗方法8.2.1重復(fù)數(shù)據(jù)處理8.2.2缺失數(shù)據(jù)處理8.2.3異常數(shù)據(jù)處理8.2.4格式內(nèi)容清洗8.2.5邏輯錯(cuò)誤清洗

8.3

數(shù)據(jù)規(guī)整8.3.1字段拆分8.3.2數(shù)據(jù)分組8.3.3數(shù)據(jù)聚合8.3.4數(shù)據(jù)分割8.3.5數(shù)據(jù)合并第8章

數(shù)據(jù)清洗

在數(shù)據(jù)開(kāi)發(fā)過(guò)程中,我們采集到的海量數(shù)據(jù)一般是不完整的、有噪聲的且是不一致的。如果直接將這些雜亂的數(shù)據(jù)應(yīng)用到數(shù)據(jù)挖掘和可視化之中,可能會(huì)導(dǎo)致大量的誤差出現(xiàn),甚至是決策的干擾或者錯(cuò)誤,因此必須要先經(jīng)過(guò)數(shù)據(jù)清洗過(guò)程,過(guò)濾一些錯(cuò)誤信息。

所謂數(shù)據(jù)清洗,就是試圖檢測(cè)和去除數(shù)據(jù)集合中的噪聲數(shù)據(jù)和無(wú)關(guān)數(shù)據(jù),處理重復(fù)數(shù)據(jù)、彌補(bǔ)缺失數(shù)據(jù)和知識(shí)背景中的白噪聲的過(guò)程,從而達(dá)到提升數(shù)據(jù)質(zhì)量的目的。數(shù)據(jù)清洗在整個(gè)數(shù)據(jù)分析過(guò)程中是不可或缺的一個(gè)環(huán)節(jié),在實(shí)際環(huán)境下,數(shù)據(jù)清洗的時(shí)間和復(fù)雜度甚至高于數(shù)據(jù)爬取的過(guò)程。8.1數(shù)據(jù)清洗概述

數(shù)據(jù)清洗(DataCleaning)是對(duì)數(shù)據(jù)進(jìn)行重新審查和校驗(yàn)的過(guò)程,其目的在于刪除重復(fù)信息、糾正存在的錯(cuò)誤,并提供數(shù)據(jù)一致性。

數(shù)據(jù)清洗工作是數(shù)據(jù)分析過(guò)程中的關(guān)鍵步驟,其結(jié)果關(guān)系到模型的最終運(yùn)行效果和最終結(jié)論。而這一切操作都源自數(shù)據(jù)清洗的對(duì)象——數(shù)據(jù)的質(zhì)量。部分學(xué)者認(rèn)為數(shù)據(jù)質(zhì)量問(wèn)題應(yīng)該在數(shù)據(jù)產(chǎn)生的源頭解決,也就是說(shuō),在爬取時(shí)應(yīng)盡量避免錯(cuò)誤數(shù)據(jù)的產(chǎn)生。然而在實(shí)際環(huán)境下,由于各種不可避免的因素,這一目標(biāo)很難達(dá)成。

基于此,數(shù)據(jù)清洗這一步驟是必然存在的,它可能會(huì)出現(xiàn)在數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)之前的環(huán)節(jié),也有可能在數(shù)據(jù)分析之后再進(jìn)行,這完全取決于應(yīng)用環(huán)節(jié)的需求,但是無(wú)論如何,這一步驟是不可能跳過(guò)的。在特定的場(chǎng)景下,數(shù)據(jù)清洗過(guò)程的操作具備一定的重復(fù)性,因此開(kāi)發(fā)人員一般會(huì)采用可復(fù)用的方式循環(huán)執(zhí)行此過(guò)程。8.1數(shù)據(jù)清洗概述8.1.1數(shù)據(jù)清洗原理

因?yàn)閿?shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)是面向某個(gè)主題的數(shù)據(jù)的集合,這些數(shù)據(jù)從多個(gè)業(yè)務(wù)系統(tǒng)中爬取而來(lái)且包含歷史數(shù)據(jù),這樣就避免不了有的數(shù)據(jù)是錯(cuò)誤數(shù)據(jù)、有的數(shù)據(jù)相互之間有沖突,這些錯(cuò)誤的或有沖突的數(shù)據(jù)顯然不是我們分析的對(duì)象,它們被稱為“臟數(shù)據(jù)”。

數(shù)據(jù)清洗是利用有關(guān)技術(shù),如數(shù)理統(tǒng)計(jì)、數(shù)據(jù)挖掘或預(yù)定義的清理規(guī)則,將臟數(shù)據(jù)轉(zhuǎn)化為滿足數(shù)據(jù)質(zhì)量要求的數(shù)據(jù)。本質(zhì)上,數(shù)據(jù)清洗就是把“臟”的數(shù)據(jù)“洗掉”,它是發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識(shí)別的錯(cuò)誤的最后一道程序,包括檢查數(shù)據(jù)一致性、處理無(wú)效值和缺失值等。8.1數(shù)據(jù)清洗概述8.1.2主要數(shù)據(jù)類型

不符合要求的數(shù)據(jù)主要有不完整的數(shù)據(jù)(缺失數(shù)據(jù))、異常數(shù)據(jù)和重復(fù)數(shù)據(jù)三大類。1.缺失數(shù)據(jù)

這一類數(shù)據(jù)主要是一些必備信息的缺失,如供應(yīng)商的名稱、公司的名稱、客戶的區(qū)域信息缺失,業(yè)務(wù)系統(tǒng)中主表與明細(xì)表不匹配等。這一類數(shù)據(jù)過(guò)濾出來(lái)后,按缺失的內(nèi)容分別寫(xiě)入不同Excel文件向客戶提交,并要求在規(guī)定的時(shí)間內(nèi)補(bǔ)全,補(bǔ)全后才寫(xiě)入數(shù)據(jù)倉(cāng)庫(kù)。8.1數(shù)據(jù)清洗概述8.1.2主要數(shù)據(jù)類型2.異常數(shù)據(jù)

異常數(shù)據(jù)產(chǎn)生的原因是業(yè)務(wù)系統(tǒng)不夠健全,在接收輸入后沒(méi)有進(jìn)行判斷就直接寫(xiě)入后臺(tái)數(shù)據(jù)庫(kù)造成的,比如數(shù)值型數(shù)據(jù)輸入成全角數(shù)字字符、字符串?dāng)?shù)據(jù)后面有一個(gè)回車操作、日期格式不正確、日期越界等。這一類數(shù)據(jù)也要進(jìn)行分類,對(duì)于類似于全角字符、數(shù)據(jù)前后有不可見(jiàn)字符等問(wèn)題,只能通過(guò)編碼方式找出來(lái),然后要求客戶在業(yè)務(wù)系統(tǒng)修正之后爬取數(shù)據(jù)。日期格式不正確或者日期越界將導(dǎo)致系統(tǒng)運(yùn)行失敗,這一類錯(cuò)誤同樣需要修正之后再進(jìn)行爬取。3.重復(fù)數(shù)據(jù)

對(duì)于這一類數(shù)據(jù),特別是多個(gè)維度的表中會(huì)出現(xiàn)這種情況,將重復(fù)數(shù)據(jù)記錄的所有字段導(dǎo)出來(lái),讓客戶確認(rèn)并整理。8.1數(shù)據(jù)清洗概述8.1.2主要數(shù)據(jù)類型

數(shù)據(jù)清洗是一個(gè)反復(fù)的過(guò)程,不可能在幾天內(nèi)完成。對(duì)于過(guò)濾掉的數(shù)據(jù),要寫(xiě)入文本文件或者將過(guò)濾數(shù)據(jù)寫(xiě)入數(shù)據(jù)表。在開(kāi)發(fā)初期,要頻繁地進(jìn)行溝通,不斷修正錯(cuò)誤和驗(yàn)證數(shù)據(jù),以提高數(shù)據(jù)清洗的效率。需要注意的是,在數(shù)據(jù)清洗時(shí),不要將有用的數(shù)據(jù)過(guò)濾掉,對(duì)于每個(gè)過(guò)濾規(guī)則要認(rèn)真進(jìn)行驗(yàn)證

并確認(rèn)。

數(shù)據(jù)清洗的流程如圖8-1所示。第一步就是獲取各種形式的數(shù)據(jù),包含臟數(shù)據(jù);第二步是確定數(shù)據(jù)清洗的策略和方法,這部分由實(shí)際環(huán)境的需求所決定,同時(shí)會(huì)結(jié)合數(shù)理統(tǒng)計(jì)和數(shù)據(jù)挖掘等相關(guān)技術(shù),實(shí)現(xiàn)缺失值的清洗,去除不需要的字段,填充缺失內(nèi)容,修正錯(cuò)誤的內(nèi)容;第三步即重新爬取數(shù)據(jù),此時(shí)的數(shù)據(jù)即可滿足實(shí)際環(huán)境下的基本需求。8.1數(shù)據(jù)清洗概述

圖8-1數(shù)據(jù)清洗的流程8.1數(shù)據(jù)清洗概述8.1.3常用工具

在數(shù)據(jù)清洗和分析過(guò)程中,經(jīng)常使用基于Python的第三方工具輔助完成,這些工具使用簡(jiǎn)單,效率較高。常用的數(shù)據(jù)清洗和分析工具有NumPy、Pandas和Scipy等,本節(jié)主要針對(duì)NumPy和Scipy進(jìn)行簡(jiǎn)單介紹。1.NumPyNumPy(NumericalPython)是Python的一種開(kāi)源的數(shù)值計(jì)算擴(kuò)展工具。它可用來(lái)存儲(chǔ)和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)高效得多,支持大量的維度數(shù)組與矩陣運(yùn)算。此外,針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。8.1數(shù)據(jù)清洗概述8.1.3常用工具NumPy提供了許多高級(jí)的數(shù)值編程工具,常用于科學(xué)計(jì)算中,主要包括:

一個(gè)強(qiáng)大的N維數(shù)組對(duì)象(Array);

成熟的函數(shù)庫(kù);

用于整合C/C++和FORTRAN代碼的工具包;

實(shí)用的線性代數(shù)、傅里葉變換和隨機(jī)數(shù)生成函數(shù)。NumPy通常與Scipy(ScientificPython)和Matplotlib(繪圖庫(kù))一起使用,這種組合廣泛用于替代MATLAB。NumPy現(xiàn)已被視為一種更加現(xiàn)代和完整的編程工具。8.2數(shù)據(jù)清洗方法

本節(jié)主要針對(duì)數(shù)據(jù)源中的重復(fù)數(shù)據(jù)、缺失數(shù)據(jù)和異常數(shù)據(jù)進(jìn)行清洗,同時(shí)涉及部分字段拆分問(wèn)題。需要說(shuō)明的是,在爬取的數(shù)據(jù)中,一般不會(huì)同時(shí)存在以上3種類型的數(shù)據(jù),常見(jiàn)的是兩種甚至一種類型的數(shù)據(jù)。讀者在實(shí)際操作過(guò)程中,應(yīng)根據(jù)開(kāi)發(fā)需求,有針對(duì)性地選擇恰當(dāng)?shù)膶?shí)現(xiàn)方案。8.2.1重復(fù)數(shù)據(jù)處理

在數(shù)據(jù)庫(kù)或者數(shù)據(jù)倉(cāng)庫(kù)中,理論上一個(gè)實(shí)體應(yīng)該只有一條與之對(duì)應(yīng)的記錄。但很多原因可能導(dǎo)致集成后的數(shù)據(jù)出現(xiàn)同一實(shí)體對(duì)應(yīng)多條記錄的情況,例如數(shù)據(jù)錄入出錯(cuò)、數(shù)據(jù)不完整、數(shù)據(jù)縮寫(xiě)等。在數(shù)據(jù)清洗過(guò)程中,重復(fù)記錄的檢測(cè)與清除是一項(xiàng)非常重要的操作。

8.2數(shù)據(jù)清洗方法8.2.1重復(fù)數(shù)據(jù)處理1.重復(fù)數(shù)據(jù)的分類

重復(fù)數(shù)據(jù)主要分為兩類。

(1)完全重復(fù)數(shù)據(jù)

完全重復(fù)數(shù)據(jù)即兩個(gè)數(shù)據(jù)行的內(nèi)容完全一致,這類數(shù)據(jù)很容易辨別。

針對(duì)完全重復(fù)數(shù)據(jù)的檢測(cè),一個(gè)最簡(jiǎn)單的方式就是對(duì)于數(shù)據(jù)集進(jìn)行排序,然后通過(guò)比較相鄰的記錄并進(jìn)行合并操作,或者直接采用第三方包中提供的方法去除重復(fù)項(xiàng)。

(2)不完全重復(fù)數(shù)據(jù)

不完全重復(fù)數(shù)據(jù)是指客觀上表示現(xiàn)實(shí)世界中的同一實(shí)體,但是由于表達(dá)方式不同,或者拼寫(xiě)錯(cuò)誤等原因,導(dǎo)致數(shù)據(jù)存在多條重復(fù)信息。8.2數(shù)據(jù)清洗方法8.2.1重復(fù)數(shù)據(jù)處理

對(duì)于不完全重復(fù)數(shù)據(jù),檢查可能出現(xiàn)的重復(fù)記錄需要有充足的計(jì)算能力,因?yàn)闄z查一條記錄就需要遍歷整個(gè)數(shù)據(jù)集。也就是說(shuō),對(duì)這個(gè)數(shù)據(jù)集的檢查需要所有的記錄之間實(shí)現(xiàn)兩兩匹配,其計(jì)算的復(fù)雜度為O(n2)。對(duì)于可能重復(fù)的記錄檢測(cè)需要使用模糊匹配的邏輯,也可以通過(guò)計(jì)算字符串的相似度,模糊匹配出疑似的重復(fù)數(shù)據(jù),然后結(jié)合其他的參考字段進(jìn)行查重操作。

在數(shù)據(jù)清洗過(guò)程中,重復(fù)值處理操作并非只執(zhí)行一次。一般在數(shù)據(jù)清洗的第一步執(zhí)行第一次的重復(fù)值去除操作,此時(shí)可以簡(jiǎn)化后續(xù)的操作,減少數(shù)據(jù)量,但是在后續(xù)清洗過(guò)程中,可能會(huì)產(chǎn)生新的重復(fù)值,因此在后續(xù)的數(shù)據(jù)清洗環(huán)節(jié),仍需要重復(fù)執(zhí)行此操作。具體執(zhí)行階段的設(shè)計(jì)和執(zhí)行周期由目標(biāo)任務(wù)決定。8.2數(shù)據(jù)清洗方法8.2.1重復(fù)數(shù)據(jù)處理2.去除完全重復(fù)數(shù)據(jù)

在Pandas中提供了重復(fù)數(shù)據(jù)的判斷和刪除方法:duplicated()和drop_duplicates()。

(1)duplicated()duplicated()用于指定列數(shù)據(jù)重復(fù)項(xiàng)的判斷,返回的內(nèi)容是:指定列重復(fù)行。

(2)drop_duplicates()drop_duplicates()用于刪除指定列重復(fù)項(xiàng)的數(shù)據(jù),返回的內(nèi)容是:新產(chǎn)生的DataFrame。

8.2數(shù)據(jù)清洗方法8.2.2缺失數(shù)據(jù)處理

記錄中的某個(gè)或者某些屬性的值是不完整的,這些值被稱為缺失值。缺失值的產(chǎn)生原因多種多樣,主要分為機(jī)械原因和人為原因。

機(jī)械原因

由于機(jī)械原因?qū)е碌臄?shù)據(jù)收集或保存的失敗而造成的數(shù)據(jù)缺失,比如數(shù)據(jù)存儲(chǔ)的失敗、存儲(chǔ)器損壞、機(jī)械故障導(dǎo)致某段時(shí)間數(shù)據(jù)未能收集等。

人為原因

人為原因是由于人的主觀失誤、歷史局限或有意隱瞞造成的數(shù)據(jù)缺失,比如被訪人拒絕透露相關(guān)問(wèn)題的答案或者回答的問(wèn)題是無(wú)效的、數(shù)據(jù)錄入人員漏錄入數(shù)據(jù)等。

對(duì)于缺失值的處理,主要分為刪除法和插補(bǔ)法。8.2數(shù)據(jù)清洗方法8.2.2缺失數(shù)據(jù)處理

記錄中的某個(gè)或者某些屬性的值是不完整的,這些值被稱為缺失值。缺失值的產(chǎn)生原因多種多樣,主要分為機(jī)械原因和人為原因。

機(jī)械原因

由于機(jī)械原因?qū)е碌臄?shù)據(jù)收集或保存的失敗而造成的數(shù)據(jù)缺失,比如數(shù)據(jù)存儲(chǔ)的失敗、存儲(chǔ)器損壞、機(jī)械故障導(dǎo)致某段時(shí)間數(shù)據(jù)未能收集等。

人為原因

人為原因是由于人的主觀失誤、歷史局限或有意隱瞞造成的數(shù)據(jù)缺失,比如被訪人拒絕透露相關(guān)問(wèn)題的答案或者回答的問(wèn)題是無(wú)效的、數(shù)據(jù)錄入人員漏錄入數(shù)據(jù)等。

對(duì)于缺失值的處理,主要分為刪除法和插補(bǔ)法。8.2數(shù)據(jù)清洗方法8.2.2缺失數(shù)據(jù)處理1.刪除法

(1)識(shí)別缺失值

在Pandas中提供了識(shí)別缺失值的方法:isnull(),以及識(shí)別非缺失值的方法:notnull()。

基本語(yǔ)法如下:isnull():識(shí)別缺失值notnull():識(shí)別非缺失值

這兩個(gè)方法是元素級(jí)別的判斷,即將對(duì)應(yīng)的所有元素的位置都列出來(lái),元素為空或者NA就顯示True,否則就是False。直接返回bool值類型的數(shù)據(jù)矩陣。

此外,還可以結(jié)合其他的函數(shù),輔助缺失值的判斷。8.2數(shù)據(jù)清洗方法8.2.2缺失數(shù)據(jù)處理(2)刪除缺失值

刪除法是指將缺失值的特征或者記錄刪除。刪除法分為刪除觀測(cè)記錄和刪除特征兩種,它屬于通過(guò)減少樣本量來(lái)?yè)Q取信息完整度的一種方法,是最簡(jiǎn)單的缺失值處理方法。Pandas中提供了簡(jiǎn)單的刪除缺失值的方法:dropna(),通過(guò)參數(shù)控制,此方法既可以刪除觀測(cè)記錄,也可以刪除特征。2.插補(bǔ)法

插補(bǔ)法與刪除法不同,它使用建議的數(shù)據(jù)替換缺失值,從而保留當(dāng)前記錄中的其他維度數(shù)據(jù)。表8-2列出了常見(jiàn)的插補(bǔ)方法。8.2數(shù)據(jù)清洗方法8.2.2缺失數(shù)據(jù)處理

表8-2常見(jiàn)的插補(bǔ)方法

下面介紹替換法和插值法。(1)替換法

替換法是指用一個(gè)特定的值替換缺失值。由于數(shù)據(jù)類型不同,處理方法也不盡相同。當(dāng)缺失值為數(shù)值型時(shí),可以利用固定的數(shù)據(jù)或者統(tǒng)計(jì)量來(lái)替代缺失值;當(dāng)缺失值的類型為字符型時(shí),則可以選擇使用特定的字符替代缺失值。插補(bǔ)方法具體操作均值/中位數(shù)/眾數(shù)插補(bǔ)

根據(jù)屬性值的類型,用該屬性取值的平均數(shù)/中位數(shù)/眾數(shù)進(jìn)行插補(bǔ)替換法

將缺失的屬性值用一個(gè)特定的值替換最近鄰插補(bǔ)

在記錄中找到與缺失樣本最接近的樣本的該屬性值插補(bǔ)回歸方法

對(duì)帶有缺失值的變量,根據(jù)已有數(shù)據(jù)和與其有關(guān)的其他變量(因變量)的數(shù)據(jù)建立擬合模型來(lái)預(yù)測(cè)缺失的屬性值插值法利用已知點(diǎn)擬合的插值函數(shù)f(x),未知值由對(duì)應(yīng)點(diǎn)xi求出的函數(shù)值f(xi)近似代替8.2數(shù)據(jù)清洗方法8.2.2缺失數(shù)據(jù)處理

(2)插值法

替換法使用的難度較低,但是統(tǒng)一替換相同的數(shù)據(jù),會(huì)影響數(shù)據(jù)的標(biāo)準(zhǔn)差,導(dǎo)致信息量的變動(dòng)。在面對(duì)數(shù)值類型的缺失問(wèn)題時(shí),還可以使用插值法。

常用的插值法有線性插值、多項(xiàng)式插值和樣條插值等。

線性插值是一種較為簡(jiǎn)單的插值方法,它針對(duì)已知的值求出線性方程,通過(guò)求解線性方程式得到缺失值。

多項(xiàng)式插值利用已知的值擬合一個(gè)多項(xiàng)式,使得現(xiàn)有的數(shù)據(jù)滿足這個(gè)多項(xiàng)式,再利用這個(gè)多項(xiàng)式求解缺失值。常見(jiàn)的多項(xiàng)式插值有拉格朗日插值和牛頓插值等。

樣條插值是以可變樣條來(lái)擬合一條經(jīng)過(guò)一系列點(diǎn)的光滑曲線的插值方法。插值的樣條由一些多項(xiàng)式組成,每個(gè)多項(xiàng)式都由相鄰兩個(gè)數(shù)據(jù)點(diǎn)決定,這樣可以保證兩個(gè)相鄰多項(xiàng)式及其導(dǎo)數(shù)在銜接處是連續(xù)的。8.2數(shù)據(jù)清洗方法8.2.3異常數(shù)據(jù)處理

異常值是指數(shù)據(jù)中個(gè)別數(shù)值明顯偏離其余的數(shù)值,有時(shí)也稱為離群點(diǎn)。檢測(cè)異常值就是檢驗(yàn)數(shù)據(jù)中是否有輸入錯(cuò)誤及是否含有不合理的數(shù)據(jù)。如果計(jì)算分析過(guò)程中有大量異常值的存在,而且算法對(duì)于異常值敏感,那么數(shù)據(jù)分析的結(jié)果將產(chǎn)生偏差,甚至出現(xiàn)錯(cuò)誤。

另一方面,異常值在某些場(chǎng)景下反而是非常重要的,例如疾病預(yù)測(cè)。通常健康人的身體指標(biāo)在某些維度上是相似的,如果一個(gè)人的身體指標(biāo)出現(xiàn)了異常,那么他的身體在某些方面肯定發(fā)生了改變,當(dāng)然這種改變并不一定是由疾病引起(通常被稱為噪聲點(diǎn))的,但異常的發(fā)生和檢測(cè)是疾病預(yù)測(cè)一個(gè)重要起始點(diǎn)。相似的操作也可以應(yīng)用到信用欺詐、網(wǎng)絡(luò)攻擊等場(chǎng)景中。8.2數(shù)據(jù)清洗方法8.2.3異常數(shù)據(jù)處理

針對(duì)數(shù)值類型,一般異常值的檢測(cè)方法有基于統(tǒng)計(jì)的方法、基于聚類的方法及專門(mén)檢測(cè)異常值的方法等。

基于統(tǒng)計(jì)的方法一般用于連續(xù)型的數(shù)據(jù),可以通過(guò)簡(jiǎn)單的統(tǒng)計(jì)量或者使用散點(diǎn)圖觀察異常值的存在。針對(duì)簡(jiǎn)單的數(shù)據(jù)計(jì)算,可以使用describe()方法對(duì)統(tǒng)計(jì)字段進(jìn)行描述性分析。而對(duì)更專業(yè)的數(shù)據(jù)計(jì)算,可以使用

原則實(shí)現(xiàn)數(shù)據(jù)分析。

表8-4常見(jiàn)的異常值處理方法異常值處理方法具體描述刪除含有異常值的記錄直接將含有異常值的記錄刪除按照缺失值處理將異常值視為缺失值,利用缺失值處理的方法進(jìn)行處理平均值修正用前后兩個(gè)觀測(cè)值的平均值修正該異常值不處理直接在具有異常值的數(shù)據(jù)集上進(jìn)行數(shù)據(jù)挖掘8.2數(shù)據(jù)清洗方法8.2.4格式內(nèi)容清洗

如果數(shù)據(jù)由系統(tǒng)日志而來(lái),那么通常在格式內(nèi)容方面會(huì)與元數(shù)據(jù)的描述一致。而如果數(shù)據(jù)由人工收集或用戶填寫(xiě)而來(lái),則有可能在格式內(nèi)容上存在一些問(wèn)題。簡(jiǎn)單來(lái)說(shuō),格式內(nèi)容問(wèn)題有以下幾類。1.時(shí)間、日期、數(shù)值、全半角等顯示格式不一致

這種問(wèn)題通常與輸入有關(guān),在整合多來(lái)源的數(shù)據(jù)時(shí)也有可能遇到此類問(wèn)題,將其處理成某種一致的格式即可。2.內(nèi)容中有不該存在的字符

某些內(nèi)容可能只包括一部分字符,比如身份證號(hào)是數(shù)字或數(shù)字+字母,中國(guó)人姓名是漢字,而可能出現(xiàn)姓名中存在數(shù)字、身份證號(hào)中出現(xiàn)漢字等問(wèn)題。這種情況下,需要以半自動(dòng)校驗(yàn)半人工方式來(lái)找出可能存在的問(wèn)題,并去除不需要的字符。8.2數(shù)據(jù)清洗方法8.2.4格式內(nèi)容清洗3.內(nèi)容與該字段應(yīng)有內(nèi)容不符

這種問(wèn)題很常見(jiàn),比如姓名錯(cuò)寫(xiě)為性別、身份證號(hào)錯(cuò)寫(xiě)為手機(jī)號(hào)等。但該問(wèn)題的特殊性在于:并不能以簡(jiǎn)單的刪除來(lái)處理。因?yàn)檫@有可能是人工填寫(xiě)錯(cuò)誤,也有可能是前端沒(méi)有校驗(yàn),還有可能是導(dǎo)入數(shù)據(jù)時(shí)部分或全部存在列沒(méi)有對(duì)齊等,因此要詳細(xì)識(shí)別問(wèn)題產(chǎn)生的原因。

格式內(nèi)容問(wèn)題一般是細(xì)節(jié)的問(wèn)題,但很多分析失誤都在此處出現(xiàn),比如統(tǒng)計(jì)值不全(數(shù)字中添加字母等)、模型輸出失敗或效果不好(數(shù)據(jù)列混淆等)。8.2.5邏輯錯(cuò)誤清洗8.2數(shù)據(jù)清洗方法8.2.5邏輯錯(cuò)誤清洗

邏輯錯(cuò)誤清洗工作是去掉一些使用簡(jiǎn)單邏輯推理就可以直接發(fā)現(xiàn)問(wèn)題的數(shù)據(jù),防止數(shù)據(jù)分析結(jié)果走偏。邏輯錯(cuò)誤清洗主要包含以下內(nèi)容。1.去除不合理值

不合理的數(shù)值類似于異常值,可以通過(guò)簡(jiǎn)單的統(tǒng)計(jì)量或者使用散點(diǎn)圖觀察到它們的存在。

除了算術(shù)統(tǒng)計(jì),還可以通過(guò)人工的方式篩選出這些不合理值。2.修正矛盾內(nèi)容

有些字段是可以互相驗(yàn)證的,例如,我們知道身份證號(hào)的中間幾位是個(gè)人的出生年月,在填寫(xiě)年齡時(shí),如果兩者嚴(yán)重不符,則被認(rèn)為是矛盾的數(shù)據(jù)。在這種情況下,需要根據(jù)字段的數(shù)據(jù)來(lái)源,來(lái)判定哪個(gè)字段提供的信息更為可靠,去除或重構(gòu)不可靠的字段。

8.3數(shù)據(jù)規(guī)整8.3數(shù)據(jù)規(guī)整

現(xiàn)有數(shù)據(jù)往往是不同時(shí)期采集的,人工操作多,數(shù)據(jù)輸入操作不嚴(yán)謹(jǐn),有時(shí)會(huì)存在以下質(zhì)量問(wèn)題:數(shù)據(jù)編碼問(wèn)題、數(shù)據(jù)分層問(wèn)題、數(shù)據(jù)特征及描述問(wèn)題。

數(shù)據(jù)規(guī)整是指,根據(jù)標(biāo)準(zhǔn)規(guī)范,對(duì)采集的原始數(shù)據(jù)進(jìn)行層次劃分、編碼賦值、格式轉(zhuǎn)換等處理,以達(dá)到入庫(kù)或更新的要求。

針對(duì)不同的數(shù)據(jù)來(lái)源和種類,數(shù)據(jù)規(guī)整的方法與思路不同。一般在完成數(shù)據(jù)清洗的基礎(chǔ)上,再進(jìn)行數(shù)據(jù)規(guī)整的操作。8.3.1字段拆分

如果數(shù)據(jù)中有包含多個(gè)信息單元的字符串字段,在將該字段中的值拆分為多個(gè)單獨(dú)的字段的情況下,數(shù)據(jù)分析將更為輕松。在Python中,可以自定義拆分選項(xiàng),基于指定的分隔符來(lái)分隔值。8.3數(shù)據(jù)規(guī)整8.3.2數(shù)據(jù)分組

對(duì)于通過(guò)爬蟲(chóng)獲得的數(shù)據(jù),雖然經(jīng)過(guò)數(shù)據(jù)清洗、字段拆分等手段進(jìn)行了初步處理,但由于數(shù)據(jù)龐雜,還不能直接進(jìn)入對(duì)數(shù)據(jù)的分析階段。在此之前,有必要對(duì)數(shù)據(jù)進(jìn)行分組處理,以反映數(shù)據(jù)分布的特征及規(guī)律。

數(shù)據(jù)分組是根據(jù)統(tǒng)計(jì)研究的需要,將原始數(shù)據(jù)按照某種標(biāo)準(zhǔn)劃分成不同的組別,分組后的數(shù)據(jù)稱為分組數(shù)據(jù)。數(shù)據(jù)分組的主要目的是觀察數(shù)據(jù)的分布特征。數(shù)據(jù)分組后,再計(jì)算出各組中數(shù)據(jù)出現(xiàn)的頻數(shù),就形成了一張頻數(shù)分布表。8.3數(shù)據(jù)規(guī)整8.3.2數(shù)據(jù)分組

對(duì)于非數(shù)值型數(shù)據(jù),依據(jù)屬性的不同將其劃分為若干組;對(duì)于數(shù)值型數(shù)據(jù),依據(jù)數(shù)值的不同將數(shù)據(jù)劃分為若干組。分組后,要使組內(nèi)的差距盡可能小,而組與組之間則有明顯的差異,從而使大量無(wú)序、混沌的數(shù)據(jù)變?yōu)橛行?、層次分明、顯示總體數(shù)量特征的信息。

數(shù)據(jù)分組應(yīng)遵循兩個(gè)基本原則。

(1)窮盡性原則

窮盡性原則要求每一項(xiàng)數(shù)據(jù)都能劃歸到某個(gè)組中,不會(huì)產(chǎn)生“遺漏”現(xiàn)象。

(2)互斥性原則

互斥性原則要求將數(shù)據(jù)分組后,各個(gè)組的范圍應(yīng)互不相容、互為排斥。即每個(gè)數(shù)據(jù)在特定的分組標(biāo)志下只能歸屬到某個(gè)組,而不能同時(shí)或可能同時(shí)歸屬到某幾個(gè)組。8.3數(shù)據(jù)規(guī)整8.3.3數(shù)據(jù)聚合

數(shù)據(jù)聚合是指任何能夠從數(shù)組產(chǎn)生標(biāo)量值的數(shù)據(jù)轉(zhuǎn)換過(guò)程,可以簡(jiǎn)單地將其理解為統(tǒng)計(jì)計(jì)算,如mean()、sum()、max()等。數(shù)據(jù)聚合本身與分組并沒(méi)有直接關(guān)系,在任何一列(行)或全部列(行)上都可以進(jìn)行。當(dāng)這種運(yùn)算被應(yīng)用在分組數(shù)據(jù)上時(shí),結(jié)果可能會(huì)變得更有意義?;诖?,經(jīng)常把分組和聚合操作組合在一起,執(zhí)行一個(gè)完整的功能。

針對(duì)DataFrameGroupby對(duì)象,可以應(yīng)用的聚合運(yùn)算方法有以下幾種。1.使用內(nèi)置的方法

常見(jiàn)的內(nèi)置聚合運(yùn)算方法如表8-5所示。這些方法為查看每一組數(shù)據(jù)的整體情況和分布狀態(tài)提供了良好的支持。8.3數(shù)據(jù)規(guī)整8.3.3數(shù)據(jù)聚合

表8-5常見(jiàn)的內(nèi)置聚合運(yùn)算方法聚合方法具體描述count分組數(shù)目,非NA值head前n個(gè)值sum求和mean非NA值平均數(shù)聚合方法具體描述median非NA值的算術(shù)中位數(shù)std、var分母為n-1的標(biāo)準(zhǔn)差和方差min、max非NA值最小值、最大值prod非NA值的積first、last第一個(gè)和最后一個(gè)非NA值8.3數(shù)據(jù)規(guī)整8.3.4數(shù)據(jù)分割1.?dāng)?shù)據(jù)分割簡(jiǎn)介

數(shù)據(jù)分割是指把邏輯上為統(tǒng)一整體的數(shù)據(jù)分割成較小的、可以獨(dú)立管理的物理單元進(jìn)行存儲(chǔ),以便進(jìn)行數(shù)據(jù)的重構(gòu)、重組和恢復(fù),從而提高創(chuàng)建索引和順序掃描效率。

數(shù)據(jù)分割的目的是把數(shù)據(jù)劃分成小的物理單元,這樣在管理數(shù)據(jù)時(shí)就會(huì)有更大的靈活性。小批量的存儲(chǔ)單元具有容易重構(gòu)、自由索引、順序掃描、容易重組、容易恢復(fù)和監(jiān)控等優(yōu)點(diǎn),而網(wǎng)絡(luò)爬蟲(chóng)往往能獲取到海量數(shù)據(jù),如果期望達(dá)到大批量存儲(chǔ)的優(yōu)勢(shì),數(shù)據(jù)分割則是數(shù)據(jù)獲取后經(jīng)常采用的操作。

數(shù)據(jù)分割的標(biāo)準(zhǔn)通??蛇x擇按日期、地域、業(yè)務(wù)領(lǐng)域或組織單位等來(lái)進(jìn)行分割,也可以按多個(gè)分割標(biāo)準(zhǔn)的組合進(jìn)行具體實(shí)施,但一般情況下,分割標(biāo)準(zhǔn)應(yīng)包括日期信息。數(shù)據(jù)分割主要采用以下兩種方式。8.3數(shù)據(jù)規(guī)整8.3.4數(shù)據(jù)分割

(1)水平分割

水平分

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論