這篇文章把數(shù)據(jù)講透了(三):數(shù)據(jù)清洗
編輯導(dǎo)讀:隨著“數(shù)智化”時(shí)代的到來(lái),我們生活中的方方面面都離不開(kāi)數(shù)據(jù),而你真的了解數(shù)據(jù)嗎?本文將為你重新解讀數(shù)據(jù)的概念和價(jià)值,以及數(shù)據(jù)的價(jià)值是如何在“數(shù)智化”時(shí)代下一步一步得到運(yùn)用與升華的;因內(nèi)容頗多,筆者將分幾期為大家進(jìn)行講解。
一、前言
上兩期文章中,我們已經(jīng)了解到“數(shù)據(jù)”是一個(gè)龐大的體系(如下圖所示);并用了菜市場(chǎng)的例子,為大家講解數(shù)據(jù)來(lái)源的含義,用買(mǎi)菜的例子,為大家講解數(shù)據(jù)采集的步驟;而今天小陳主要給講解,我們“買(mǎi)完菜”以后,怎樣進(jìn)行擇菜、洗菜,即數(shù)據(jù)清洗的過(guò)程。
二、數(shù)據(jù)清洗(擇菜、洗菜)
想一步步了解數(shù)據(jù)清洗究竟是怎樣如何運(yùn)作的,首先我們需要明確數(shù)據(jù)清洗的概念是什么?
1. 數(shù)據(jù)清洗的基本概念與重要性
數(shù)據(jù)清洗——重新檢查和驗(yàn)證數(shù)據(jù)的過(guò)程,旨在刪除重復(fù)信息,糾正現(xiàn)有錯(cuò)誤并提供數(shù)據(jù)一致性。
以上,是百度百科對(duì)數(shù)據(jù)清洗的概念定義。以我個(gè)人的理解來(lái)看,數(shù)據(jù)清洗就是一個(gè)將“臟數(shù)據(jù)”替換成“高質(zhì)量可用數(shù)據(jù)“的過(guò)程。
畢竟,數(shù)據(jù)清洗作為數(shù)據(jù)預(yù)處理中至關(guān)重要的環(huán)節(jié),清洗后數(shù)據(jù)的質(zhì)量很大程度上決定了后續(xù)研究型數(shù)據(jù)分析的結(jié)果準(zhǔn)確性。
2. 數(shù)據(jù)清洗的對(duì)象與方法實(shí)操
以上陳述了數(shù)據(jù)清洗的重要性,下面我們來(lái)進(jìn)一步確定,需要被清洗的對(duì)象。
數(shù)據(jù)清洗的對(duì)象我個(gè)人將其大致分兩類(lèi),下面我們逐一進(jìn)行介紹。
1)可避免型臟數(shù)據(jù)
可避免型臟數(shù)據(jù),顧名思義,這類(lèi)臟數(shù)據(jù)可以直接通過(guò)簡(jiǎn)單處理成為有效數(shù)據(jù)或人為修改避免的。
這類(lèi)臟數(shù)據(jù)在日常生活中,其實(shí)是十分常見(jiàn)的,例如命名不規(guī)范導(dǎo)致的錯(cuò)誤、拼寫(xiě)錯(cuò)誤、輸入錯(cuò)誤、空值等等。
舉個(gè)例子,下面是某二手車(chē)平臺(tái)的相關(guān)數(shù)據(jù)(文件名:car-data.xlsx),可以看到,圖中4年轉(zhuǎn)售價(jià)欄中存在明顯的臟數(shù)據(jù)(該欄數(shù)據(jù)形式應(yīng)為阿拉伯?dāng)?shù)字,單位為萬(wàn)),這就是輸入錯(cuò)誤導(dǎo)致的可避免型臟數(shù)據(jù)。
認(rèn)識(shí)了此類(lèi)臟數(shù)據(jù)的類(lèi)型,那么我們?cè)谀玫綌?shù)據(jù)后,如何及時(shí)的對(duì)此類(lèi)“可修正”的數(shù)據(jù)錯(cuò)誤進(jìn)行偵察訂正呢?此處我們分別以excel、python為例,數(shù)據(jù)集還是上面二手車(chē)數(shù)據(jù)。
excel中,對(duì)“可避免型”臟數(shù)據(jù)的偵察,可以通過(guò)篩選功能進(jìn)行查看,如下,選中“4年轉(zhuǎn)售價(jià)”維度的數(shù)據(jù),并對(duì)其進(jìn)行篩選,可以偵察到nan(空)值2個(gè),輸入錯(cuò)誤值2個(gè)。
python語(yǔ)言中,則可以試用data.describe()查看目標(biāo)列的基本統(tǒng)計(jì)信息:
查看對(duì)應(yīng)信息后,若確定由錯(cuò)別字,英語(yǔ)大小寫(xiě)不統(tǒng)一的情況可以使用:data[‘car-data’].str.upper() ;輸入了額外的空格:data[‘car-data’].str.strip()。
2)不可避免型臟數(shù)據(jù)
不可避免型臟數(shù)據(jù),主要形式包括異常值、重復(fù)值、空值等;此類(lèi)臟數(shù)據(jù)的處理,就需要聯(lián)系一些統(tǒng)計(jì)學(xué)知識(shí)進(jìn)行偵察與填補(bǔ),下面還是舉一些具體例子進(jìn)行闡述。
異常值:
常用偵察手段3σ定律檢驗(yàn)(假設(shè)一組檢測(cè)數(shù)據(jù)只含有隨機(jī)誤差,對(duì)其進(jìn)行計(jì)算處理得到標(biāo)準(zhǔn)偏差,按一定概率確定一個(gè)區(qū)間,認(rèn)為凡超過(guò)這個(gè)區(qū)間的誤差,就不屬于隨機(jī)誤差而是粗大誤差,含有該誤差的數(shù)據(jù)應(yīng)予以剔除,一般而言這個(gè)區(qū)間是平均值正負(fù)三個(gè)標(biāo)準(zhǔn)差,因此稱(chēng)3σ定律)。
如下所示,二手車(chē)數(shù)據(jù)中需要對(duì)“車(chē)寬”的異常值進(jìn)行檢驗(yàn):
重復(fù)值:
如下所示,拿到數(shù)據(jù)后,我們先要校驗(yàn)一下是否存在重復(fù)記錄;如果存在重復(fù)記錄,python中可以使用 drop_duplicates() 來(lái)刪除重復(fù)數(shù)據(jù),以免重復(fù)計(jì)入,導(dǎo)致數(shù)據(jù)準(zhǔn)確性下降。
如上所示,第5和第9條數(shù)據(jù),除id信息外,其余信息均相同,對(duì)此類(lèi)數(shù)據(jù)我們需要根據(jù)它們的數(shù)據(jù)特征進(jìn)行刪除;而觀(guān)察下方數(shù)據(jù),有FIRST NAME和LAST NAME作為獨(dú)一無(wú)二的標(biāo)識(shí),我們就能根據(jù)數(shù)據(jù)特征利用下方代碼對(duì)重復(fù)值進(jìn)行剔除。
df.drop_duplicates([‘first_name’,’last_name’],inplace=True)
空值:
針對(duì)空值而言,python語(yǔ)言有多種方式對(duì)空值進(jìn)行偵察返回,下面我們逐一介紹。
data.is null()、data.not null(),會(huì)返回true or false,我們就能得知對(duì)應(yīng)指標(biāo)的空值情況,還能用sum()函數(shù),對(duì)空值的總體個(gè)數(shù)進(jìn)行把控。
面對(duì)以上各類(lèi)空值,我們應(yīng)該怎么做呢?刪除單個(gè)?刪除多個(gè)?利用平均值、中位數(shù)進(jìn)行補(bǔ)充?
其實(shí)以上的操作方法,在應(yīng)對(duì)空值時(shí)都是十分常見(jiàn)的,而我們需要掌握的是,在合適的場(chǎng)景使用對(duì)應(yīng)的方式,下面為大家介紹一些常見(jiàn)的空值處理場(chǎng)景~
場(chǎng)景1:該維度數(shù)據(jù),半數(shù)以上or全為為空值——從指標(biāo)有效性角度出發(fā)考慮,是否刪除對(duì)應(yīng)指標(biāo)。
命令:data.dropna(how=’all’),刪除全為空值的行(無(wú)效指標(biāo))。
場(chǎng)景2:該維度存在空值(但空值數(shù)量不多),且總體數(shù)據(jù)樣本量大——因?yàn)閿?shù)據(jù)樣本充足,可以考慮對(duì)存在nan值的樣本進(jìn)行過(guò)濾,采用無(wú)nan值樣本(代碼如下,涉及nan值的數(shù)據(jù)都會(huì)被剔除)。
df.dropna(axis=0,how=’any’) #drop all rows that have any NaN values。
場(chǎng)景3:該維度存在空值(但空值數(shù)量不多),且樣本總體數(shù)量有限,故而不能像場(chǎng)景2一樣,對(duì)有nan值的數(shù)據(jù)進(jìn)行拋棄,需要利用數(shù)理統(tǒng)計(jì)方法,選取合適值對(duì)nan值進(jìn)行填充。
代碼:data.fillna(我們可以看到此例中,使用均值對(duì)空值進(jìn)行填充)。
三、結(jié)語(yǔ)
本期,筆者通過(guò)一個(gè)“洗菜、擇菜”的例子,帶著大家了解了數(shù)據(jù)清洗的對(duì)象與大體方法,相信大家有所收獲!
下期,筆者講在數(shù)據(jù)清洗的基礎(chǔ)上,為大家講解如何利用常用工具進(jìn)行數(shù)據(jù)挖掘!
本文由 @小陳同學(xué)ing. 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
這個(gè)是應(yīng)該產(chǎn)品做的嗎?