租賃大數(shù)據(jù)看板建設(shè)過(guò)程中數(shù)據(jù)清洗及程度思考
編輯導(dǎo)讀:數(shù)據(jù)清洗是指發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識(shí)別的錯(cuò)誤的最后一道程序,包括檢查數(shù)據(jù)一致性,處理無(wú)效值和缺失值等。本文作者從自身工作經(jīng)歷出發(fā),以租賃大數(shù)據(jù)看板建設(shè)過(guò)程中的數(shù)據(jù)清洗為例,進(jìn)行分析,與你分享。
最近在接觸學(xué)習(xí)BI(Business Intelligence,商業(yè)智能)相關(guān)的內(nèi)容,抽取了部分租賃的業(yè)務(wù)數(shù)據(jù)導(dǎo)入BI軟件進(jìn)行分析,由于數(shù)據(jù)的年份跨度較大,且都來(lái)源于線(xiàn)下錄入,早期字段約束較少、業(yè)務(wù)審核相關(guān)機(jī)制不健全,導(dǎo)致部分字段統(tǒng)計(jì)經(jīng)常報(bào)錯(cuò),或者與理想情況差距過(guò)大。遇到這種情況時(shí)就要引進(jìn)“數(shù)據(jù)清洗”流程,將不對(duì)勁的數(shù)據(jù)進(jìn)行排除。
數(shù)據(jù)清洗是指發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識(shí)別的錯(cuò)誤的最后一道程序,包括檢查數(shù)據(jù)一致性,處理無(wú)效值和缺失值等。與問(wèn)卷審核不同,錄入后的數(shù)據(jù)清理一般是由計(jì)算機(jī)而不是人工完成。
——某度詞條
但是數(shù)據(jù)清洗過(guò)程中,如果僅僅是做一些常規(guī)判斷,例如租賃訂單中的用戶(hù)支付金額,理應(yīng)大于0元,房子的面積不能為0平方米等等,經(jīng)過(guò)簡(jiǎn)單處理之后,能解決很多異常問(wèn)題,但還是會(huì)有數(shù)據(jù)異常的情況,例如只約束了訂單金額不能為0元,萬(wàn)萬(wàn)沒(méi)想到確有負(fù)數(shù)金額的訂單以及金額為空的訂單,最終導(dǎo)致計(jì)算出來(lái)的平均數(shù)據(jù)、各區(qū)域業(yè)績(jī)數(shù)據(jù)排行等產(chǎn)生異常。以下將以數(shù)據(jù)清洗的普遍流程來(lái)討論清洗“程度”如何衡量。
一、數(shù)據(jù)有效標(biāo)志
有效標(biāo)志是指一條數(shù)據(jù)為有效數(shù)據(jù)的關(guān)鍵標(biāo)志,一般即為該數(shù)據(jù)的狀態(tài)字段,如支付訂單的支付狀態(tài)、用戶(hù)信息的注冊(cè)狀態(tài)、商品信息的是否刪除等,對(duì)字段對(duì)數(shù)據(jù)是否可采納起著決定性作用。
有條件的話(huà)最好對(duì)原始數(shù)據(jù)做一次統(tǒng)計(jì)(SQL里的group by、Excel里的篩選功能等),看看一共存在幾種狀態(tài),不同狀態(tài)的數(shù)據(jù)量有多少。然后對(duì)照業(yè)務(wù)流程,對(duì)數(shù)據(jù)有效標(biāo)志進(jìn)行篩選,可以有效減少不必要的數(shù)據(jù)及其中潛在的問(wèn)題,提高后續(xù)數(shù)據(jù)分析的速度和結(jié)果質(zhì)量。
如果被過(guò)濾掉的異常狀態(tài)的數(shù)據(jù)量超過(guò)訂單的1%,則要與負(fù)責(zé)技術(shù)開(kāi)發(fā)或者數(shù)據(jù)分析的同事一起,研究數(shù)據(jù)源記錄的時(shí)候是不是就有問(wèn)題,甚至是存在不知道的需求或潛在bug等。
例如我們的租賃訂單,有多種租賃狀態(tài):
如果要分析過(guò)往已完成的租賃交易情況,那就只需要篩選其中狀態(tài)碼為03或狀態(tài)值為“完成”的數(shù)據(jù),其他狀態(tài)的數(shù)據(jù)一概不需要理。
但如果要分析過(guò)往所有發(fā)生過(guò)的交易情況,則需要篩選狀態(tài)碼為00-05狀態(tài)的訂單,其他狀態(tài)為Null、空值、-1、或其他無(wú)法理解,及N年沒(méi)用遺留的業(yè)務(wù)已經(jīng)廢棄不再使用的值的數(shù)據(jù),可以考慮全部過(guò)濾掉不需要。
不同分析場(chǎng)景下,對(duì)于數(shù)據(jù)的需求是不一樣的,不要一味的最求數(shù)據(jù)的數(shù)量,如果想著就算暫時(shí)用不上也先放著,這樣很可能會(huì)加重后期數(shù)據(jù)分析中篩選的工作量,占用電腦資源卡頓、甚至死機(jī)白搞了等等。
其他:生產(chǎn)環(huán)境上或多或少的存在用于測(cè)試的“生產(chǎn)驗(yàn)證”數(shù)據(jù),其中可能包含一些極端場(chǎng)景數(shù)值,但是此類(lèi)數(shù)據(jù)未實(shí)際發(fā)生過(guò),所以一般要在數(shù)據(jù)清洗過(guò)程中去掉。
二、數(shù)據(jù)唯一性標(biāo)志
就像訂單要有訂單號(hào),用戶(hù)要有uuid,商品有skuid一樣,系統(tǒng)中的數(shù)據(jù)一般都需要有唯一的ID用于進(jìn)行數(shù)據(jù)的檢索和區(qū)分。
但是由于bug或者子訂單邏輯、不同的狀態(tài)的影響,可能會(huì)出現(xiàn)唯一性標(biāo)志重復(fù)情況,此時(shí)可能會(huì)對(duì)數(shù)據(jù)分析造成一定的影響。
例如某系統(tǒng)中支持用戶(hù)自定義域名復(fù)用的邏輯,如果一個(gè)用戶(hù)注銷(xiāo)了賬號(hào),那么其他人就可以使用此域名,如果要分析系統(tǒng)一共有多少個(gè)子域名時(shí),如果單純統(tǒng)計(jì)子域名記錄的數(shù)量,就會(huì)有問(wèn)題,此時(shí)應(yīng)該先進(jìn)行子域名去重,再統(tǒng)計(jì)數(shù)量才對(duì)。訂單位數(shù)設(shè)計(jì)較短、沒(méi)有設(shè)置隨機(jī)值時(shí),也很可能出現(xiàn)訂單號(hào)重復(fù)的問(wèn)題,還有員工工號(hào)重復(fù)等問(wèn)題。
但既然是“唯一”的標(biāo)志,那就應(yīng)該挑出重復(fù)項(xiàng),并按業(yè)務(wù)需求看是否需要修復(fù)原始數(shù)據(jù),或決定重復(fù)項(xiàng)的取舍方案:
- 只保存最新產(chǎn)生的一條
- 最保存最早產(chǎn)生的一條
- 保存其他字段完善度更高的一條等等
另外由于bug、生產(chǎn)環(huán)境測(cè)試、或其他不知名的問(wèn)題,還可能造成訂單ID為Null、空值、-1,或不規(guī)范的訂單號(hào),這些一般都伴隨有其他字段數(shù)據(jù)的殘缺不全等問(wèn)題。
我所分析的租賃訂單中,存在有訂單ID為空的記錄,但是極為少數(shù),考慮到這些數(shù)據(jù)年代久遠(yuǎn)已經(jīng)不可考證了,所以直接篩選保留訂單ID不為空的即可。
三、字段缺失
字段缺失是數(shù)據(jù)清洗中最常見(jiàn)的問(wèn)題之一,造成此問(wèn)題的原因也多種多樣,甚至可能是導(dǎo)出數(shù)據(jù)時(shí)分隔符設(shè)置的不對(duì),導(dǎo)致把數(shù)據(jù)csv、xls等導(dǎo)入分析系統(tǒng)或Excel后造成的錯(cuò)誤分隔導(dǎo)致的。
1. 檢查缺失字段的比例
如果某個(gè)字段數(shù)據(jù)缺失嚴(yán)重,則要考慮是否存在程序bug,或者導(dǎo)入導(dǎo)出的流程是否有問(wèn)題。
2. 對(duì)缺失字段的數(shù)據(jù)進(jìn)行處理
刪除數(shù)據(jù):
一旦發(fā)現(xiàn)數(shù)據(jù)中存在一個(gè)或多個(gè)關(guān)鍵數(shù)據(jù)缺失的,就把這條數(shù)據(jù)刪了不采用。這種一刀流的做法比較適合數(shù)據(jù)字段比較少,且缺的都是關(guān)鍵數(shù)據(jù)的場(chǎng)景,例如訂單中金額為空,用戶(hù)的賬號(hào)為空等情況。
部分采納:
該字段只用在部分分析結(jié)果中時(shí),例如做租賃租金的行政區(qū)縣分布時(shí),一條數(shù)據(jù)包含了租金、房子所在的行政區(qū),但是承租人的性別為空,此時(shí)字段缺失并不影響分析結(jié)果,此場(chǎng)景可以考慮保留此數(shù)據(jù)。
但是要做不同性別的人租房租金偏好分析時(shí),此數(shù)性別為空,則應(yīng)不予采納。
數(shù)據(jù)填充:
例如公司要做宣傳物料,其中有要求租賃市場(chǎng)成交面積統(tǒng)計(jì),但是系統(tǒng)中成交的租賃記錄里,有超過(guò)5%記錄房屋面積都為空沒(méi)登記(與早期為非必填有關(guān)),此時(shí)就需要進(jìn)行數(shù)據(jù)填充。數(shù)據(jù)填充有幾種方法論可以參考:
- 根據(jù)有數(shù)據(jù)的記錄平均值填充。優(yōu)點(diǎn):簡(jiǎn)單粗暴快速;缺點(diǎn):可靠性不高
- 建立對(duì)應(yīng)的數(shù)據(jù)模型,預(yù)測(cè)缺失字段的數(shù)值并填充。例如根據(jù)沒(méi)問(wèn)題的數(shù)據(jù)計(jì)算對(duì)應(yīng)缺失了面積的記錄所在區(qū)域,類(lèi)似戶(hù)型、租金水平的房屋面積,然后填充到缺失字段中。優(yōu)點(diǎn):精準(zhǔn)度高,有據(jù)可依;缺點(diǎn):難度大速度慢效率低
- 進(jìn)階版:通過(guò)平均值/模型數(shù)據(jù)的方法,增加測(cè)算誤差值,然后隨機(jī)生成平均值±誤差值中間的數(shù)據(jù)進(jìn)行缺失字段填充。
- 人工經(jīng)驗(yàn)填充。此方案只針對(duì)少量數(shù)據(jù)或缺失數(shù)據(jù)特別重要時(shí),可以根據(jù)業(yè)務(wù)人員經(jīng)驗(yàn)填充,數(shù)據(jù)量大時(shí)不合適。
無(wú)論是根據(jù)平均值、模型數(shù)據(jù)、人工經(jīng)驗(yàn)進(jìn)行缺失字段填充,講究的都是有據(jù)可依,不是瞎填充數(shù)據(jù)。如果缺失的字段隨機(jī)性或不確定性比較高,不適合常規(guī)的數(shù)據(jù)填充的話(huà),如果沒(méi)有更好的方法論可以采用,建議刪除/不采納此條數(shù)據(jù)。
不同的業(yè)務(wù)場(chǎng)景和分析需求,對(duì)于缺失數(shù)據(jù)的處理是不一樣的:
追求更漂亮的數(shù)據(jù)和業(yè)績(jī):
理應(yīng)最大化的保留數(shù)據(jù),通過(guò)合理的方法進(jìn)行數(shù)據(jù)補(bǔ)全。
業(yè)務(wù)發(fā)展:
可以采用部分采納或者刪除字段缺失數(shù)據(jù)的方式,最好同時(shí)配合每個(gè)字段的缺失率情況,對(duì)于業(yè)務(wù)價(jià)值高的數(shù)據(jù),數(shù)據(jù)本身的完善程度和數(shù)據(jù)分析結(jié)果一樣重要,需要從源頭上解決此問(wèn)題。
只是看看:
如果只是想客觀看看市場(chǎng)行情,或者該字段并不是太重要的數(shù)據(jù),只是走勢(shì)有參考作用,則可以考慮刪除對(duì)應(yīng)的數(shù)據(jù),以免造成困擾,避免空值導(dǎo)致計(jì)算結(jié)果偏差或報(bào)錯(cuò)。
四、錯(cuò)誤數(shù)據(jù)
錯(cuò)誤數(shù)據(jù)也是一個(gè)常見(jiàn)的問(wèn)題,除了bug導(dǎo)致的錯(cuò)誤數(shù)據(jù)外,主要出自非系統(tǒng)統(tǒng)計(jì)的,人工填寫(xiě)的數(shù)據(jù)上,由于缺乏有效的限制手段、審核手段,導(dǎo)致個(gè)別數(shù)據(jù)可能出現(xiàn)異常離譜的問(wèn)題,從而影響到看板數(shù)據(jù)的正常統(tǒng)計(jì)。
例如租賃記錄中,就有出租面積為20000萬(wàn)平方米,租金才500塊的記錄存在,在全局而言由于正確數(shù)據(jù)足夠多,這筆訂單影響微乎其微,但是如果只看這一個(gè)樓盤(pán)、商圈,那就對(duì)當(dāng)?shù)氐钠骄饨稹?hù)型平均面積等統(tǒng)計(jì)都會(huì)造成重大影響,然后做排行榜的時(shí)候,這個(gè)樓盤(pán)、商圈就會(huì)突出重圍排名特別靠前。
數(shù)據(jù)錯(cuò)誤的前提是,首先知道什么是正確的,錯(cuò)誤是相對(duì)于正確的定義而言的:
1. 符合格式規(guī)范的數(shù)據(jù)
例子:要求填寫(xiě)阿拉伯?dāng)?shù)字
正確:123456
錯(cuò)誤:拾貳萬(wàn)叁仟肆佰伍拾陸、123,456
2. 符合大家共識(shí)的合理范圍
例子:房屋租金,單位為元/月
正確:2000
錯(cuò)誤:-911、999999999
3. 看似不合理,但是可以通過(guò)其他內(nèi)容佐證的數(shù)據(jù)
一個(gè)城市平均租賃的房屋的面積都是幾十平方米,但是突然有條租賃記錄是2000平方米,不過(guò)價(jià)格為10萬(wàn)元/月,業(yè)主、承租人、位置等信息都完整,我們覺(jué)得就有可能是正確的,大概率是租了個(gè)廠房一棟樓。但是幾百平米以上的房子只要幾百塊甚至不要錢(qián),很明顯就不合理了。
4. 可以溯源,事實(shí)如此的數(shù)據(jù)
分析師就是這筆訂單的當(dāng)事人,合同、現(xiàn)場(chǎng)照片甚至視頻監(jiān)控一應(yīng)俱全……
對(duì)于錯(cuò)誤數(shù)據(jù),若無(wú)法有其他有效證據(jù)佐證的數(shù)據(jù),就要結(jié)合分析場(chǎng)景進(jìn)行處理,以免干擾分析結(jié)果。
1)根據(jù)錯(cuò)誤類(lèi)型進(jìn)行劃分
- 格式類(lèi)錯(cuò)誤:例如數(shù)字寫(xiě)成了中文字,數(shù)字中有小寫(xiě)逗號(hào),年月日yyyy.mm.dd寫(xiě)成yyyy年m月d日,或者其他不按規(guī)范填寫(xiě)的內(nèi)容,當(dāng)有大量的數(shù)據(jù)為同樣類(lèi)型的錯(cuò)誤時(shí),可以考慮通過(guò)編寫(xiě)代碼/腳本或者導(dǎo)出使用Excel等工具搜索替換,從而進(jìn)行批量修正。
- 范圍類(lèi)錯(cuò)誤:應(yīng)結(jié)合其他字段數(shù)據(jù),參考缺失字段的填充方式進(jìn)行數(shù)據(jù)重設(shè)。
2)根據(jù)字段意義進(jìn)行劃分
- 核心字段:即做業(yè)績(jī)報(bào)表用的,那就得溯源、考證、根據(jù)實(shí)際情況進(jìn)行修正,無(wú)法修正時(shí),結(jié)合其他字段進(jìn)行數(shù)據(jù)重設(shè),重設(shè)為一個(gè)合理范圍內(nèi)的數(shù)值。
- 非核心字段:先統(tǒng)計(jì)一下錯(cuò)誤數(shù)據(jù)的比例,如果比例不高,如低于1%,可以考慮直接刪除或不采納對(duì)應(yīng)數(shù)據(jù),影響小效率高。如果數(shù)據(jù)占比高,再根據(jù)錯(cuò)誤類(lèi)型決定具體修正方案。
五、清洗結(jié)果分析
通過(guò)對(duì)數(shù)據(jù)進(jìn)行清洗后,需要統(tǒng)計(jì)清洗前后的數(shù)據(jù),看清洗是否達(dá)到了目的。
1)數(shù)據(jù)損失評(píng)估
例如清洗前有關(guān)聯(lián)的原始數(shù)據(jù)有10萬(wàn),清洗后數(shù)據(jù)剩下了9.5萬(wàn)條,損失了5%的數(shù)據(jù),如果數(shù)據(jù)分析的目的是做市場(chǎng)分析而不是財(cái)務(wù)報(bào)表,那么這個(gè)損失程度我們會(huì)認(rèn)為在可接受范圍內(nèi)。
如果清洗完發(fā)現(xiàn)剩下不到5萬(wàn)條數(shù)據(jù),就需要去思考這個(gè)清洗是否有效,是否導(dǎo)致重要數(shù)據(jù)被漏掉了。
2)數(shù)據(jù)失真評(píng)估
對(duì)于結(jié)果要求可靠性高的分析,如財(cái)務(wù)報(bào)表,需要對(duì)填充、調(diào)整的數(shù)據(jù)量進(jìn)行評(píng)估,填充的數(shù)據(jù)加上因?yàn)榉歉袷絾?wèn)題導(dǎo)致的數(shù)據(jù)調(diào)整,一般不能超過(guò)數(shù)據(jù)總量的5%,且最終數(shù)據(jù)的平均值,應(yīng)該與清洗前完全沒(méi)問(wèn)題的數(shù)據(jù)平均值基本一致,相差±1%,這樣填充/調(diào)整操作才可信度高。具體比例因人而異,但是填充、調(diào)整過(guò)的數(shù)據(jù)量太多,可信度會(huì)大幅下降。
數(shù)據(jù)可信度越高,代表數(shù)據(jù)失真度越低,失真度越低的數(shù)據(jù)用于業(yè)務(wù)發(fā)展規(guī)劃、分析時(shí),得出的結(jié)論可靠程度才更高。
六、總結(jié)
通過(guò)對(duì)數(shù)據(jù)清洗過(guò)程的分析,其實(shí)如何進(jìn)行數(shù)據(jù)清洗,這其中的“度”量,與分析目的和場(chǎng)景息息相關(guān),同一份數(shù)據(jù),不同的分析場(chǎng)景,可能需要不同的清洗方案,從而現(xiàn)成不同的數(shù)據(jù)集合。
由于清洗方式不一樣,得出的數(shù)據(jù)結(jié)論也會(huì)有小微的偏差,但是總體方向應(yīng)該是一致的。
#專(zhuān)欄作家#
iCheer,公眾號(hào):云主子,人人都是產(chǎn)品經(jīng)理專(zhuān)欄作家。房地產(chǎn)/物業(yè)行業(yè)產(chǎn)品經(jīng)理,Python編程愛(ài)好者,養(yǎng)貓發(fā)燒友。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
別吹啦,一直在三流公司進(jìn)進(jìn)出出
你這些年干成啥了?。砍舜蹬S幸患履玫某鍪謫??不要臉
辛苦了