何不用python_EXCEL数据太“脏”无从下手?何须用python,ETL一分钟搞定
我們?nèi)粘T谔幚頂?shù)據(jù)的過程中,總是會遇到各種千奇百怪的數(shù)據(jù)源,不是這里有重復(fù)值,就是那里的數(shù)據(jù)有缺失,這些“臟數(shù)據(jù)”不得不花費我們大量的時間去進行清理,讓人十分苦惱。造成這些“臟數(shù)據(jù)”的原因有兩個,一是系統(tǒng)默認的數(shù)據(jù)字段不規(guī)范,在導(dǎo)出時經(jīng)常帶有一些不標準的字符,二是人為錄入錯誤,因為在數(shù)據(jù)的生成過程中,往往會受到人為的干預(yù),比如重復(fù)錄入、數(shù)據(jù)類型不一致等等。這些“臟”數(shù)據(jù)不僅沒有價值,還會“污染”其他的數(shù)據(jù),增加數(shù)據(jù)清理的時間,影響數(shù)據(jù)分析的效率。
我們在EXCEL中經(jīng)常遇到的“臟數(shù)據(jù)”主要有以下幾種:
1、缺失數(shù)據(jù)
主要指字段的信息出現(xiàn)了缺失,例如字段里應(yīng)該錄入某些信息的,但是卻出現(xiàn)了空白,導(dǎo)致數(shù)據(jù)缺失的原因有很多種,例如系統(tǒng)問題、人為問題等,這就需要對數(shù)據(jù)進行補錄或者填充其他的信息。
2、重復(fù)數(shù)據(jù)
數(shù)據(jù)出現(xiàn)重復(fù)值是經(jīng)常遇到的問題,主要是重復(fù)錄入導(dǎo)致的,一般處理起來比較簡單,只需要在EXCEL中去除重復(fù)數(shù)據(jù)即可。
3、錯誤數(shù)據(jù)
錯誤數(shù)據(jù)一般是因為數(shù)據(jù)沒有按照規(guī)定程序進行記錄而出現(xiàn)的。例如異常值,或者是數(shù)據(jù)不統(tǒng)一,關(guān)于廣州的記錄有廣州、guangzhou。
4、不可用數(shù)據(jù)
有些數(shù)據(jù)雖然正確但卻無法使用。例如字段應(yīng)錄入城市名稱的,但是出現(xiàn)了廣州天河區(qū)這樣不規(guī)范的字段,則需要用公式對城市的名稱進行提取。
對于以上所描述的各種問題,通常我們可以利用EXCEL自身的功能或公式進行清理,但是效率非常低,很多步驟都要靠手工進行操作,而且很多需求沒辦法實現(xiàn)。VBA是其中的一種解決辦法,通過編寫宏代碼,可以對不規(guī)范的EXCEL表格進行自動化的清洗,但是難度較大,一般人不容易入門,而且寫代碼的過程需花費大量的時間,python就更不用說了,遠水救不了近火。目前最好的解決辦法是用微軟的Power Query組件,這個組件可以實現(xiàn)很多數(shù)據(jù)清洗的需求,例如逆透視、提取、分組等操作可以輕松完成。
但是還有比Power Query更加給力的清洗工具,那就是ETL了。ETL是一種對數(shù)據(jù)進行抽取(extract)、轉(zhuǎn)換(transform)、加載(load)的工具,經(jīng)常用在數(shù)據(jù)倉庫上,數(shù)據(jù)清洗的功能非常強大,通過簡單的鼠標拖拽,便可以快速完成對各種臟數(shù)據(jù)的清洗工作。ETL在日常工作中運用的并不是特別廣泛,除了中大型企業(yè)或者IT人員會用到之外,一般人很少會接觸到。市場上ETL的工具也有很多,類似datastage、informatica、kettle等,但不是收費太高就是性能太弱,在這里推薦一款平民化的ETL工具:智分析。下面以智分析為模型對ETL清洗數(shù)據(jù)的功能進行介紹。
1、數(shù)據(jù)源連接
在數(shù)據(jù)源的連接上,智分析支持文本、Kafka、關(guān)系等五種數(shù)據(jù)源,既可以直接連接本地的EXCEL文件,也可以支持mysql、阿里云等關(guān)系型數(shù)據(jù)庫的處理,只要把數(shù)據(jù)源的組件拉拽到展示區(qū)里,點擊數(shù)據(jù)連接,便可以連接到您的個人數(shù)據(jù)源。
2、數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理是整個ETL處理過程的核心,EXCEL常見的清洗功能點在這里基本都能找到,例如提供了空值處理、合并、分列等常規(guī)功能,還提供了列轉(zhuǎn)行、過濾、JOIN等高階功能,性能非常強悍。操作方法也非常簡單,只要把這些組件一一拉拽到展示區(qū)里,并與數(shù)據(jù)源連接起來,點擊執(zhí)行,便可以實現(xiàn)數(shù)據(jù)清洗的效果。
如果以上的組件還不能滿足數(shù)據(jù)清洗的需求時,有編程基礎(chǔ)的同學(xué)可以再利用腳本模塊繼續(xù)對數(shù)據(jù)源進行加工,這里提供了SQL、PYTHON兩種腳本模塊,可以通過編程語言對數(shù)據(jù)源進行其他的清洗工作。
3、數(shù)據(jù)源保存
完成了數(shù)據(jù)的預(yù)處理后,便可以選擇數(shù)據(jù)源的保存方式,智分析提供了5中保存方式:關(guān)系目標表(覆蓋)、關(guān)系目標表(追加)、關(guān)系目標表(插入或更新)、導(dǎo)出數(shù)據(jù)到HDFS、輸出到數(shù)據(jù)集。輸出后的數(shù)據(jù)源可以覆蓋原先的數(shù)據(jù)源,也可以重新建立新表進行保存,保存方式非常靈活和方便。
4、效果驗證
為了驗證ETL的實際功能如何,我從世界銀行下載了一份世界各國的GDP數(shù)據(jù),并把數(shù)據(jù)源導(dǎo)進了智分析的ETL處理系統(tǒng),經(jīng)過幾分鐘的清洗和加工,這份看起來非常亂的數(shù)據(jù)被我完美地實現(xiàn)清洗,輸出的數(shù)據(jù)源非常整齊和統(tǒng)一。
▲未加工數(shù)據(jù)
▲經(jīng)過ETL處理后數(shù)據(jù)
從上面的模型中可以看出,ETL在對數(shù)據(jù)清洗的過程中基本是零代碼的,只需通過簡單的鼠標拉拽便可以快速實現(xiàn)數(shù)據(jù)清洗的效果,這對于大部分的職場人士來說,ETL的功能是非常實用和友好的,不用學(xué)習任何代碼就可以做到編程語言可以做到的事情,簡直是太強大了。如果你經(jīng)常面對這些“臟數(shù)據(jù)”而無從下手,那就趕緊去掌握一門ETL工具吧。
總結(jié)
以上是生活随笔為你收集整理的何不用python_EXCEL数据太“脏”无从下手?何须用python,ETL一分钟搞定的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 东风解冻雨水来下一句是什么啊?
- 下一篇: mysql query browswer