租賃大數據看板建設過程中數據清洗及程度思考

3 評論 8688 瀏覽 15 收藏 17 分鐘

編輯導讀:數據清洗是指發現并糾正數據文件中可識別的錯誤的最后一道程序,包括檢查數據一致性,處理無效值和缺失值等。本文作者從自身工作經歷出發,以租賃大數據看板建設過程中的數據清洗為例,進行分析,與你分享。

最近在接觸學習BI(Business Intelligence,商業智能)相關的內容,抽取了部分租賃的業務數據導入BI軟件進行分析,由于數據的年份跨度較大,且都來源于線下錄入,早期字段約束較少、業務審核相關機制不健全,導致部分字段統計經常報錯,或者與理想情況差距過大。遇到這種情況時就要引進“數據清洗”流程,將不對勁的數據進行排除。

數據清洗是指發現并糾正數據文件中可識別的錯誤的最后一道程序,包括檢查數據一致性,處理無效值和缺失值等。與問卷審核不同,錄入后的數據清理一般是由計算機而不是人工完成。

——某度詞條

但是數據清洗過程中,如果僅僅是做一些常規判斷,例如租賃訂單中的用戶支付金額,理應大于0元,房子的面積不能為0平方米等等,經過簡單處理之后,能解決很多異常問題,但還是會有數據異常的情況,例如只約束了訂單金額不能為0元,萬萬沒想到確有負數金額的訂單以及金額為空的訂單,最終導致計算出來的平均數據、各區域業績數據排行等產生異常。以下將以數據清洗的普遍流程來討論清洗“程度”如何衡量。

一、數據有效標志

有效標志是指一條數據為有效數據的關鍵標志,一般即為該數據的狀態字段,如支付訂單的支付狀態、用戶信息的注冊狀態、商品信息的是否刪除等,對字段對數據是否可采納起著決定性作用。

有條件的話最好對原始數據做一次統計(SQL里的group by、Excel里的篩選功能等),看看一共存在幾種狀態,不同狀態的數據量有多少。然后對照業務流程,對數據有效標志進行篩選,可以有效減少不必要的數據及其中潛在的問題,提高后續數據分析的速度和結果質量。

如果被過濾掉的異常狀態的數據量超過訂單的1%,則要與負責技術開發或者數據分析的同事一起,研究數據源記錄的時候是不是就有問題,甚至是存在不知道的需求或潛在bug等。

例如我們的租賃訂單,有多種租賃狀態:

如果要分析過往已完成的租賃交易情況,那就只需要篩選其中狀態碼為03或狀態值為“完成”的數據,其他狀態的數據一概不需要理。

但如果要分析過往所有發生過的交易情況,則需要篩選狀態碼為00-05狀態的訂單,其他狀態為Null、空值、-1、或其他無法理解,及N年沒用遺留的業務已經廢棄不再使用的值的數據,可以考慮全部過濾掉不需要。

不同分析場景下,對于數據的需求是不一樣的,不要一味的最求數據的數量,如果想著就算暫時用不上也先放著,這樣很可能會加重后期數據分析中篩選的工作量,占用電腦資源卡頓、甚至死機白搞了等等。

其他:生產環境上或多或少的存在用于測試的“生產驗證”數據,其中可能包含一些極端場景數值,但是此類數據未實際發生過,所以一般要在數據清洗過程中去掉。

二、數據唯一性標志

就像訂單要有訂單號,用戶要有uuid,商品有skuid一樣,系統中的數據一般都需要有唯一的ID用于進行數據的檢索和區分。

但是由于bug或者子訂單邏輯、不同的狀態的影響,可能會出現唯一性標志重復情況,此時可能會對數據分析造成一定的影響。

例如某系統中支持用戶自定義域名復用的邏輯,如果一個用戶注銷了賬號,那么其他人就可以使用此域名,如果要分析系統一共有多少個子域名時,如果單純統計子域名記錄的數量,就會有問題,此時應該先進行子域名去重,再統計數量才對。訂單位數設計較短、沒有設置隨機值時,也很可能出現訂單號重復的問題,還有員工工號重復等問題。

