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