數(shù)據(jù)清洗的經(jīng)驗(yàn)與教訓(xùn) 關(guān)于Data Cleaning
【數(shù)據(jù)猿導(dǎo)讀】 那時(shí)候遇到的問(wèn)題現(xiàn)在也不斷遇到,只是手動(dòng)復(fù)制粘貼一個(gè) 40 行 4 列的 Excel 表格比現(xiàn)在做的簡(jiǎn)單很多。下面是我在犯了很多錯(cuò)誤后總結(jié)的教訓(xùn),寫(xiě)下來(lái)做筆記提醒自己,或許也可以給大家啟發(fā)。

小學(xué)的時(shí)候我統(tǒng)計(jì)過(guò)同學(xué)里有多少要訂課間牛奶:每人分別需要什么口味和什么大小,應(yīng)收多少錢(qián)。最后這份按照座位排序的表格要和一張學(xué)號(hào)表格按照同學(xué)姓名對(duì)應(yīng)起來(lái),并計(jì)算每種口味訂購(gòu)數(shù)量和每人應(yīng)收款。過(guò)程中我遇到了很多困難,例如有同學(xué)訂了多種口味,有同學(xué)的信息被登記到了別的同學(xué)那一行——這應(yīng)該是我最早的數(shù)據(jù)清洗經(jīng)歷。那時(shí)候遇到的問(wèn)題現(xiàn)在也不斷遇到,只是手動(dòng)復(fù)制粘貼一個(gè) 40 行 4 列的 Excel 表格比現(xiàn)在做的簡(jiǎn)單很多。
下面是我在犯了很多錯(cuò)誤后總結(jié)的教訓(xùn),寫(xiě)下來(lái)做筆記提醒自己,或許也可以給大家啟發(fā)。
時(shí)間計(jì)劃
數(shù)據(jù)收集、整理通常占整個(gè)研究 70% – 90% 的時(shí)間。一定在計(jì)劃的時(shí)候要給足時(shí)間,安排好整理數(shù)據(jù)同時(shí)可以做的其他事項(xiàng)(寫(xiě)出文章基本框架、閱讀文獻(xiàn)等)。
準(zhǔn)備工作
把原始數(shù)據(jù)單獨(dú)保存在一個(gè)文件夾里,永遠(yuǎn)不要改動(dòng),標(biāo)記它們的來(lái)源(開(kāi)源網(wǎng)站 自己抓取 自己收集 數(shù)據(jù)庫(kù)購(gòu)買(mǎi) )。在處理數(shù)據(jù)前,一定要想好你處理后的數(shù)據(jù)如何能和原始數(shù)據(jù)對(duì)應(yīng)起來(lái),例如通過(guò)變量名或者標(biāo)識(shí)符(identifier)。 這個(gè)步驟很重要,因?yàn)槿绻惆l(fā)現(xiàn)最終數(shù)據(jù)有誤,還能通過(guò)變量名或標(biāo)識(shí)符找到錯(cuò)誤的源頭。
在開(kāi)始處理數(shù)據(jù)前,把數(shù)據(jù)結(jié)構(gòu)了解清楚。最好把下列問(wèn)題的答案寫(xiě)在一個(gè)文檔里:你有哪幾個(gè)數(shù)據(jù)集,分別叫什么名字、長(zhǎng)什么樣(幾行幾列,單位是什么:是個(gè)人-每年層面的數(shù)據(jù),還是國(guó)家-每月的數(shù)據(jù));你的目標(biāo)是什么(合并 算每個(gè)子集的中位數(shù) 統(tǒng)一單位 合并或統(tǒng)一單位的目的又是什么 為什么我的研究要求我這么做 );要用的變量叫什么名字,輸出的變量叫什么名字、長(zhǎng)什么樣,怎樣應(yīng)用到接下來(lái)的分析中。
以上步驟聽(tīng)起來(lái)很簡(jiǎn)單,甚至沒(méi)有做的必要。但是數(shù)據(jù)集多了、處理內(nèi)容復(fù)雜了以后,很容易弄混變量名,忘記最終目的(即“這個(gè)清洗過(guò)的數(shù)據(jù)集到底和我最終研究目的有什么關(guān)系”)。如果你的項(xiàng)目牽扯到第三方(例如公司或政府?dāng)?shù)據(jù)提供方),研究戰(zhàn)線會(huì)拖得很長(zhǎng),可能你一月處理好數(shù)據(jù)集 A,三月調(diào)查公司才把數(shù)據(jù)集 B 給你,你看了一眼 B 發(fā)現(xiàn)又需要數(shù)據(jù)集 C。等你五月開(kāi)始合并 A、B、C 的時(shí)候,你已經(jīng)忘記 A 到底是用來(lái)做什么的了。
寫(xiě)清楚變量與步驟在個(gè)人項(xiàng)目中已經(jīng)非常重要,在合作項(xiàng)目中當(dāng)然必不可少。多人合作中弄錯(cuò)變量含義、弄混文件版本是常見(jiàn)且頭疼的問(wèn)題。
過(guò)程中
不管是多小的數(shù)據(jù)集,千萬(wàn)不要手動(dòng)在 Excel 或者 TXT 編輯器里面手動(dòng)修改數(shù)據(jù),因?yàn)檫@些軟件不會(huì)自動(dòng)記錄你做過(guò)的編輯,時(shí)間久了你可能會(huì)忘記自己做過(guò)什么。如果非要手動(dòng)修改,建議在一個(gè)文檔里完整寫(xiě)下你改動(dòng)的內(nèi)容。通常只有批量手動(dòng)錄入數(shù)據(jù)才會(huì)需要 Excel。
確認(rèn)觀測(cè)值名稱(即第一列內(nèi)容)是獨(dú)特的。通常觀測(cè)值名稱都沒(méi)有重復(fù)(比如國(guó)家名、個(gè)人證件號(hào)碼等),但有些情況下觀測(cè)值可能會(huì)重名(比如城市名、人名)。這時(shí)候你需要加上自己的標(biāo)識(shí)符,以免后期做聚合、合并的時(shí)候出錯(cuò)。
經(jīng)常檢查數(shù)據(jù)類(lèi)(data types,例如 numeric/character/logical/factor)。數(shù)據(jù)類(lèi)如果不對(duì),通常你的命令無(wú)法執(zhí)行,軟件會(huì)報(bào)錯(cuò)。但有時(shí)候恰好可以執(zhí)行,軟件也不會(huì)報(bào)錯(cuò)。這時(shí)候如果你沒(méi)有檢查數(shù)據(jù)類(lèi),很可能就帶著錯(cuò)誤的數(shù)據(jù)進(jìn)入下一行運(yùn)算。類(lèi)似的情況在 Excel 里很常見(jiàn),例如 Excel 會(huì)自動(dòng)把一些數(shù)據(jù)變成日期格式,你不在意的話最后輸出就錯(cuò)了。當(dāng)然,數(shù)據(jù)分析軟件比 Excel 好的地方是你隨時(shí)都可以撤銷(xiāo)命令。
小心處理“無(wú)數(shù)據(jù)”(NA)。一定要搞清楚你的軟件如何對(duì)待“無(wú)數(shù)據(jù)”(NA)——有的軟件在運(yùn)算、合并的時(shí)候會(huì)自動(dòng)忽略 NA 且不給你提醒,這個(gè)做法在很多科學(xué)研究里是錯(cuò)的,所以你得手動(dòng)檢查數(shù)據(jù)集里是否有 NA,并告訴軟件應(yīng)該怎樣處理它們。另外,NA 在很多軟件里都是邏輯(logical)而不是字符(character)類(lèi)數(shù)據(jù)。如果你要鍵入或者判斷 NA,一定要用邏輯 NA 而不是字符 NA。
合并數(shù)據(jù)集前,一定要了解清楚不同種“合并”(merge)命令的區(qū)別,且要想一個(gè)方法來(lái)檢查合并是否成功。合并是非常容易出錯(cuò)的步驟,即使你用的命令是正確的,也會(huì)因?yàn)閿?shù)據(jù)本身的小問(wèn)題而失敗。舉個(gè)簡(jiǎn)單的例子,一個(gè)沒(méi)有標(biāo)題行的數(shù)據(jù)集,它的第一行在某些軟件中會(huì)默認(rèn)被當(dāng)做標(biāo)題行,在合并的時(shí)候會(huì)被忽略,這樣你的結(jié)果可能就少一行。再或者你用來(lái)合并的那一列,原始數(shù)據(jù)有拼寫(xiě)錯(cuò)誤或不同寫(xiě)法(英式美式拼寫(xiě)、繁體簡(jiǎn)體),合并后的結(jié)果就不會(huì)是你想要的??傊?,在合并前一定要想一個(gè)方法來(lái)檢測(cè)合并成功與否,例如檢查行數(shù)列數(shù),看看數(shù)據(jù)集里哪里有 NA 等等。數(shù)據(jù)分析軟件輸出了結(jié)果,并不代表你的合并就是正確的。
不要只看了數(shù)據(jù)集前幾行,就以為每一行的數(shù)據(jù)都長(zhǎng)這樣。舉個(gè)例子,如果數(shù)據(jù)的第一列是地名(“某某區(qū)”),你運(yùn)行了“查看數(shù)據(jù)前幾行”這個(gè)命令,發(fā)現(xiàn)這幾行第一列的長(zhǎng)度都是 3(“朝陽(yáng)區(qū)”、“靜安區(qū)”),就以為每一行第一列的長(zhǎng)度都是 3。接下來(lái),你用到一些關(guān)于變量長(zhǎng)度的命令——如果第一列有的長(zhǎng)度不是 3,輸出結(jié)果就會(huì)有錯(cuò)。正確方法應(yīng)該是先檢查待處理的數(shù)據(jù)是否都遵循你假設(shè)的規(guī)則,不管是通過(guò)運(yùn)行命令檢驗(yàn)(“第一列有哪些值的長(zhǎng)度不等于 3”)還是通過(guò)從常識(shí)思考(“有沒(méi)有超過(guò)三個(gè)字的地名”)。
處理后
查找異常數(shù)據(jù)!收工前,一定要通過(guò)做圖或者寫(xiě)命令來(lái)檢查異常數(shù)據(jù),例如比中位值高出很多的、比前一年的值低很多的。發(fā)現(xiàn)異常數(shù)據(jù)后首先要看原始數(shù)據(jù),通常是你在合并等復(fù)雜步驟中出了錯(cuò)。但我也遇到過(guò)原始數(shù)據(jù)出錯(cuò)的情況,所以即使你的異常數(shù)據(jù)符合原始數(shù)據(jù),也一定要再想一想——如果異常數(shù)據(jù)違背常識(shí)(例如人口一年內(nèi)翻倍、收入是其他地區(qū)幾分之一),那要求證數(shù)據(jù)來(lái)源。
來(lái)源:36大數(shù)據(jù)
刷新相關(guān)文章
我要評(píng)論
活動(dòng)推薦more >
- 2018 上海國(guó)際大數(shù)據(jù)產(chǎn)業(yè)高2018-12-03
- 2018上海國(guó)際計(jì)算機(jī)網(wǎng)絡(luò)及信2018-12-03
- 中國(guó)國(guó)際信息通信展覽會(huì)將于2018-09-26
- 第五屆FEA消費(fèi)金融國(guó)際峰會(huì)62018-06-21
- 第五屆FEA消費(fèi)金融國(guó)際峰會(huì)2018-06-21
- “無(wú)界區(qū)塊鏈技術(shù)峰會(huì)2018”2018-06-14
不容錯(cuò)過(guò)的資訊
-
1#后疫情時(shí)代的新思考#疫情之下,關(guān)于醫(yī)
-
2數(shù)據(jù)軟件產(chǎn)品和服務(wù)商DataHunter完成B輪
-
3眾盟科技獲ADMIC 2020金粲獎(jiǎng)“年度汽車(chē)
-
4數(shù)據(jù)智能 無(wú)限未來(lái)—2020世界人工智能大
-
5#2020非凡大賞:數(shù)字化風(fēng)起云涌時(shí),共尋
-
6#榜樣的力量#天璣數(shù)據(jù)大腦疫情風(fēng)險(xiǎn)感知
-
7#榜樣的力量#內(nèi)蒙古自治區(qū)互聯(lián)網(wǎng)醫(yī)療服
-
8#榜樣的力量#實(shí)時(shí)新型肺炎疫情數(shù)據(jù)小程
-
9#榜樣的力量#華佗疫情防控平臺(tái)丨數(shù)據(jù)猿
-
10#后疫情時(shí)代的新思考#構(gòu)建工業(yè)互聯(lián)網(wǎng)新