大資料的背景下,資料處理佔了極大的份額,就像乙個西紅柿做成西紅柿炒雞蛋,需要經過調料整合,菜料清洗,飯菜加工等等才能發布到生產,不,傳送到餐桌,畢竟直接幹吃西紅柿會髒亂有毒,口味不佳,顧客會認為貴餐廳很low
這裡簡單分享一下我對資料清洗的理解,資料清洗佔了很重要的地位,不然面對著髒亂差的西紅柿炒雞蛋,沒人願意下口。
乙份未經清洗過的資料一般會存在這些不符合分析要求的問題:重複,錯誤,空值,異常資料等,對於錯誤資料,因為是業務源頭問題,比如性別明明是男卻成了女,這些我們無法處理,只能從源端進行規範,就像顧客想吃河南的西紅柿,廚房裡進的只有山東的,這個廚師沒辦法解決,只能通知進貨商更改。故我們只對另外三個問題進行清洗修改,必須申明一點,所有的清洗都要基於實際業務來做,比如重複,可能業務要的就是重複,你給人家洗掉了,就產生了問題。
一 . 重複
如果實際業務不要重複值,重複值可以直接刪除,資料庫裡可以在整合合併之前用union而不是union all ,不支援union的可以用排序取第乙個
row_number() over (partition by .. order by..desc) as..
如果也不支援row_number,,,那好好活著吧。
其他語言也都有類似的去重函式,如python可以直接用drop_duplicates()
二 . 缺失
缺失也就是空值,需要明確一點,』空『有兩種情況,一種是真正的物件為空,即null,一種是空值,即***=』『,所以我們處理這些空值時需要分兩種情況,一種是*** is null, 一種是length(trim(***))=0。
空值處理一般是填補,這個根據實際業務需要來做,一般來講,空值數量比較小時可以填補上連續值的某乙個,比如平均數,中位數等;空值較多時,佔了五成以上,可以考慮使用眾數來填補;空值佔了絕大部分,這個時候就沒必要再用原有的資料,可以自己造資料,生成乙個指示啞變數,參與後續的建模需要。
前面已經說過在資料庫裡怎麼處理,這裡說下在python裡如何處理
# 列出空值在每個列所佔的比重
# df是資料集,col.size是當前資料的行數
# 用均值填補,使用pandas包裡的fillna
df.col1.fillna(df.col1.mean())
三 . 雜訊值雜訊值是指資料中與其他數值相比差異比較大的值,也有的叫離群點等,比如年齡裡出來幾個150以上的。雜訊值會嚴重干擾模型結果,使結論不真實或偏頗。所以必須要清除這些雜訊值,常用的方法:對於單變數的有蓋帽法,分箱法,多變數的有聚類法。
1.蓋帽法
我們都學過正態分佈,對於均值上下三倍標準差範圍外的記錄值加一塊的概率才為0.01%,故我們可以把這些外圍資料替換為各自的均值上下三倍標準差值,即為蓋帽法
資料庫裡可以用case when來替換,python可以寫乙個函式
def cap(x,quantile=[0.01,0.99]):
'''蓋帽法處理異常值
args:
x:是series列,連續變數
quantile:上下分位數範圍,這裡寫為0.01和0.99
'''# 生成分位數,q01,q99分別是百分之一分位點和百分之99分位點
q01,q99=x.quantile(quantile).values.tolist()
# 替換異常值為制定的分位數
if q01 > x.min():
x = x.copy()
x.loc[x < q01] = q01
if q99 < x.max():
x = x.copy()
x.loc[x > q99] = q99
return(x)
2.分箱法分箱法通過考察資料的「近鄰」來光滑有序資料的值,有序值分布到一些箱中,通過取各個箱子的特定值如最值,均值,中位數等,這個值就是這個箱子的值,然後置定標準評判這些箱子的值好壞,從而判斷各個箱子是好的還是壞的,壞的箱子需要特殊處理。分箱法分為等深分箱:每個分箱樣本量一致,等寬分箱:每個分箱取值範圍一致。
比如一組數 1 2 66 8 9 2 1 4 6,先排序 1 1 2 2 4 6 8 9 66,再分為三個箱子
箱子a:1 1 2
箱子b:2 4 6
箱子c:8 9 66
我們這裡取箱子的平均數,則a為1.3 b為4 c為27.3 很明顯這個c值遠遠大於這組資料的均值和中位數,所以c箱子是壞箱子,則可以集中處理c裡的資料
3.聚類法
前面介紹的都是單變數,多變數的異常值處理需要用到聚類法。
它的思想是正常值都擁有相似的標籤,比如前面好的西紅柿顏色都是紅潤的,口感都是酸甜的,表皮都是完整的等等,而壞的西紅柿則擁有異於「他人」的特徵,比如味道怪異。故我們可以把資料物件分為多個集合,在同乙個集合裡的物件有較高的相似度,而不同的集合之間的物件差別較大。聚類分析可以通過這些不同的集合挖掘出孤立點,這些孤立點往往就是異常資料。
資料清洗 工業大資料
異常值檢查方法 1 基於統計分析 異常檢測問題就在統計學領域裡得到廣泛研究,通常使用者用某個統計分布對資料點進行建模,再以假定的模型,根據點的分布來確定是否異常。如通過分析統計資料的散度情況,即資料變異指標來對資料的總體特徵有更進一步的了解,對資料的分布情況有所了解,進而通過資料變異指標來發現資料中...
大資料預處理之資料清洗
現實世界的資料常常是不完全的 有雜訊的 不一致的。資料清洗過程包括遺漏資料處理,雜訊資料處理,以及不一致資料處理。本節介紹資料清洗的主要處理方法。假設在分析乙個商場銷售資料時,發現有多個記錄中的屬性值為空,如顧客的收入屬性,則對於為空的屬性值,可以採用以下方法進行遺漏資料處理。1 忽略該條記錄 若一...
大資料關聯處理 大資料預處理之資料清洗
現實世界的資料常常是不完全的 有雜訊的 不一致的。資料清洗過程包括遺漏資料處理,雜訊資料處理,以及不一致資料處理。本節介紹資料清洗的主要處理方法。假設在分析乙個商場銷售資料時,發現有多個記錄中的屬性值為空,如顧客的收入屬性,則對於為空的屬性值,可以採用以下方法進行遺漏資料處理。1 忽略該條記錄 若一...