3-python-數(shù)據(jù)清洗模塊簡(jiǎn)介_第1頁
3-python-數(shù)據(jù)清洗模塊簡(jiǎn)介_第2頁
3-python-數(shù)據(jù)清洗模塊簡(jiǎn)介_第3頁
3-python-數(shù)據(jù)清洗模塊簡(jiǎn)介_第4頁
3-python-數(shù)據(jù)清洗模塊簡(jiǎn)介_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Python基礎(chǔ)知識(shí)西南財(cái)經(jīng)大學(xué)

管理科學(xué)與工程學(xué)院王俊目錄一、讀取數(shù)據(jù),預(yù)處理數(shù)據(jù)集二、識(shí)別并處理缺失值三、識(shí)別并處理異常值四、識(shí)別并處理重復(fù)值

一、讀取數(shù)據(jù),預(yù)處理數(shù)據(jù)集

臟數(shù)據(jù)由于記錄或者儲(chǔ)存的原因,導(dǎo)致部分?jǐn)?shù)據(jù)缺失、重復(fù)、異常、錯(cuò)誤,沒有分析意義,就叫做“臟數(shù)據(jù)”。數(shù)據(jù)清洗把“臟數(shù)據(jù)”識(shí)別出來,并進(jìn)行刪除、填補(bǔ)、修正等一系列處理的過程,就叫做“數(shù)據(jù)清洗”。

一、讀取數(shù)據(jù),預(yù)處理數(shù)據(jù)集

缺失值由于記錄或讀取的原因,在應(yīng)該有數(shù)據(jù)的地方,出現(xiàn)了空白,這就是缺失值。缺失值在一個(gè)DataFrame中,會(huì)被標(biāo)記為NaN或者null。異常值指的是不合理的數(shù)據(jù)。需要根據(jù)具體的案例,進(jìn)行判斷。例如:在應(yīng)該全是正數(shù)的數(shù)據(jù)中,出現(xiàn)了負(fù)數(shù);在應(yīng)該全是非零值的數(shù)據(jù)中,出現(xiàn)了0;出現(xiàn)了不可能出現(xiàn)的數(shù)值等等。重復(fù)值指的是在不該重復(fù)的地方,出現(xiàn)了異常的重復(fù)。比如,在某銷售數(shù)據(jù)集中,訂單號(hào)order_id應(yīng)該是唯一的。而當(dāng)出現(xiàn)了重復(fù)的訂單號(hào),這就是異常的重復(fù)。

二、識(shí)別并處理缺失值

1.識(shí)別缺失值在pandas中,檢查缺失值,我們可以使用info()函數(shù),判斷哪一列存在缺失值。

然后,再使用isnull()函數(shù),判斷缺失值是在這一列的哪一行,從而實(shí)現(xiàn)定位。(1)info()函數(shù)輸出后快速瀏覽數(shù)據(jù)集。info()函數(shù)會(huì)直接將結(jié)果輸出出來,因此我們不需要用print。

import

pandas

as

pddf

=

pd.read_csv(路徑)df['pay_time']

=

pd.to_datetime(df['pay_time'])#數(shù)據(jù)預(yù)處理()#

輸出(),快速瀏覽數(shù)據(jù)集二、識(shí)別并處理缺失值(1)info()函數(shù)我們可以看到,這組數(shù)據(jù)其他列一共有78049行的非空數(shù)據(jù)。

但platform這一列僅有77645行非空數(shù)據(jù)。說明在這一列,有384個(gè)缺失值。

payment_provider這一列僅有78029行非空數(shù)據(jù)。說明在這一列,有20個(gè)缺失值。二、識(shí)別并處理缺失值(2)isnull()函數(shù)info()函數(shù),可以幫助我們定位哪些列存在空值。isnull()函數(shù)可以在一列中,找到哪一行是空值。isnull()函數(shù)會(huì)對(duì)每一個(gè)數(shù)據(jù)是否為缺失值進(jìn)行判斷。缺失值返回為True,不是缺失值返回為False。從而生成一列布爾類型的Series。值是True的地方,就是缺失值所在的地方。print(df['platform'].isnull())二、識(shí)別并處理缺失值2.處理缺失值缺失值的處理,有3種方式:

刪除所在行;補(bǔ)全缺失值;重選數(shù)據(jù)集。(1)刪除所在行如果缺失值的數(shù)量非常少,我們可以選擇將缺失值所在的這一行刪除。例如7.8萬行數(shù)據(jù)中,僅僅有400多個(gè)缺失值時(shí),刪除對(duì)于分析不構(gòu)成決定性影響。在刪除有缺失值的那一行數(shù)據(jù)時(shí),會(huì)用到drop()函數(shù)。drop(index=,axis=,inplace=)index表示刪除條件;axis=1刪除某列,axis=0刪除某行;inplace默認(rèn)情況下為False,表示原數(shù)據(jù)不變,True表示在原來的數(shù)據(jù)上改變。二、識(shí)別并處理缺失值例:數(shù)據(jù)清洗(刪除某行)#先將缺失值識(shí)別出來,并建立一個(gè)新的數(shù)據(jù)集(該數(shù)據(jù)集使用isnull函數(shù)識(shí)別空值后,將空值自動(dòng)返回True)dfPayNull=df[df[‘payment_provider’].isnull()]

