尋找遺失資料

從另一個系統匯入資料時,您可能會發現某些值遺漏了。在某些情況下,這些值根本不含任何內容。而在其他情況下,這些值不存在。依據遺漏值輸入資料的方式,您可以決定採用不同的處理方式。本節說明如何識別和管理資料集的遺漏資料。

附註:如果您不確定缺少資料值的欄位會造成什麼影響,請試著檢查來源資料或聯絡產生該資料的使用者,以瞭解值遺漏的可能原因,以及如何在 Cloud Dataprep by TRIFACTA® 及下游系統中有效管理這些資料。

尋找遺漏值

評估資料集樣本時,系統會驗證每個資料欄的類型定義。依據該驗證,資料欄中的值可分成有效、不相符或遺漏三種類別。這些值的分類會顯示在每個資料欄頂端的資料品質長條圖中。

  • 遺漏值指是不含任何內容或不存在的任何值。
    • 不存在的值範例為整數資料欄中出現不含任何值的儲存格。若是這種特殊情況,遺漏值稱為空值
    • 在匯入作業期間,空值會轉換成遺漏值。詳情請參閱管理空值
  • 若值為空格 (按下一或多次 SPACEBAR) 或定位鍵 (按下一或多次 TAB 鍵),則該值不是遺漏值。

    提示:若要刪除資料欄中的空格,請使用下列轉換指令:

    轉換名稱 Edit column with formula
    參數:資料欄 column1
    參數:公式 TRIM(column1)

    這個步驟可能會增加遺漏值 (只含有空白字元的值) 的數量,以及相符值 (在英數值前後含有空格的值) 的例項數量。

  • 系統會將 Return 鍵 (\n) 及換行符號 (\l) 視為遺漏。

在資料品質長條圖中,系統會以黑色識別遺漏值:

圖:黑色表示的遺漏值

提示:在轉換頁面中,按一下某資料欄的遺漏值可以查看相關計數,在資料格線的資料列中醒目顯示這些值,然後觸發一組建議供您審查。

遺漏值發生的原因很多:

  • 遺漏值的產生可能是因為在來源系統中輸入錯誤。
  • 來源系統可能啟用了不含值的選用欄位。例如,美國郵遞區號若是採用基本的五位數郵遞區號格式 (延伸郵遞區號加 4 位數代碼),則會含有第二個四位數限定詞。第二個值不一定有必要,所以可以遺漏。
  • 對於產生值的資料欄,可能無法從來源資料執行計算,這可能表示其他資料欄資料發生問題。
  • 某一資料列中出現一組遺漏值可能表示整個記錄發生問題。
  • 來源系統可能在輸出時產生問題,特別是在使用自訂結構產生資料時。

提示:清理遺漏的資料時,您應該先處理較大的問題,再處理較小的問題。如果資料欄值被分類為遺漏值的比例較高,您應查看所有受影響的資料列,以瞭解是否發生涉及層面更廣的問題。如果其他記錄看起來沒有問題,您應考慮刪除資料欄或找出管理遺漏值的方法 (包括填入方式)。

如果您沒有足夠的資料相關資訊,資料也可能會被視為遺漏。例如,沒有時區 ID 的時間戳記可能無法在目標系統中使用。

修正遺漏資料的方法

