資料清洗:1個人記錄了2個性別怎辦?

#案件實例系列文

資料清洗的過程,除了之前提過的,將各種不同字樣(男性, 男姓, 男, M, m, Male, male…)收斂成相同(男)之外,我們也很常遇到,明明是同一個人,資料中卻有不同性別……

如圖是近期遇到的,會員資料庫中同一個會員編號,但卻有兩筆資料,性別分別是男和女;又例如同一個會員編號,但有兩個出生日期……。類似例子,不勝枚舉。

以出生日期來說,第一時間會想:會不會…是不同會員?但細看會發現這些資料大都有相同的特性,例如:日期的個位數和十位數互換、日期間的差是10的倍數、月日相同但年份差一年等等。所以這似乎較傾向是…不知怎麼記錄錯誤所導致,而非此會員編號是不同人。

 

面對這類型的資料問題,會隨著後續不同的資料運用,而有不同的處理方法,舉例常用的方法有四種:

1. 不處理:如果這資料問題,不是存在於會員資料表,而是存在於…例如交易資料表裡,同個會員編號在交易資料表中,出現兩筆以上是很正常的,換言之,縱使處理,也不會影響到此交易資料表中的資料筆數,這種時候通常會選擇不做任何調整。

從另外一個角度是,此會員編號在之前是以男性的身分來購物,後來是以女性的身分進來購物,此會員說不定是小A辣呀~ 有何不可?

2. 按照某個規則處理:若發生在會員資料表中,有日期時間可判斷則採最新一筆資料,但若二筆資料的會員編號、會員註冊日期時間、資料更新日期時間等,都是相同的,唯有性別一個是男一個是女,這只能看要取哪個值了。

例如這種狀況一律當作女生、或一律當作男生;若是出生日期不同,則取最大值或取最小值。總之按照某個規則處理,將整個會員資料表處理成一對一的相應才行。這會直接對資料筆數造成影響,資料經處理後筆數減少了。

3. 將此狀況列為「無法判斷」:如果覺得統一列為男生也不對、列為女生也不對,那此性別欄位的男,女,只好皆改為「無法判斷(或…null, 重複值)」等之類的標記,這對後續的數據分析使用最為公正。

4. 不處理,但新增欄位:例如我們慣用上會給個新的欄位,名稱叫做「key值檢驗」,把出現此狀況的資料標記成「X」,其餘正常的資料標記為「O」。至於使用時是否要把「X」資料排除,則由使用者每次運用時自行決定。

不過實際上會出現這類資料的占比都不高(0.1%以下),縱使採方法2,也不見得會對後續分析造成太過嚴重的影響,至於實際要怎麼處理,這就告知各案案主,再由案主來決定了。

 

當然,案主們看到這些資料,通常會先傻眼3秒就是了。????