《數(shù)據(jù)清洗系列》 - 01 認(rèn)識數(shù)據(jù)清洗

這大半年基本在做數(shù)據(jù)方面的工作粒督,從Elasticsearch到Python爬蟲情龄,近期又多了一項(xiàng)數(shù)據(jù)清洗的工作荠商,本篇主要匯總數(shù)據(jù)清洗的一些原理和相關(guān)技巧,以備后用扣墩。

數(shù)據(jù)清洗是什么

數(shù)據(jù)清洗是通過缺失值處理哲银,噪聲數(shù)據(jù)光滑,識別刪除離散值等方法來提升數(shù)據(jù)質(zhì)量的過程呻惕。

數(shù)據(jù)清洗(Data cleaning)是對數(shù)據(jù)進(jìn)行重新審查和校驗(yàn)的過程荆责,目的在于刪除重復(fù)信息、糾正存在的錯誤蟆融,并提供數(shù)據(jù)一致性草巡。

數(shù)據(jù)清洗,是整個數(shù)據(jù)分析過程中不可缺少的一個環(huán)節(jié)型酥,其結(jié)果質(zhì)量直接關(guān)系到模型效果和最終結(jié)論山憨。在實(shí)際操作中,數(shù)據(jù)清洗通常會占據(jù)分析過程的50%—80%的時間弥喉。

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

預(yù)處理階段

預(yù)處理階段主要做兩件事情:

  • 將數(shù)據(jù)導(dǎo)入處理工具

通常來說郁竟,建議使用數(shù)據(jù)庫,單機(jī)跑數(shù)搭建MySQL環(huán)境即可由境。如果數(shù)據(jù)量大(千萬級以上)棚亩,可使用文本文件存儲+Python操作的方式。

  • 看數(shù)據(jù)

這里包含兩個部分:一是看元數(shù)據(jù)虏杰,包括字段解釋讥蟆、數(shù)據(jù)來源、代碼表等等一切描述數(shù)據(jù)的信息纺阔;二是抽取一部分?jǐn)?shù)據(jù)瘸彤,人工審查,對數(shù)據(jù)本身有一個直觀的了解笛钝,并且初步發(fā)現(xiàn)一些問題质况,為之后的處理做準(zhǔn)備。

第一步:缺失值清洗

缺失值是最常見的數(shù)據(jù)問題玻靡,處理缺失值也有很多方法结榄,我建議按照以下四個步驟進(jìn)行:

1、確定缺失值范圍:對每個字段都計(jì)算其缺失值比例囤捻,然后按照缺失比例和字段重要性臼朗,分別制定策略,可用下圖表示:

2、去除不需要的字段:這一步很簡單依溯,直接刪掉即可……但強(qiáng)烈建議清洗每做一步都備份一下老厌,或者在小規(guī)模數(shù)據(jù)上試驗(yàn)成功再處理全量數(shù)據(jù)瘟则,不然刪錯了會追悔莫及黎炉。

3、填充缺失內(nèi)容:某些缺失值可以進(jìn)行填充醋拧,方法有以下三種:

  • 以業(yè)務(wù)知識或經(jīng)驗(yàn)推測填充缺失值
  • 以同一指標(biāo)的計(jì)算結(jié)果(均值慷嗜、中位數(shù)、眾數(shù)等)填充缺失值
  • 以不同指標(biāo)的計(jì)算結(jié)果填充缺失值

4丹壕、重新取數(shù):如果某些指標(biāo)非常重要又缺失率高庆械,那就需要和取數(shù)人員或業(yè)務(wù)人員了解,是否有其他渠道可以取到相關(guān)數(shù)據(jù)菌赖。

以上缭乘,簡單的梳理了缺失值清洗的步驟,但其中有一些內(nèi)容遠(yuǎn)比我說的復(fù)雜琉用,比如填充缺失值堕绩。很多講統(tǒng)計(jì)方法或統(tǒng)計(jì)工具的書籍會提到相關(guān)方法,有興趣的各位可以自行深入了解邑时。