但既然是“唯一”的標志,那就應該挑出重復項,并按業務需求看是否需要修復原始數據,或決定重復項的取舍方案:

  • 只保存最新產生的一條
  • 最保存最早產生的一條
  • 保存其他字段完善度更高的一條等等

另外由于bug、生產環境測試、或其他不知名的問題,還可能造成訂單ID為Null、空值、-1,或不規范的訂單號,這些一般都伴隨有其他字段數據的殘缺不全等問題。

我所分析的租賃訂單中,存在有訂單ID為空的記錄,但是極為少數,考慮到這些數據年代久遠已經不可考證了,所以直接篩選保留訂單ID不為空的即可。

三、字段缺失

字段缺失是數據清洗中最常見的問題之一,造成此問題的原因也多種多樣,甚至可能是導出數據時分隔符設置的不對,導致把數據csv、xls等導入分析系統或Excel后造成的錯誤分隔導致的。

1. 檢查缺失字段的比例

如果某個字段數據缺失嚴重,則要考慮是否存在程序bug,或者導入導出的流程是否有問題。

2. 對缺失字段的數據進行處理

刪除數據:

一旦發現數據中存在一個或多個關鍵數據缺失的,就把這條數據刪了不采用。這種一刀流的做法比較適合數據字段比較少,且缺的都是關鍵數據的場景,例如訂單中金額為空,用戶的賬號為空等情況。

部分采納:

該字段只用在部分分析結果中時,例如做租賃租金的行政區縣分布時,一條數據包含了租金、房子所在的行政區,但是承租人的性別為空,此時字段缺失并不影響分析結果,此場景可以考慮保留此數據。

但是要做不同性別的人租房租金偏好分析時,此數性別為空,則應不予采納。

數據填充:

例如公司要做宣傳物料,其中有要求租賃市場成交面積統計,但是系統中成交的租賃記錄里,有超過5%記錄房屋面積都為空沒登記(與早期為非必填有關),此時就需要進行數據填充。數據填充有幾種方法論可以參考:

  • 根據有數據的記錄平均值填充。優點:簡單粗暴快速;缺點:可靠性不高
  • 建立對應的數據模型,預測缺失字段的數值并填充。例如根據沒問題的數據計算對應缺失了面積的記錄所在區域,類似戶型、租金水平的房屋面積,然后填充到缺失字段中。優點:精準度高,有據可依;缺點:難度大速度慢效率低
  • 進階版:通過平均值/模型數據的方法,增加測算誤差值,然后隨機生成平均值±誤差值中間的數據進行缺失字段填充。
  • 人工經驗填充。此方案只針對少量數據或缺失數據特別重要時,可以根據業務人員經驗填充,數據量大時不合適。

無論是根據平均值、模型數據、人工經驗進行缺失字段填充,講究的都是有據可依,不是瞎填充數據。如果缺失的字段隨機性或不確定性比較高,不適合常規的數據填充的話,如果沒有更好的方法論可以采用,建議刪除/不采納此條數據。

不同的業務場景和分析需求,對于缺失數據的處理是不一樣的:

追求更漂亮的數據和業績:

理應最大化的保留數據,通過合理的方法進行數據補全。

業務發展:

可以采用部分采納或者刪除字段缺失數據的方式,最好同時配合每個字段的缺失率情況,對于業務價值高的數據,數據本身的完善程度和數據分析結果一樣重要,需要從源頭上解決此問題。

只是看看:

如果只是想客觀看看市場行情,或者該字段并不是太重要的數據,只是走勢有參考作用,則可以考慮刪除對應的數據,以免造成困擾,避免空值導致計算結果偏差或報錯。

四、錯誤數據

錯誤數據也是一個常見的問題,除了bug導致的錯誤數據外,主要出自非系統統計的,人工填寫的數據上,由于缺乏有效的限制手段、審核手段,導致個別數據可能出現異常離譜的問題,從而影響到看板數據的正常統計。

