用最簡單的方式,完成探索性分析。
痛點
實踐中,大量資料分析時間,都會花在資料清洗與探索性資料分析(Exploratory Data Analysis, EDA)。即缺失值統計處理,和變數分佈視覺化。
資料採集過程中,可能有缺失。
你需要了解缺失資料的多少,以及它們可能對後續分析造成的影響。
如果某個變數的缺失資料少,乾脆把含有缺失值的行(觀測)扔掉就算了,免得影響分析精確程度。
但如果缺失資料太多,都扔掉就不可行了。你需要考慮如何進行填補。是用0,用 "unknown" ,還是使用均值或中位數?
另外,你可能還想看看每個特徵變數的分佈情況。
例如定量資料是正態分佈,還是冪律分佈?這對你後面合理進行研究假設,都是有影響的。
即便是對於分類資料,你也要了解獨特取值(unique values)的個數,以便做到心中有數。
這些工作很有必要。但是實現起來,卻一直很麻煩。即便是 R 這樣專門給統計工作者使用的軟體,從前也需要呼叫若干條命令(一般跟特徵變數個數成正比),才能完成。
我最近發現了一款 R 包,可以非常方便地進行資料集總結概覽。只要一條語句,就幫你完成探索性資料分析中的許多步驟。
通過本文,我把它分享給你。希望對你的資料分析工作有幫助。
演示
你不需要安裝任何軟體。只需要點選這個連結(t.cn/Rg1JFfo),就可以使用 R 程式設計環境了。
等準備工作完畢,你會看到,瀏覽器裡面開啟了一個 RStudio 介面。
點選左上角的 File
-> New File
,選擇選單裡面的第一項 R Script
。
此時,你會看到左側分欄一個空白編輯區域開啟,可以輸入語句了。
輸入之前,我們先給檔案起個名字。點選 File
-> Save
按鈕。
在新出現的對話方塊裡面,輸入 demo
,回車。
我們一共需要如下輸入4條語句。你可以直接複製貼上進編輯區域。
library(tidyverse)
library(summarytools)
flights <- read_csv("https://gitlab.com/wshuyi/demo-data-flights/raw/master/flights.csv")
view(dfSummary(flights))
複製程式碼
分別解釋一下含義。其實前3行語句,都是準備工作。真正總結概覽功能,只需第4條。
第一行: tidyverse
是一個非常重要的庫。可以說它改進了 R 語言處理資料的生態環境。而這個庫中的大部分工具,都是 Hadley Wickham 一己之力推動和完成的。
第二行: summarytools
是我們今天用來總結概覽資料的軟體包名稱。
第三行: 使用 read_csv
做資料讀入。我們是從這個網址讀取的,並且把資料儲存到 flights
變數中。
你可以點選該連結(t.cn/Rg1XCCN),下載原始資料 csv 檔案,檢視其內容。
這個資料集,來自於 Hadley Wickham 的 github 專案,名稱叫做 nycflights13
。
它記錄的是 2013 年,紐約市3大機場(分別為: JFK 肯尼迪國際機場、 LGA 拉瓜迪亞機場,和 EWR 紐瓦克自由國際機場)起飛的航班資訊。
具體的記錄資訊(特徵列),包括起飛時間、到達時間、延誤時常、航空公司、始發機場、目的機場、飛行時長,和飛行距離等。
這個表格,看起來已經是很清晰的了。但是,由於觀測(行)數量眾多,我們很難直觀分析出缺失值的情況,以及資料的分佈等資訊。
第4條語句,就是負責幫助我們更好地檢視和探索資料用的。它用 dfSummary
函式處理 flights
資料框的內容,然後用 view
函式直觀輸出給使用者。
點選 Code
-> Run Region
-> Run All
命令,執行程式碼。
執行中,可能會有一些警告資訊。別理它就好。
分析的結果,在右下方的顯示區域。因為區域比較小,內容卻很多,看不全面。
你可以點選這個區域左上方第三個按鈕 Show in new window
,在瀏覽器新視窗開啟完整的顯示結果。
解讀
因截圖篇幅關係,一張圖中,無法顯示完整資訊。就著第一屏,給你講解一下都有哪些分析結果。
- 第一列是序號。不用理會。
- 第二列是變數名稱,以及變數的型別。例如
integer
指的是整數型別的定量資料;character
是字串型別,也就是分類資料。 - 第三列是統計結果。對於定量資料,直接彙報最大、最小、均值、中位數等資訊。
- 第六列是有效值個數;與其互補,第七列是缺失值個數。
- 第四列是頻數。顯示每一個變數對應獨特取值出現的情況。
- 第五列最有意思,直接繪製分佈統計圖形。
我們翻到下一頁看看。
可以看出,起飛延誤是個典型的冪律分佈。
到達延誤,和的起飛延誤分佈長得很像,想想似乎很有道理。
但到達延誤的分佈類別是什麼呢?為什麼二者會有差異呢?
這個問題,供你思考。
探索
本文介紹的 summarytools
包的功能,並不只是對資料集做總體總結概覽。
它還可以進行變數之間的關係展示。例如你想知道3大機場起飛的航班,對應航空公司的比例是否有差別。可以用一條語句,就得到這樣的一張分析表格:
想自己動手,做出這樣一張分析表格?請你點選這個連結(github.com/dcomtois/su…),閱讀文件,瞭解 summarytools
的更多功能。
喜歡請點贊。還可以微信關注和置頂我的公眾號“玉樹芝蘭”(nkwangshuyi)。
如果你對資料科學感興趣,不妨閱讀我的系列教程索引貼《如何高效入門資料科學?》,裡面還有更多的有趣問題及解法。