溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于python的大數(shù)據(jù)分析-數(shù)據(jù)處理(代碼實(shí)戰(zhàn))

發(fā)布時間:2020-06-17 20:02:00 來源:網(wǎng)絡(luò) 閱讀:752 作者:小強(qiáng)測試 欄目:軟件技術(shù)

接著上篇繼續(xù)。數(shù)據(jù)獲取之后并不能直接分析或使用,因?yàn)槔锩嬗泻芏酂o效的垃圾數(shù)據(jù),所以必須要經(jīng)過處理才可以。數(shù)據(jù)處理的主要內(nèi)容包括數(shù)據(jù)清洗、數(shù)據(jù)抽取、數(shù)據(jù)交換和數(shù)據(jù)計算等。

數(shù)據(jù)清洗

數(shù)據(jù)清洗是數(shù)據(jù)價值鏈中最關(guān)鍵的一步。垃圾數(shù)據(jù)即使是通過最好的分析也可能會產(chǎn)生錯誤的結(jié)果,并造成較大的誤導(dǎo)。

數(shù)據(jù)清洗就是處理缺失數(shù)據(jù)以及清除無意義的信息,如刪除原始數(shù)據(jù)集中的無關(guān)數(shù)據(jù)、重復(fù)數(shù)據(jù)、平滑噪音數(shù)據(jù),篩選掉與分析主題無關(guān)的數(shù)據(jù)等等。

重復(fù)值的處理

步驟如下:

1 利用DataFrame中的duplicated方法返回一個布爾型的Series,顯示是否有重復(fù)行。沒有顯示FALSE,有則從重復(fù)的第二行起顯示為TRUE

2 在利用DataFrame中的drop_duplicates方法返回一個移除了重復(fù)行的DataFrame

duplicated的格式:

duplicated(subset=None, keep='first')

括號中的參數(shù)均為可選,不寫默認(rèn)判斷全部列

subset用于識別重復(fù)的列標(biāo)簽或列標(biāo)簽序號,默認(rèn)是所有的列標(biāo)簽

keep為first表示除了第一次出現(xiàn)外,其余相同的數(shù)據(jù)被標(biāo)記為重復(fù);為last表示除了最后一次外,其余相同的數(shù)據(jù)被標(biāo)記為重復(fù);為false表示所有相同的數(shù)據(jù)都被標(biāo)記為重復(fù)

drop_duplicates的格式:

drop_duplicates()

如果你想指定某個列就在括號里加入列名即可

from?pandas?import?DataFrame
from?pandas?import?Series

#造數(shù)據(jù)
df=DataFrame({'age':Series([26,85,85]),'name':Series(['xiaoqiang1','xiaoqiang2','xiaoqiang2'])})
df

#判斷是否有重復(fù)行
df.duplicated()

#移除重復(fù)行
df.drop_duplicates()

缺失值的處理

缺失值的處理一般包括兩個步驟,分別是缺失數(shù)據(jù)的識別和缺失數(shù)據(jù)的處理。

缺失數(shù)據(jù)的識別

pandas使用浮點(diǎn)值NaN表示浮點(diǎn)和非浮點(diǎn)數(shù)組里的缺失數(shù)據(jù),并使用isnull和notnull函數(shù)來判斷缺失情況。


#缺失數(shù)據(jù)的識別
from?pandas?import?DataFrame
from?pandas?import?read_excel

#有缺失數(shù)據(jù)
df=read_excel(r'D:python_workspaceanacondarz.xlsx',?sheetname='Sheet2')
df

#識別缺失數(shù)據(jù),NaN的就會顯示True。notnull函數(shù)正好相反
df.isnull()



rz.xlsx的內(nèi)容如下

基于python的大數(shù)據(jù)分析-數(shù)據(jù)處理(代碼實(shí)戰(zhàn))

缺失數(shù)據(jù)的處理

對于缺失數(shù)據(jù)的處理有數(shù)據(jù)補(bǔ)齊、刪除對應(yīng)的行、不處理。這里直接擼代碼解釋

#接著上面的繼續(xù),進(jìn)行數(shù)據(jù)的處理
#去除數(shù)據(jù)中值為空的數(shù)據(jù)行
newdf=df.dropna()
newdf

#用其他數(shù)值代替NaN
newdf2=df.fillna('--')
newdf2

#用前一個數(shù)據(jù)值代替NaN
newdf3=df.fillna(method='pad')
newdf3

#用后一個數(shù)據(jù)值代替NaN
newdf4=df.fillna(method='bfill')
newdf4

#傳入一個字典對不同的列填充不同的值
newdf5=df.fillna({'數(shù)分':100,'高代':99})
newdf5

#用平均數(shù)來代替NaN。會自動計算有NaN兩列的數(shù)據(jù)的平均數(shù)
newdf6=df.fillna(df.mean())
newdf6

#還可以使用strip()來去除數(shù)據(jù)左右的指定字符,這個是python的基礎(chǔ)了,這里不做演示了


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI