官术网_书友最值得收藏!

四、瀝盡狂沙方見金:數據的清洗與可視化

題解 用劉禹錫《浪淘沙》中的兩句詩來形容數據清洗再恰當不過了——“千淘萬漉雖辛苦,吹盡狂沙始到金[9]”。數據清洗是提高數據質量、使數據變得可用的過程,數據清洗會提升數據分析的準確率。


[9] 《浪淘沙九首》之八。全詩:“莫道讒言如浪深,莫言遷客似沙沉。千淘萬漉雖辛苦,吹盡狂沙始到金?!边@首詩告訴我們:辛苦、委屈和磨礪都是達到目標、實現價值的過程中必須經歷的。

咖哥問小雪:“談一談你對數據清洗的看法吧。”

小雪答:“我認識一位在銀行做數據分析師的學長。我曾問他每天都在做什么項目,是不是要分析給什么樣的用戶發什么卡,判斷什么樣的用戶風險高。學長很實在,告訴我其實他日常工作的大部分內容是把數據整理成能用的格式。所以我想數據清洗是數據分析師工作中很繁重的一部分吧?!?/p>

咖哥點點頭:“的確是這樣的。”

1 “臟”數據的清洗

很多人都說做飯時油下鍋開始炒菜是最爽的環節,但一般炒菜時間只占做飯時間的20%,剩下的時間都是在準備食材,如買菜、擇菜、洗菜。數據清洗就是在開始“炒菜”(數據分析)之前的準備工作(見下頁圖)。準備工作做得越好,數據越干凈,數據分析結果就會越準確。

數據清洗占數據分析師的大部分工作時間

看看下面這個從數據庫中直接提取出來的Excel表,你就會發現,“臟”數據的種類很多。

“臟”數據的示例

數據清洗過程中主要處理下面這4種數據。

(1)缺失的數據。

這里有兩種可能的情況:一種是缺少數據記錄;另一種是有數據記錄,但是不完整。

對于缺少整條數據記錄的情況,要分析埋點過程中哪里存在流程或技術上的問題。對于重要數據因誤操作丟失的情況,如果備份系統里面還有該數據,可以重新載入:如果備份系統里面沒有該數據,試一試是否能通過原始文件手動補錄。

對于有數據記錄但是含有缺失值的情況,有以下兩種處理方法。

如果含有缺失值的數據記錄不影響數據分析結果,可以將其刪除,但這樣做會減少樣本的數量。

如果不希望刪除含有缺失值的數據記錄,則可以通過一些方法補充缺失值,如取其他數據記錄的平均值、隨機值或者0值來補充缺失值,這稱為數據修復。

Python的Pandas中有工具(API[10])可以用來完成上述的刪除和補充缺失值工作。


[10] Pandas等Python包中提供的方法、屬性和函數統稱為API,即用于實現某種功能的程序接口。

(2)重復的數據。

完全相同的重復數據處理起來比較簡單,用數據處理工具刪除冗余數據即可。Excel和Python的Pandas中都有相應工具或API。

但是如果同一個主鍵出現兩行不同的數據,例如同一個身份證號出現兩行不同的地址數據,此時要看看有沒有其他輔助信息可以幫助判斷(如時戳)哪一行數據是正確的。若無法判斷,只好刪除其中一行,或者全部保留。

(3)錯誤的數據。

數據中可能有各種邏輯錯誤。例如,商品的銷售量、銷售金額出現負值,此時就需要將其刪除或者轉成有意義的正值。又如表示百分比或概率的字段的值大于1,這也屬于邏輯錯誤數據。

(4)不可用的數據。

還有一些數據不能算是錯誤數據,但是需要轉換格式后才能夠正確使用,如價格字段,有些以人民幣為單位,有些以美元為單位,如果直接對這些數據進行求和,得到的結果就是錯誤的。另一些常見例子是把“是”“否”分別轉換成“1”“0”再輸入機器學習模型,或者把多分類字段轉換成模型能夠識別的多個二分類字段。