當您發現資料集中有不相符的資料時,可以採用下列的基本修正方法:

  1. 識別資料欄值是否必要。

    1. 檢查目標系統以判斷欄位是否必須含有值。如果值不是必要,就無需擔心。請考慮刪除此資料欄。

    2. 請記住,匯入 Cloud Dataprep by TRIFACTA 的空值會當成遺漏值匯出,因為對大部分系統而言,處理這種格式的值比較容易。

    3. 檢查資料欄標頭和資料類型以判斷值是否必要。例如,在交易資料中,名稱為 coupon_code 的欄位只有在每筆交易需要與優惠卷代碼一起處理時,才需要含有資料。

    4. 如果可行,請檢查來源系統以瞭解欄位是否需要輸入資料。如果需要輸入資料,而您的資料含有遺漏值,則如何從來源系統匯出該資料是一大問題。
  2. 插入常數值。 您可以使用常數取代遺漏值,這樣可以更容易在應用程式中找到更重要的問題。

  3. 使用函式。特別是在可以計算遺漏資料時,您可以使用其中一個可用的函式來填入遺漏值。

  4. 從另一個資料欄複製值。 如果遺漏值可以使用另一個資料欄的值或修改該值後使用,您就可以使用 set 轉換來覆寫遺漏值。

  5. 刪除資料列。 選取遺漏值長條,然後使用 delete 轉換來移除有問題的資料列。

    附註:因為遺漏資料可能並不是明顯問題,在查看其他可行選項之前,您應避免刪除資料列或資料欄本身。

  6. 暫時隱藏資料欄。 如果您要將焦點放在其他內容上,您可以從顯示畫面中移除該資料欄。從資料欄下拉式選單中選取 [隱藏]。請注意,隱藏的資料欄還是會出現在任何產生的輸出中。
  7. 刪除資料欄。 如果資料欄資料非必要或無法使用,您可以從資料集刪除整個資料欄。從資料欄下拉式選單中選取 [Delete]

    提示:請儘早刪除非必要的資料欄。資料愈少,應用程式處理資料就愈容易,還可提升工作執行效能。

插入常數表示遺漏值

附註:一般來說,不建議插入常數來代替遺漏值,特別是在下游使用該資料的應用程式和使用者可能不知情的情況下。您尤其不應使固定數字值來取代遺漏數字值,這會造成分析偏差。只有在整個資料鏈都知道常數的情況下,才能使用這個方法。

步驟:

  1. 針對要修正的資料欄,按一下資料品質長條圖中黑色的遺漏值區段。

    提示:在資料格線中選取遺漏值。然後,選取 replace 建議並修改以加入取代值。

  2. 在建議資訊卡中,按一下 set 建議。
  3. 根據預設,轉換會將遺漏值設為空值。按一下 [編輯]
  4. 您可能會看到類似下列的指令:

    轉換名稱 Edit column with formula
    參數:資料欄 country
    參數:公式 IF(ISMISSING([country]),NULL(),country)

  5. 使用 row:ISMISSING 參照識別遺漏資料。若要套用常數,請使用常數值取代 NULL() 參照,如下所示:

    轉換名稱 Edit column with formula
    參數:資料欄 country
    參數:公式 IF(ISMISSING([country]),'USA',country)

    請注意,您必須使用單引號將值括住,因為這可將值識別為常數。

  6. 按一下 [新增]。

提示:您也可以使用 IFMISSING 函式來測試空白值。但與上述架構不同的是,如果顯示值則 IFMISSING 不支援 else 子句。詳情請參閱 IFMISSING 函式

從另一個資料欄複製值

您可以使用另一個資料欄的值來填入遺漏值。在下列範例中,如果 nickname 資料欄含有遺漏值,則會填入 first_name 的值:

轉換名稱 Edit column with formula
參數:資料欄 nickname
參數:公式 IF(ISMISSING([nickname]),first_name,nickname)

使用函式填入遺漏值

特別是對於數字資料,您可以使用函式來填入遺漏值。在以下範例中,unit_price 資料欄的遺漏值取自 weight_kg 資料欄和 price 資料欄的計算所得:

提示:請小心使用函式 (如平均值) 來計算遺漏值。這些計算可能會列入尚未移除的離群值,或可能沒有考慮到與資料相關的局部趨勢。執行取代作業之前,請先研究資料欄中的值及其意義。如有疑問,假設離群值和假性資料均已妥善處理的中位數值可能是您的最佳選擇。

轉換名稱 Edit column with formula
參數:資料欄 unit_price
參數:公式 IF(ISMISSING([unit_price]),(price / weight_kg),unit_price)

管理遺漏的中繼資料