第二步:格式內(nèi)容清洗

如果數(shù)據(jù)是由系統(tǒng)日志而來奴紧,那么通常在格式和內(nèi)容方面,會與元數(shù)據(jù)的描述一致晶丘。而如果數(shù)據(jù)是由人工收集或用戶填寫而來黍氮,則有很大可能性在格式和內(nèi)容上存在一些問題,簡單來說浅浮,格式內(nèi)容問題有以下幾類:

1沫浆、時間、日期滚秩、數(shù)值专执、全半角等顯示格式不一致

這種問題通常與輸入端有關(guān),在整合多來源數(shù)據(jù)時也有可能遇到叔遂,將其處理成一致的某種格式即可他炊。

2、內(nèi)容中有不該存在的字符

某些內(nèi)容可能只包括一部分字符已艰,比如身份證號是數(shù)字+字母痊末,中國人姓名是漢字(趙C這種情況還是少數(shù))。最典型的就是頭哩掺、尾凿叠、中間的空格,也可能出現(xiàn)姓名中存在數(shù)字符號、身份證號中出現(xiàn)漢字等問題盒件。這種情況下蹬碧,需要以半自動校驗(yàn)半人工方式來找出可能存在的問題,并去除不需要的字符炒刁。

3恩沽、內(nèi)容與該字段應(yīng)有內(nèi)容不符

姓名寫了性別,身份證號寫了手機(jī)號等等翔始,均屬這種問題罗心。 但該問題特殊性在于:并不能簡單的以刪除來處理,因?yàn)槌梢蛴锌赡苁侨斯ぬ顚戝e誤城瞎,也有可能是前端沒有校驗(yàn)渤闷,還有可能是導(dǎo)入數(shù)據(jù)時部分或全部存在列沒有對齊的問題,因此要詳細(xì)識別問題類型脖镀。

格式內(nèi)容問題是比較細(xì)節(jié)的問題飒箭,但很多分析失誤都是栽在這個坑上,比如跨表關(guān)聯(lián)或VLOOKUP失斞鸦摇(多個空格導(dǎo)致工具認(rèn)為“陳丹奕”和“陳 丹奕”不是一個人)弦蹂、統(tǒng)計(jì)值不全(數(shù)字里摻個字母當(dāng)然求和時結(jié)果有問題)、模型輸出失敗等

第三步:邏輯錯誤清洗

這部分的工作是去掉一些使用簡單邏輯推理就可以直接發(fā)現(xiàn)問題的數(shù)據(jù)卷员,防止分析結(jié)果走偏盈匾。主要包含以下幾個步驟:

1、去重

有的分析師喜歡把去重放在第一步毕骡,但我強(qiáng)烈建議把去重放在格式內(nèi)容清洗之后削饵,原因已經(jīng)說過了(多個空格導(dǎo)致工具認(rèn)為“陳丹奕”和“陳 丹奕”不是一個人,去重失斘次住)窿撬。

而且,并不是所有的重復(fù)都能這么簡單的去掉叙凡,比如“康師傅”和“康帥傅”劈伴。當(dāng)然,如果數(shù)據(jù)不是人工錄入的握爷,那么簡單去重即可跛璧。

2、去除不合理值

一句話就能說清楚:有人填表時候瞎填新啼,年齡200歲追城,年收入100000萬,這種的就要么刪掉燥撞,要么按缺失值處理座柱。這種值如何發(fā)現(xiàn)迷帜?提示:可用但不限于箱形圖(Box-plot)

3、修正矛盾內(nèi)容

有些字段是可以互相驗(yàn)證的色洞,舉例:身份證號是1101031980XXXXXXXX戏锹,然后年齡填18歲。在這種時候火诸,需要根據(jù)字段的數(shù)據(jù)來源锦针,來判定哪個字段提供的信息更為可靠,去除或重構(gòu)不可靠的字段惭蹂。