例如租賃記錄中,就有出租面積為20000萬平方米,租金才500塊的記錄存在,在全局而言由于正確數據足夠多,這筆訂單影響微乎其微,但是如果只看這一個樓盤、商圈,那就對當地的平均租金、戶型平均面積等統計都會造成重大影響,然后做排行榜的時候,這個樓盤、商圈就會突出重圍排名特別靠前。

數據錯誤的前提是,首先知道什么是正確的,錯誤是相對于正確的定義而言的:

1. 符合格式規范的數據

例子:要求填寫阿拉伯數字

正確:123456

錯誤:拾貳萬叁仟肆佰伍拾陸、123,456

2. 符合大家共識的合理范圍

例子:房屋租金,單位為元/月

正確:2000

錯誤:-911、999999999

3. 看似不合理,但是可以通過其他內容佐證的數據

一個城市平均租賃的房屋的面積都是幾十平方米,但是突然有條租賃記錄是2000平方米,不過價格為10萬元/月,業主、承租人、位置等信息都完整,我們覺得就有可能是正確的,大概率是租了個廠房一棟樓。但是幾百平米以上的房子只要幾百塊甚至不要錢,很明顯就不合理了。

4. 可以溯源,事實如此的數據

分析師就是這筆訂單的當事人,合同、現場照片甚至視頻監控一應俱全……

對于錯誤數據,若無法有其他有效證據佐證的數據,就要結合分析場景進行處理,以免干擾分析結果。

1)根據錯誤類型進行劃分

  • 格式類錯誤:例如數字寫成了中文字,數字中有小寫逗號,年月日yyyy.mm.dd寫成yyyy年m月d日,或者其他不按規范填寫的內容,當有大量的數據為同樣類型的錯誤時,可以考慮通過編寫代碼/腳本或者導出使用Excel等工具搜索替換,從而進行批量修正。
  • 范圍類錯誤:應結合其他字段數據,參考缺失字段的填充方式進行數據重設。

2)根據字段意義進行劃分

  • 核心字段:即做業績報表用的,那就得溯源、考證、根據實際情況進行修正,無法修正時,結合其他字段進行數據重設,重設為一個合理范圍內的數值。
  • 非核心字段:先統計一下錯誤數據的比例,如果比例不高,如低于1%,可以考慮直接刪除或不采納對應數據,影響小效率高。如果數據占比高,再根據錯誤類型決定具體修正方案。

五、清洗結果分析

通過對數據進行清洗后,需要統計清洗前后的數據,看清洗是否達到了目的。

1)數據損失評估

例如清洗前有關聯的原始數據有10萬,清洗后數據剩下了9.5萬條,損失了5%的數據,如果數據分析的目的是做市場分析而不是財務報表,那么這個損失程度我們會認為在可接受范圍內。

如果清洗完發現剩下不到5萬條數據,就需要去思考這個清洗是否有效,是否導致重要數據被漏掉了。

2)數據失真評估

對于結果要求可靠性高的分析,如財務報表,需要對填充、調整的數據量進行評估,填充的數據加上因為非格式問題導致的數據調整,一般不能超過數據總量的5%,且最終數據的平均值,應該與清洗前完全沒問題的數據平均值基本一致,相差±1%,這樣填充/調整操作才可信度高。具體比例因人而異,但是填充、調整過的數據量太多,可信度會大幅下降。

數據可信度越高,代表數據失真度越低,失真度越低的數據用于業務發展規劃、分析時,得出的結論可靠程度才更高。

六、總結

通過對數據清洗過程的分析,其實如何進行數據清洗,這其中的“度”量,與分析目的和場景息息相關,同一份數據,不同的分析場景,可能需要不同的清洗方案,從而現成不同的數據集合。

由于清洗方式不一樣,得出的數據結論也會有小微的偏差,但是總體方向應該是一致的。

#專欄作家#

iCheer,公眾號:云主子,人人都是產品經理專欄作家。房地產/物業行業產品經理,Python編程愛好者,養貓發燒友。

本文原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 別吹啦,一直在三流公司進進出出

    來自北京 回復
  2. 你這些年干成啥了???除了吹牛有一件事拿的出手嗎?不要臉

    來自北京 回復
  3. 辛苦了

    回復