在某些情況下,資料欄可能含有有效值,但資料中卻沒有這些值的意義。例如,資料含有下列時間戳記資訊:

時間戳記
19 May 02:45:38
19 May 02:42:24
19 May 02:41:33

基於下列原因,這個時間戳記可能被視為有問題:

  • 格式不是適用於目標系統的正確格式。
  • 沒有任何年份資訊。如果目標系統含有多年資料集,則會造成問題。月份元素應由 Cloud Dataprep by TRIFACTA 解釋。

  • 沒有任何時區資訊。這些項目的記錄採用哪一個時區?

下列範例示範如何將此資訊插入時間戳記。

範例 - 變更類型

匯入時,時間戳記資料可能會被分類為字串資料。就目前而言,這樣的分類沒有問題。

提示:作為字串資料類型的資料最容易管理,尤其是日期資料。Cloud Dataprep by TRIFACTA 有許多函式可供您部署,來管理字串。資料經過適當格式化之後,您可以將該資料變更成適當的資料類型。若立即變更資料類型,可能會在重新格式化和擴增資料時遇到一些問題。請將這個步驟留到最後執行。

加回遺漏的元素之後,您可以透過資料欄的資料類型下拉式選單將資料類型變更為日期/時間。

在開始重新格式化資料之前,您應識別要與時間戳記相符的目標日期格式。在資料類型下拉式選單中,選取 [日期/時間]。對話方塊會顯示下列支援的日期格式:

提示:疊加資料時,您應從資料的目標結構或格式開始,再回頭處理來源。這個原則適用於資料欄管理及整體資料集管理。

圖:可用的日期/時間格式

附註:在顯示的下拉式選單中,每個可用的選項都有一組子選項。

在這個時間戳記範例中,目標格式如下:

dd-mm-yy hh:mm:ss (dd*shortMonth*yyyy*HH:MM:SS)

範例 - 插入年

處理年份資訊插入的最簡單方法,就是將時間戳記資料分割成不同的元件,然後再將已插入年份資訊的內容重新合併在一起。因為上述時間戳記資料基本上都會含有三個不同的欄位 (日期、月和時間),您可以使用 split 指令將此資訊拆分成三個不同的資料欄。醒目顯示日期和月份之間的其中一個空格,然後選取 split 建議。Wrangle 步驟應類似下列所示:

轉換名稱 Split column on delimiter
參數:資料欄 column1
參數:選項 By delimiter
參數:分隔符號 ' '
參數:要建立的資料欄數 2

現在,您的資料應該已儲存在三個不同的資料欄中。

提示:您可能已注意到,產生的資料欄已套用新的資料類型。如果所有資料欄類型現在均轉換成字串類型,則會比較容易處理資料。

下一步要將所有這些資料欄重新合併成一個欄位,並在其中擴增適當的年份資訊。請依您希望在新時間戳記欄位中顯示的順序來選取資料欄。在此案例中,您可以按照原本的列出順序來選取資料欄。三個資料欄都選取後,選擇 merge 建議。

您可能會注意到,資料已在不含空格 (19May02:45:38) 的條件下重新格式化,且尚未包含年份資訊。您可以產生包含年份值 (myYear) 的新資料欄,然後將資料欄和並在一起:

轉換名稱 Merge columns
參數:資料欄 column2, myYear, column3, column4
參數:分隔符 ' '

插入年份資訊並合併資料欄之後,您應該可以將資料欄資料類型變更為適當的日期/時間版本。

範例 - 插入時區

時間戳記並不是原本就支援不同的時區,所以此資訊必須儲存在不同的資料欄中。若是美國地區的資料,可依據郵遞區號來決定時區。

附註:如果目標系統的值不支援遺漏的中繼資料,您可以將中繼資料以個別資料欄插入,然後將中繼資料套用至目標系統內的資料。

若要進一步瞭解如何插入時區中繼資料,請參閱新增查詢資料

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Dataprep 說明文件
需要協助嗎?請前往我們的支援網頁