
摘要:本文先介紹數據預處理的定義和概念,然后對常用的數據預處理方法進行詳細介紹,包括合并數據、清洗數據、標準化數據和轉換數據,并舉例說明其實現方法,本文對從事大數據和人工智能的研究人員在數據預處理方面具有一定的參考價值。
關鍵詞:Pandas;數據預處理;統計分析
0???? 引言
數據預處理是指對數據進行合并、清洗、標準化和變換并直接用于分析建模的過程的總稱[1]。其中,數據合并可以把多張相互關聯的表格合成一張表格;數據清洗可以去掉缺失、重復、異常或者不一致的數據;數據標準化可以去除特征間的量綱差異;數據變換則可以通過離散化、啞變量處理等技術滿足后期分析與建模的數據要求。
1???? Pandas介紹
Pandas是一個強大的分析結構化數據的工具集;它的使用基礎是Numpy(提供高性能的矩陣運算);用于數據挖掘和數據分析,同時也提供數據清洗功能。Pandas的兩個主要功能是DataFrame和Series,DataFrame是Pandas中的一個表格型的數據結構,包含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾型等),DataFrame即有行索引也有列索引,可以被看做是由Series組成的字典。Series是一種類似于一維數組的對象,是由一組數據(各種NumPy數據類型)以及一組與之相關的數據標簽(即索引)組成。Pandas是一個強大的數據處理工具,使用Pandas可以方便地進行各種原始數據的預處理。
2???? 使用Pandas進行數據預處理方法介紹
2.1? 合并數據
Pandas合并數據主要有三種方法,分別是是堆疊(橫向或縱向)合并數據、主鍵合并數據和重疊合并數據。
堆疊合并就是簡單地把兩個表合并在一起,根據x軸或者y軸的合并方向,可分為橫向或者縱向合并,其中橫向合并可以用concat函數完成,而縱向合并可以用append函數完成。
主鍵合并就是通過一個或者多個鍵將兩個數據集的行進行連接,類似與SQL中的join函數。針對兩張包含不同字段的表,將其根據某幾個字段一一對應拼接起來,結果集的列數為兩個原數據的列數和減去連接鍵的數量。Pandas中的merge函數可以實現主鍵合并。
重疊合并主要是用來處理數據分析中偶爾會出現兩份數據的內容幾乎一致的情況,但是某些特征在其中一張表上是完整的,而在另外一張表上的數據則是缺失的。Pandas中的combine_first函數可以實現重疊數據的合并。
2.2? 清洗數據
數據重復會導致數據的方差變小,數據分布發生較大的變化[2];而數據的缺失會導致樣本信息減少,不僅增加了數據分析的難度,而且會導致數據分析的結果產生偏差。異常值則會產生“偽回歸”。數據清洗就是對數據進行檢測,查詢是否有重復值、缺失值和異常值,并且對這些數據進行適當的處理。
清洗數據主要包括檢測與處理重復值、檢測與處理數據缺失值和檢測與處理數據的異常值三個方面內容。處理重復數據是數據分析經常面對的問題,對重復數據進行處理前,需要分析重復數據產生的原因以及去除這部分數據后可能造成的不良影響。常見的數據重復分為兩種:一種是記錄重復,即一個或者多個特征的某幾條記錄的值完全相同;另一種是特征重復,即存在一個或者多個特征名稱不同,但數據完全相同的情況。
2.2.1????? 記錄重復的處理
下面介紹幾種處理數據表中記錄重復的方法。
(1)利用list去重
假如表中的某一個特征字段存放了該特征的類別信息,要找出該特征字段中唯一的不重復的類別信息,可以采用list去重的方法。關鍵代碼如下所示:
def delRep(list1):
list2=[]
for i in list2:
if i not in list2:
list2.append(i)
return list2
(2)利用set特性去重
set集合的特點是不能存儲相同的信息,利用這個固有的特性,可以達
到自動去重的目的。關鍵代碼如下:
print‘(去重前的總數:,len(list1))//去重前的總數:1040
list2=set(list1)
print‘(去重后的總數:,len(list2))//去重后的總數:68
2.2.2????? 特征去重
結合相關的數學和統計學知識,要去除連續的特征重復,可以利用特征間的相似度將兩個相似度為1的特征去除一個。在pandas中,相似度的計算方法為corr。例如使用pearson法求出表中的counts和amounts兩列的相似度矩陣,部分代碼如下所示:
#求出銷量和售價的相似度
corrDet=detail[‘[count,amounts]].corr(method=pearson)
print‘(銷量和售價的pearson法相似度矩陣為:,corrDet)
打印輸出:
銷量和售價的pearson法相似度矩陣為:
Counts amounts
counts?? 1.0? 0.8321
amounts0.8321?? 10
2.2.3????? 檢測與處理缺失值
數據中的某個或某些特征的值是不完整的,這些值稱為缺失值。pandas提供了識別缺失值的方法isnull以及識別非缺失值的方法notnull,這兩種方法在使用是返回的都是布爾值。結合sum函數和isnull、notnull函數,可以檢測數據中缺失值的分布以及數據中一共含有多少個缺失值。部分關鍵代碼如下:
print‘(detail每個特征缺失的數目為:\n,detail.isnull().sum())
print‘(detail每個特征非缺失值的數目為:\n,detail.notnull().sum())
2.2.4????? 檢測與處理異常值
異常值是指數據中個別值的數值明顯偏離其余的數值,也稱為離群點,檢測異常值就是檢驗數據中是否有輸入錯誤以及是否含有不合理的數據。異常值的存在對數據分析十分危險,如果計算分析過程中的數據有異常值,會對計算結果產生不良的影響,從而會導致分析結果產生偏差乃至錯誤。常用的異常值檢測主要有3σ原則和箱線圖分析兩種方法。
3σ原則又稱為拉依達準則。該原則就是先假設一組檢測數據只含有隨機誤差,對原始數據進行計算處理得到標準差,然后按一定的概率確定一個區間,認為誤差超過這個區間就屬于異常。該判別處理方法適用于對正態或近似正態分布的樣本數據進行處理。
箱體圖分析法提供了識別異常值的一個標準,即異常值通常被定義為小于QL-1.5IQR或大于QU+1.5IQR的值。其中QL稱為下四分位數,表示全部觀察值中有四分之一的數據取值比它小;QU稱為上四分位數,表示全部觀察值中有四分之一的數據取值比它大;IQR稱為四分位數的間距,是上四分位數QU與下四分位數QL之差,其間包含了全部觀察值的一半。
2.3? 標準化數據
不同的特征之間往往具有不同的量綱,由此所造成的數值間的差異可能很大,在涉及空間距離計算或梯度下降法等情況時,不對其進行處理會影響到數據分析結果的準確性,為了消除特征之間量綱和取值范圍差異可能會造成的影響,需要對數據進行標準化處理。
2.3.1????? 離差標準化數據
離差標準化數據是對原始數據的一種線性變換,結果是將原始數據的數值映射到[0.1]區間,其轉換公式如下所示:
X*=(X-min)/(max-min),其中,max為樣本數據的最大值,min為樣本數據的最小值,max-min為極差。離差標準化保留了原始數據值之間的聯系,是消除量綱和數據取值范圍最簡單的方法。
2.3.2????? 標準差標準化數據
標準差標準化是當前使用最廣泛的數據標準化方法。經過該方法處理的數據均值為0,標準差為1,其轉換公式如下所示:
其中μ為所有樣本數據的均值,σ為所有樣本數據的標準差。
2.4轉換數據
數據即使經過了清洗、合并和標準化以后,還不能直接拿來做分析建模,為了能夠將數據分析工作繼續進行,需要對數據做一些合理的轉換,使之符合分析要求。
常用的轉換數據處理方法如下:
(1) 啞變量處理類別型數據
(2) 使用等寬法、等頻法和聚類分析方法離散化連續型數據
3總結
本文先介紹數據預處理技術的特點和作用,并詳細說明數據預處理的四種技術:數據合并,數據清洗,數據標準化,數據轉換的定義和應用,這四種技術并不存在嚴格的先后關系,在實際工作中往往交叉進行。本文對于從事大數據和人工智能的人員具有一定參考意義和幫助作用。
參考文獻:
[1] 談文蓉,王金壅等.城市地下管網運維大數據預處理技術研究[J],西南民族大學學報(自然科學版),2020(7).
[2] 李康.探究大數據處理過程中的數據質量影響[J],網絡安全技術與應用,2020(8).
作者簡介:
翟高粵(1975.11-),男(漢),廣西欽州,碩士,副教授,研究方向:軟件理論,人工智能