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