對於進行數據分析的人來說,將大部分時間用於數據清理是很常見的。真實數據是臟數據。即使您使用自動收集工具,錯誤,異常和不一致仍將進入您的數據。
在接下來的幾篇博文中,我想向您展示一些提高數據完整性的簡單技巧。我會談談要尋找什麼,以及如何使用它 JMP 。在許多情況下,JMP具有執行任務所需的所有功能。在少數情況下,我將腳本放在一起以幫助清理。我會在這裡提供這些腳本 JMP用戶社區 。
要將數據清理置於上下文中,請考慮可能出現問題的三個常見位置。您可能遇到問題的第一個地方是構建數據集。缺少分隔符,不匹配的列名稱和不同步的時間戳將使訪問,連接和連接數據變得困難。一旦數據在JMP數據集中,您將遇到一組不同的問題:不正確的數據或建模類型,沒有值的列,錯誤代碼和拼寫錯誤的值很常見。最後,在分析過程中,您可能會發現需要刪除異常值,轉換列或聚合變量級別。
讓我們從中間開始,即上面提到的第二個區域。您已經創建了數據集,但需要在分析之前將其清理乾淨。我懷疑這是你遇到大部分問題的地方。首先,我們將專注於刪除不需要的列並使數據和建模類型正確。只需使用Columns Viewer就可以完成大部分工作。
為了說明,我將使用從美國環境保護局網站上下載的數據汽車燃油經濟性 。下載並連接七個單獨的Excel工作表(數據集中每年一個)。你可以找到數據在JMP用戶社區中。
我們可以做的第一件事是刪除幾乎沒有信息的變量。所有值相同(或缺失)的列是理想的候選者。使用Columns Viewer(在Cols菜單下):
通過取消選中僅篩選分類值連續 。(這是可以在所有平台對話框中找到的相同列編輯器。)選擇所有列並單擊顯示摘要 。右鍵單擊下面的表格摘要統計並選擇按列排序...... 選擇 N類別並檢查上升您將在父數據表中同時選擇在摘要表中選擇的任何列。通過允許您在執行操作之前預先選擇具有特定屬性的列,這使得許多列操作更容易。

圖1。Columns Viewer過濾器可用於快速識別具有特定屬性的數據表列。

圖2。在列查看器摘要窗口中選擇的列也將在數據表中選擇。
請注意,前三列包含所有缺失值,可以刪除。一旦你選擇了它們, Cols>刪除列將從數據表中刪除它們。請注意,刪除的列不會從摘要表中刪除,因此重新運行可能有意義顯示摘要 (記得重新選擇所有列)。您可以通過刪除舊的摘要表來整理報告(查看旁邊的熱點下方摘要統計標題)。
接下來的10列只有一個值。保留它們的決定取決於它們所具有的缺失值的比例以及您是否認為其標識提供了額外的信息。兩列,抑制?和警察/ Emerg(緊急)?沒有缺失值(即所有行都相同),因此可以安全地刪除它們。其餘八列中有七列大部分缺失(> 99.997%),可能是淘汰的良好候選者。剩下的專欄高油耗?有大約5%沒有失踪,可能值得保留。(我假設沒有列是已分割到多個列的變量的一部分。我將在稍後的帖子中討論找到並解決這種情況。)
在上面的單一類別示例中,大多數數據都丟失了。但是,如果大多數數據都沒有丟失,則可以使用類似的參數來證明何時刪除列。如果列由單個值組成,但具有足夠大的缺失值比例,則可以考慮保留它。那些缺失的價值可能會告訴你什麼。
我們還可以刪除具有高度缺失的多類別列。要執行此操作,請右鍵單擊並對摘要表進行排序 N失踪 。不要檢查上升這一次是盒子,因為您只想考慮其值大部分缺失的列。由於這些列具有多個類別,因此您可能還需要更詳細地檢查它們。為此,請在摘要表中選擇它們,然後單擊分配按鈕。和以前一樣,您必須確定保留列的非缺失值的比例是多少。
完成分類數據後,可以對連續數據執行相同的操作。在過濾器彈出對話框中,重新選擇連續並取消選擇序數詞和公稱 (記得抱著 Alt鍵單擊熱點之前的鍵可以進行多項選擇。顯示摘要後,按升序排序 Std Dev (它在最右邊)。列在哪裡 Std Dev 等於零只有一個值。應該只有一個( 梳理二氧化碳圓形調整 )。排序方式 N失踪找到那些值大多缺失的列。
完成刪除不需要的列後,您可以繼續檢查數據和建模類型。當JMP最初從其他來源讀取數據時,只給出包含數字的列數字數據類型和連續建模類型。否則,他們被分配了字符數據類型和公稱建模類型。有時,JMP會將列設置為數字即使它有一些字符值。如果發生這種情況,您將收到類似圖3中的警告消息。

圖3。字符值設置為缺失時的警告消息。
雖然JMP中的默認值在大多數情況下都能正常工作,但在某些情況下您應該了解這些情況。首先,如果數字列具有無關文本 - “NA”,錯誤代碼,標記異常觀察的符號等。- 列可以讀作字符 / 公稱 。其次,數值可能對應於編碼價值而非測量值。在這些情況下,您需要將建模類型視為公稱 。最後,在某些情況下,應將測量的分類值視為序數。幸運的是,建模與之間存在差異的情況相對較少公稱數據和建模序數詞數據。
所以我們可以繼續使用Columns Viewer;我們的下一個任務是查找分類數字列。(我們的其他任務必須等待下一篇文章。)
要找到這些列:
在列查看器中創建所有連續列的摘要。在下面摘要統計熱點,選擇數據表視圖。選擇所有數字列並將其建模類型更改為序數詞 。我喜歡使用Ordinal,因為大多數數據最初都是連續要么公稱 。製作Ordinal讓我知道它是數字 ,但我正在考慮將其分類。確保中的所有列列視圖選擇器選中,然後單擊顯示摘要 。如果你有空列視圖選擇器框,首先在“列查看器”過濾器中重新開啟序號。在摘要中單擊鼠標右鍵,然後選擇“生成數據表”。由於您已有數據視圖,因此無需創建另一個數據視圖。使用步驟4中的表更新步驟2中的表。按名稱列匹配列 。選擇您在步驟2中創建的表。去表>更新從列錶框中選擇您在步驟4中創建的表,然後選中匹配列假設您沒有更改任何列名,請選擇列列從每個表中單擊比賽 。您的結果將與圖4類似。點擊好 。排序方式 N類別 。
圖4。將Update與匹配列一起使用。
與報表窗口中的摘要表一樣,結果錶鍊接到創建它的數據表。由於您使用的是數據視圖,因此可能需要取消選擇之前在父數據表中選擇的任何列。要查找分類變量,請查找具有少量類別和/或最小值接近0的列。
雖然這種尋找分類數值數據的方法遠非完美,但它是一個快速而簡單的開始。您可以通過選擇摘要數據表中的行,返回父表,然後運行來執行簡單檢查分配在選定的列上。如果您使用列進行此操作 N類別等於6或更小,您會注意到一些列包含帶小數的值。雖然從一開始就排除這些列會很不錯,但Columns Viewer目前還沒有提供這個,所以我們將通過一些腳本來完成。
我們下次會談到這個以及更多。