通過數據治理將上述所有情況從源頭處理好,其效果遠遠好過事后補救。

“臟”數據清洗的工作完成之后,數據分析師的下一步工作通常是把數據可視化。

2 數據的可視化

“小雪,看一下咱們數據科學講習所的年利潤率增幅圖(見下圖)。”

給投資人看的利潤率增幅圖

小雪說:“好大的增幅啊?!?/p>

咖哥說:“很大是嗎?那你再看看下面這張圖(見下圖)?!?/p>

咖哥自己看的利潤率增幅圖

小雪定睛細看,喃喃自語:“怎么回事,一樣的數據,現在又不覺得有多大的增幅。這是用了什么障眼法?”

咖哥笑道:“這就是數據可視化過程中的一個小技巧?!?/p>

用同樣的數據制作的圖,第一張圖適合給投資人看;而第二張圖適合給自己人看,以提醒大家不要對小小的增長過于沾沾自喜。第二張圖中的視覺增長和我們營收的實際增速一致,都約為25%;而第一張圖在并沒有修改數據的前提下把25%的營收增速在視覺上放大至近300%。

因此,數據還是那些數據,如何展現它們,其中的學問可就太大了。

有很多種工具可以實現數據的可視化。

我們常接觸的Excel中可視化工具不少,基于數據透視表的透視圖就是其中之一。

專業的數據分析工具,如Power BI、Tableau等,它們也提供了強大的數據可視化功能。

各種商用數據分析平臺,如Google Analytics、百度統計、GrowingIO、諸葛IO、神策數據、西瓜數據,都可以實現數據的可視化。

Python、R語言、MATLAB語言中都有數據可視化包,如Python中常用的Matplotlib,R語言中的ggplot2。

“數據可視化與用戶體驗直接相關,那么誰是數據可視化的用戶?”咖哥問。

小雪說:“數據分析師本人?”

“當然,還有其他部門的同事,更重要的是數據可視化后的結果往往要呈現給老板或者客戶。因此用戶體驗至關重要?!?/p>

在后續的實踐篇中會講解數據可視化的大量細節,這里只說一些用戶體驗要素,可作為數據可視化的指導思想。

(1)永遠要記得你的用戶。數據可視化的結果是數據分析師的產品,而產品是給用戶看的,要讓用戶看得懂,看得清楚。

(2)少即多,簡單就是美。盡量簡化數據可視化的結果的配色與排版。一般情況下,一張圖片中的顏色不要超過3種,字體不要超過3種,能不用的背景色就不用,不需要的網格線全部刪除。

(3)注意對比。單獨一行數據包含的信息有限,把兩行或兩行以上的數據放在一起展示更易于發現其中的問題。

(4)強調一致性。一系列的數據可視化的結果要基于相同的標準,最好讓它們使用同樣的模板。因為人的思維有慣性,要避免易引起混淆的跳躍。如果有兩張業務增長圖,其中部門A的y軸從0開始,部門B的y軸從50%開始,這兩張圖在同一份報告中出現就很不合適。

類似的指導原則還有很多。它們是我們在一開始就應領悟的“道”。雖然“道”和“術”都很重要,但我想反復強調“道”。因為對“道”的深入理解能夠讓我們走得更穩,走得更遠。

主站蜘蛛池模板: 区。| 怀化市| 平和县| 垫江县| 连云港市| 璧山县| 万荣县| 茂名市| 隆子县| 关岭| 东港市| 宜昌市| 兴义市| 郧西县| 泌阳县| 钟山县| 西林县| 安溪县| 同德县| 阿克陶县| 华阴市| 和政县| 福安市| 乾安县| 偏关县| 柳江县| 乐清市| 吐鲁番市| 芦山县| 界首市| 宜兰市| 奉化市| 新龙县| 巴塘县| 松桃| 寿光市| 五家渠市| 五河县| 鹤壁市| 荔浦县| 通渭县|