#再刪除df.drop(index=dfPayNull.index,inplace=True)或者:df.drop(dfPayNull.index,inplace=True)二、識(shí)別并處理缺失值例:數(shù)據(jù)清洗(刪除某行)import

pandas

as

pd

data=pd.read_excel('E:\python

code\machine

learning\cluster\kmeans\data\G.xlsx')print(data)#1data_NUll=data[data['2019年'].isnull()]print(data_NUll)#2data.drop(index=data_NUll.index,inplace=True)print(data)#3#1二、識(shí)別并處理缺失值例:數(shù)據(jù)清洗(刪除某行)import

pandas

as

pd

data=pd.read_excel('E:\python

code\machine

learning\cluster\kmeans\data\G.xlsx')print(data)#1:打印原始數(shù)據(jù)data_NUll=data[data['2019年'].isnull()]print(data_NUll)#2:刪選缺失值值所在行data.drop(index=data_NUll.index,inplace=True)print(data)#3:刪除缺失值所在行#1#2#3二、識(shí)別并處理缺失值例:import

pandas

as

pddata={'A':[1,2,3,4],"B":[3,5,7,8],"C":[5,6,8,9],"D":[2,4,7,9]}df=pd.DataFrame(data)print(df)#1

df.drop(“A”,axis=1,inplace=True)#刪除列(列固定之后,刪除每一行)print(df)#2df.drop(1,axis=0,inplace=True)#刪除行(行固定之后,刪除每一列)print(df)#3123二、識(shí)別并處理缺失值(2)補(bǔ)全缺失值如果缺失值的數(shù)量較多,并且缺失值所在的這一列(這一個(gè)屬性),并不是我們分析的重點(diǎn)時(shí),可以對(duì)缺失值進(jìn)行補(bǔ)全。因?yàn)閿?shù)量較大,直接刪除會(huì)缺失很多數(shù)據(jù),讓數(shù)據(jù)變得不完整,也就會(huì)喪失其中的一些規(guī)律。在pandas中,補(bǔ)全數(shù)據(jù)我們會(huì)使用到fillna()函數(shù)。df[‘columns’].fillna(“XXX",inplace=)

columns:需要補(bǔ)全的列XXX:補(bǔ)的內(nèi)容inplace默認(rèn)情況下為False,表示原數(shù)據(jù)不變,True表示在原來的數(shù)據(jù)上改變。例:數(shù)據(jù)清洗(補(bǔ)全缺失值)df[‘payment_provider’].fillna(“wxpay”,inplace=True)#將ayment_provider列中缺失的數(shù)據(jù),補(bǔ)全為“wxpay”

二、識(shí)別并處理缺失值(3)重選數(shù)據(jù)集如果缺失值的數(shù)量較多,并且這一列,這個(gè)屬性是分析的重點(diǎn)時(shí)。那么我們就需要直接放棄這個(gè)數(shù)據(jù)集,重新采集數(shù)據(jù)。因?yàn)槿笔е递^多,會(huì)丟失數(shù)據(jù)的原貌。刪除后剩下的數(shù)據(jù)就喪失了統(tǒng)計(jì)的意義。也無法補(bǔ)全,因此需要重新采集數(shù)據(jù)。三、識(shí)別并處理異常值異常值面對(duì)異常值,我們通常需要挨個(gè)進(jìn)行檢查,并處理,以確保數(shù)據(jù)清洗的有效性。1.識(shí)別異常值(1)函數(shù)isin(),對(duì)列對(duì)象執(zhí)行判斷:列對(duì)象的元素,是否在傳入isin()中的元素中。如果是,則返回True;如果不是,就返回False。使用一個(gè)~運(yùn)算符,作用是取反。print(df['columns'].isin([XX,XX]))columns:需要判斷的列對(duì)象XX:需要判斷的元素例:print(~df[‘price’].isin([25.00,68.00,248.00]))#打印判斷price列中是否存在25.00,68.00,248.00這樣的元素,如果不存在,返回True(使用了~取反),并且打印出來

三、識(shí)別并處理異常值(2)使用布爾索引進(jìn)行判斷2.處理異常值drop()函數(shù)等

四、識(shí)別并處理重復(fù)值

重復(fù)值:指的是異常的重復(fù)情況duplicated()函數(shù),判斷重復(fù)的機(jī)制:是會(huì)把出現(xiàn)相同值的第二個(gè)及以后的數(shù)據(jù),判斷為True。這樣,保證每個(gè)數(shù)據(jù)都保留一個(gè)唯一值。例:print(df['order_id'].duplicated())

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論