就如上一篇文章所說的,一個好的數據需要在兩個方面上都是好的:
- 整潔度:指的是數據集的結構符合三個原則,詳細可以看上一篇
- 乾淨度:指的是數據內沒有不應該存在的缺失、無效/錯誤、不一致以及重複。
那我們又要如何評估數據的整潔與乾淨呢?本章節就來說明一些常用的方法可以幫助我們評估數據的整潔與乾淨。文章將會分為兩個部分,第一個部分主要說明如何評估整潔度,而第二個部分則是說明如何評估乾淨度。
評估整潔度 #
結構性的問題一般上來說都比內容性的問題還容易評估,就像一個書架上的書亂不亂一眼就能看出來,但要能看出書中內容是否出錯就會比較麻煩。下面說明一些方法來讓我們看出結構性問題:
df.info()
可以告訴我們數據的概括信息,例如:每個 column 的名字以及他們對應的 type,這可以讓我們判斷是否符合每個 column 只能有一個變量的原則。df.head(n), df.tail(n), df.sample(n)
可以讓我們看到真實的幾條數據,讓我們直接從數據中來評估是否符合結構性原則。
評估乾淨度 #
空缺值 #
-
第一個方法是使用
df.info()
,它可以告訴我們每個 column 空缺值的數量。 -
第二個方法是使用
df["column_name"].isnull()
能讓我們知道某個 column 內哪一些 row 是空缺值,會返回 Boolean 的一個表。這個方法搭配上.sum()
就能讓我們知道這個 column 內空缺值的數量,例如:df["column_name"].isnull().sum()
. 或者更直接一些,df.isnull.sum()
可以告訴我們每 column 的空缺值數量。這個方法最重要的是能搭配上條件篩選讓我們找到某個 column 有空缺值的 row, 例如:df[df["column_name"].isnull()]
.
重複值 #
- 我們可以用
df.duplicated(subset = ["column1", "column2"])
,來找到那些重複的值,這裡的 subset 指的是一個 row 的column1
和column2
要和前面某個數據完全一致才會被看做是重複數據。它會返回Boolean值,假如有一筆數據重複了三次,第一次出現時會是False
,第二第三次才會是True
, 因此我們可以搭配條件篩選,篩選出那些重複的值。
數據不一致 #
- 我們可以用
df["column_name"].value_counts()
來知道這個column內出現的各個值的個數,藉此可以觀察出是不是有哪些值有著不同的命名。
無效/錯誤數據 #
無效和錯誤數據一般會比較難以處理,特別是當我們對於數據沒有任何了解的時候。一般上我們只能透過:
df.describe()
來知道最大和最小值,判斷是否符合常理df["column_name"].sort_values()
得到一個 sort 好的 column 來知道有沒有異常的值