邏輯錯誤除了以上列舉的情況伞插,還有很多未列舉的情況,在實(shí)際操作中要酌情處理盾碗。另外,這一步驟在之后的數(shù)據(jù)分析建模過程中有可能重復(fù)舀瓢,因?yàn)榧词箚栴}很簡單廷雅,也并非所有問題都能夠一次找出,我們能做的是使用工具和方法京髓,盡量減少問題出現(xiàn)的可能性航缀,使分析過程更為高效。

第四步:非需求數(shù)據(jù)清洗

這一步說起來非常簡單:把不要的字段刪了堰怨。但實(shí)際操作起來芥玉,有很多問題,例如:

  • 把看上去不需要备图,但實(shí)際上對業(yè)務(wù)很重要的字段刪了灿巧;
  • 某個字段覺得有用,但又沒想好怎么用揽涮,不知道是否該刪抠藕;
  • 一時看走眼,刪錯字段了

如果數(shù)據(jù)量沒有大到不刪字段就沒辦法處理的程度蒋困,那么能不刪的字段盡量不刪盾似。第三種情況,請勤備份數(shù)據(jù)雪标。

第五步:關(guān)聯(lián)性驗(yàn)證

如果你的數(shù)據(jù)有多個來源零院,那么有必要進(jìn)行關(guān)聯(lián)性驗(yàn)證。例如村刨,你有汽車的線下購買信息告抄,也有電話客服問卷信息,兩者通過姓名和手機(jī)號關(guān)聯(lián)烹困,那么要看一下玄妈,同一個人線下登記的車輛信息和線上問卷問出來的車輛信息是不是同一輛,如果不是,那么需要調(diào)整或去除數(shù)據(jù)拟蜻。

多個來源的數(shù)據(jù)整合是非常復(fù)雜的工作绎签,一定要注意數(shù)據(jù)之間的關(guān)聯(lián)性,盡量在分析過程中不要出現(xiàn)數(shù)據(jù)之間互相矛盾酝锅,而你卻毫無察覺的情況诡必。

參考:

https://blog.csdn.net/wyqwilliam/article/details/84801095

https://blog.csdn.net/Orange_Spotty_Cat/article/details/81335640

http://www.woshipm.com/data-analysis/1808313.html

http://www.sohu.com/a/278190209_753650

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搔扁,隨后出現(xiàn)的幾起案子爸舒,更是在濱河造成了極大的恐慌,老刑警劉巖稿蹲,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扭勉,死亡現(xiàn)場離奇詭異,居然都是意外死亡苛聘,警方通過查閱死者的電腦和手機(jī)涂炎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來设哗,“玉大人唱捣,你說我怎么就攤上這事⊥遥” “怎么了震缭?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長战虏。 經(jīng)常有香客問我拣宰,道長,這世上最難降的妖魔是什么活烙? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任徐裸,我火速辦了婚禮,結(jié)果婚禮上啸盏,老公的妹妹穿的比我還像新娘重贺。我一直安慰自己,他們只是感情好回懦,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布气笙。 她就那樣靜靜地躺著,像睡著了一般怯晕。 火紅的嫁衣襯著肌膚如雪潜圃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天舟茶,我揣著相機(jī)與錄音谭期,去河邊找鬼堵第。 笑死,一個胖子當(dāng)著我的面吹牛隧出,可吹牛的內(nèi)容都是我干的踏志。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼胀瞪,長吁一口氣:“原來是場噩夢啊……” “哼针余!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凄诞,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤圆雁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后帆谍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伪朽,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年既忆,在試婚紗的時候發(fā)現(xiàn)自己被綠了驱负。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡患雇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宇挫,到底是詐尸還是另有隱情苛吱,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布器瘪,位于F島的核電站翠储,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏橡疼。R本人自食惡果不足惜援所,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欣除。 院中可真熱鬧住拭,春花似錦、人聲如沸历帚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挽牢。三九已至谱煤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間禽拔,已是汗流浹背刘离。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工室叉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人硫惕。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓茧痕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疲憋。 傳聞我的和親對象是個殘疾皇子凿渊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348