《數(shù)據(jù)挖掘技術(shù)與應(yīng)用:使用pandas進(jìn)行數(shù)據(jù)預(yù)處理課件》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)挖掘技術(shù)與應(yīng)用:使用pandas進(jìn)行數(shù)據(jù)預(yù)處理課件(44頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,二級,三級,四級,五級,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,二級,三級,四級,五級,數(shù)據(jù),挖掘,技術(shù)與,應(yīng)用,數(shù)據(jù)挖掘技術(shù)與應(yīng)用,1,清洗數(shù)據(jù),目錄,合并數(shù)據(jù),2,標(biāo)準(zhǔn)化數(shù)據(jù),3,轉(zhuǎn)換數(shù)據(jù),4,小結(jié),5,1清洗數(shù)據(jù)目錄合并數(shù)據(jù)2標(biāo)準(zhǔn)化數(shù)據(jù)3轉(zhuǎn)換數(shù)據(jù)4小結(jié)5,橫向堆疊,即將兩個(gè)表在,X,軸向拼接在一起,可以使用,concat,函數(shù)完成,,concat,函數(shù)的基本語法如下。,pandas.,concat,(objs,axis=0,join=outer,join_axes=None,ignore_index=False,keys=N
2、one,levels=None,names=None,verify_integrity=False,copy=True),常用參數(shù)如下所示。,堆疊合并數(shù)據(jù),1.,橫向表堆疊,參數(shù)名稱,說明,objs,接收多個(gè),Series,,,DataFrame,,,Panel,的組合。表示參與鏈接的,pandas,對象的列表的組合。無默認(rèn)。,axis,接收,0,或,1,。表示連接的軸向,默認(rèn)為,0,。,join,接收,inner,或,outer,。表示其他軸向上的索引是按交集(,inner,)還是并集(,outer,)進(jìn)行合并。默認(rèn)為,outer,。,join_axes,接收,Index,對象。表示用于其他
3、,n-1,條軸的索引,不執(zhí)行并集交集運(yùn)算。,橫向堆疊,即將兩個(gè)表在X軸向拼接在一起,可以使用concat,參數(shù)名稱,說明,ignore_index,接收,boolean,。表示是否不保留連接軸上的索引,產(chǎn)生一組新索引,range(total_length),。默認(rèn)為,False,。,keys,接收,sequence,。表示與連接對象有關(guān)的值,用于形成連接軸向上的層次化索引。默認(rèn)為,None,。,levels,接收包含多個(gè),sequence,的,list,。表示在指定,keys,參數(shù)后,指定用作層次化索引各級別上的索引。默認(rèn)為,None,。,names,接收,list,。表示在設(shè)置了,keys,
4、和,levels,參數(shù)后,用于創(chuàng)建分層級別的名稱。默認(rèn)為,None,。,verify_integrity,接收,boolearn,。表示是否檢查結(jié)果對象新軸上的重復(fù)情況,如果發(fā)現(xiàn)則引發(fā)異常。默認(rèn)為,False,。,堆疊合并數(shù)據(jù),1.,橫向表堆疊,參數(shù)名稱說明ignore_index接收boolean。表示,當(dāng),axis=1,的時(shí)候,,concat,做行對齊,然后將不同列名稱的兩張或多張表合并。當(dāng)兩個(gè)表索引不完全一樣時(shí),可以使用,join,參數(shù)選擇是內(nèi)連接還是外連接。在內(nèi)連接的情況下,僅僅返回索引重疊部分。在外連接的情況下,則顯示索引的并集部分?jǐn)?shù)據(jù),不足的地方則使用空值填補(bǔ),。,當(dāng)兩張表完全一樣
5、時(shí),不論,join,參數(shù)取值是,inner,或者,outer,,結(jié)果都是將兩個(gè)表完全按照,X,軸拼接起來,。,堆疊合并數(shù)據(jù),1.,橫向表堆疊,當(dāng)axis=1的時(shí)候,concat做行對齊,然后將不同列名稱,使用,concat,函數(shù)時(shí),在默認(rèn)情況下,即,axis=0,時(shí),,concat,做列對齊,將不同行索引的兩張或多張表縱向合并。在兩張表的列名并不完全相同的情況下,可,join,參數(shù)取值為,inner,時(shí),返回的僅僅是列名交集所代表的列,取值為,outer,時(shí),返回的是兩者列名的并集所代表的列,其原理示意如,圖。,不論,join,參數(shù)取值是,inner,或者,outer,,結(jié)果都是將兩個(gè)表完全按
6、照,Y,軸拼接起來,堆疊合并數(shù)據(jù),2.,縱向堆疊,concat,函數(shù),使用concat函數(shù)時(shí),在默認(rèn)情況下,即axis=0時(shí),co,append,方法也可以用于縱向合并兩張表。但是,append,方法實(shí)現(xiàn)縱向表堆疊有一個(gè)前提條件,那就是兩張表的列名需要完全一致。,append,方法的基本語法如下,pandas.DataFrame.,append,(self,other,ignore_index=False,verify_integrity=False),。,常用參數(shù)如下所示。,堆疊合并數(shù)據(jù),2.,縱向堆疊,append,方法,參數(shù)名稱,說明,other,接收,DataFrame,或,Serie
7、s,。表示要添加的新數(shù)據(jù)。無默認(rèn)。,ignore_index,接收,boolean,。如果輸入,True,,會對新生成的,DataFrame,使用新的索引(自動產(chǎn)生)而忽略原來數(shù)據(jù)的索引。默認(rèn)為,False,。,verify_integrity,接收,boolean,。如果輸入,True,,那么當(dāng),ignore_index,為,False,時(shí),會檢查添加的數(shù)據(jù)索引是否沖突,如果沖突,則會添加失敗。默認(rèn)為,False,。,append方法也可以用于縱向合并兩張表。但是append方,主鍵合并,即通過一個(gè)或多個(gè)鍵將兩個(gè)數(shù)據(jù)集的行連接起來,類似于,SQL,中的,JOIN,。針對同一個(gè)主鍵存在兩張包含
8、不同字段的表,將其根據(jù)某幾個(gè)字段一一對應(yīng)拼接起來,結(jié)果集列數(shù)為兩個(gè)元數(shù)據(jù)的列數(shù)和減去連接鍵的數(shù)量,。,主鍵合并數(shù)據(jù),主鍵合并,主鍵合并,即通過一個(gè)或多個(gè)鍵將兩個(gè)數(shù)據(jù)集的行連接起來,類似于,和數(shù)據(jù)庫的,join,一樣,,merge,函數(shù)也有左連接(,left,)、右連接(,right,)、內(nèi)連接(,inner,)和外連接(,outer,),但比起數(shù)據(jù)庫,SQL,語言中的,join,和,merge,函數(shù)還有其自身獨(dú)到之處,例如可以在合并過程中對數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行排序等。,pandas.,merge,(left,right,how=inner,on=None,left_on=None,right_o
9、n=None,left_index=False,right_index=False,sort=False,suffixes=(_x,_y),copy=True,indicator=False),可根據(jù),merge,函數(shù)中的參數(shù)說明,并按照需求修改相關(guān)參數(shù),就可以多種方法實(shí)現(xiàn)主鍵合并,。,主鍵合并數(shù)據(jù),主鍵合并,merge,函數(shù),和數(shù)據(jù)庫的join一樣,merge函數(shù)也有左連接(left),參數(shù)名稱,說明,left,接收,DataFrame,或,Series,。表示要添加的新數(shù)據(jù)。無默認(rèn)。,right,接收,DataFrame,或,Series,。表示要添加的新數(shù)據(jù)。無默認(rèn)。,how,接收,in
10、ner,,,outer,,,left,,,right,。表示數(shù)據(jù)的連接方式。默認(rèn)為,inner,。,on,接收,string,或,sequence,。表示兩個(gè)數(shù)據(jù)合并的主鍵(必須一致)。默認(rèn)為,None,。,left_on,接收,string,或,sequence,。表示,left,參數(shù)接收數(shù)據(jù)用于合并的主鍵。默認(rèn)為,None,。,right_on,接收,string,或,sequence,。表示,right,參數(shù)接收數(shù)據(jù)用于合并的主鍵。默認(rèn)為,None,。,left_index,接收,boolean,。表示是否將,left,參數(shù)接收數(shù)據(jù)的,index,作為連接主鍵。默認(rèn)為,False,。,r
11、ight_index,接收,boolean,。表示是否將,right,參數(shù)接收數(shù)據(jù)的,index,作為連接主鍵。默認(rèn)為,False,。,sort,接收,boolean,。表示是否根據(jù)連接鍵對合并后的數(shù)據(jù)進(jìn)行排序。默認(rèn)為,False,。,suffixes,接收接收,tuple,。表示用于追加到,left,和,right,參數(shù)接收數(shù)據(jù)重疊列名的尾綴默認(rèn)為,(_x,_y),。,主鍵合并數(shù)據(jù),常用,參數(shù)及其說明,參數(shù)名稱說明left接收DataFrame或Series。表,join,方法也可以實(shí)現(xiàn)部分主鍵合并的功能,但是,join,方法使用時(shí),兩個(gè)主鍵的名字必須相同,。,pandas.DataFram
12、e.join(self,other,on=None,how=left,lsuffix=,rsuffix=,sort=False),常用參數(shù)說明如下。,主鍵合并數(shù)據(jù),主鍵合并,join,方法,參數(shù)名稱,說明,other,接收,DataFrame,、,Series,或者包含了多個(gè),DataFrame,的,list,。表示參與連接的其他,DataFrame,。無默認(rèn)。,on,接收列名或者包含列名的,list,或,tuple,。表示用于連接的列名。默認(rèn)為,None,。,how,接收特定,string,。,inner,代表內(nèi)連接;,outer,代表外連接;,left,和,right,分別代表左連接和右連
13、接。默認(rèn)為,inner,。,lsuffix,接收,sring,。表示用于追加到左側(cè)重疊列名的末尾。無默認(rèn)。,rsuffix,接收,string,。表示用于追加到右側(cè)重疊列名的末尾。無默認(rèn)。,sort,根據(jù)連接鍵對合并后的數(shù)據(jù)進(jìn)行排序,默認(rèn)為,True,。,join方法也可以實(shí)現(xiàn)部分主鍵合并的功能,但是join方法使,數(shù)據(jù)分析和處理過程中,若,出現(xiàn)兩份數(shù)據(jù)的內(nèi)容幾乎一致的情況,但是某些特征在其中一張表上是完整的,而在另外一張表上的數(shù)據(jù)則是缺失的,時(shí)候,可以用,combine_first,方法進(jìn)行重疊數(shù)據(jù)合并,其原理如,下。,重疊合并數(shù)據(jù),combine_first,方法,數(shù)據(jù)分析和處理過程中若出
14、現(xiàn)兩份數(shù)據(jù)的內(nèi)容幾乎一致的情況,但是,combine_first,的具體用法如下。,pandas.DataFrame.,combine_first,(other),參數(shù)及其說明如下。,重疊合并數(shù)據(jù),combine_first,方法,參數(shù)名稱,說明,other,接收,DataFrame,。表示參與重疊合并的另一個(gè),DataFrame,。無默認(rèn)。,combine_first的具體用法如下。重疊合并數(shù)據(jù)com,1.,堆疊不同時(shí)間的訂單詳情表,訂單詳情表,meal_order_detail1,、,meal_order_detail2,、,meal_order_detail3,具有相同的特征,但數(shù)據(jù)時(shí)間
15、不同,訂單編號也不同,在數(shù)據(jù)分析過程中需要使用全量數(shù)據(jù),故需要將幾張表做縱向堆疊操作,。,2.,主鍵合并訂單詳情表、訂單信息表和客戶信息表,訂單詳情表、訂單信息表和客戶信息表兩兩之間存在相同意義的字段,因此需通過主鍵合并的方式將三張表合并為一張寬表,。,任務(wù)實(shí)現(xiàn),1.堆疊不同時(shí)間的訂單詳情表任務(wù)實(shí)現(xiàn),1,清洗數(shù)據(jù),目錄,合并數(shù)據(jù),2,標(biāo)準(zhǔn)化數(shù)據(jù),3,轉(zhuǎn)換數(shù)據(jù),4,小結(jié),5,1清洗數(shù)據(jù)目錄合并數(shù)據(jù)2標(biāo)準(zhǔn)化數(shù)據(jù)3轉(zhuǎn)換數(shù)據(jù)4小結(jié)5,記錄重復(fù),即一個(gè)或者多個(gè)特征某幾個(gè)記錄的值完全相同,方法一是利用列表(,list,)去重,,自定義去重函數(shù):,方法二是,利用集合(,set,)的元素是唯一的特性去重,,如
16、,dish_set=set(dishes),比較上述兩種方法可以發(fā)現(xiàn),,方法一,代碼冗長。,方法二,代碼簡單了許多,,但,會導(dǎo)致數(shù)據(jù)的排列發(fā)生改變,。,檢測與處理重復(fù)值,1.,記錄重復(fù),def delRep(list1):,list2=,for i in list1:,if i not in list2:,list2.append(i),return list2,記錄重復(fù),即一個(gè)或者多個(gè)特征某幾個(gè)記錄的值完全相同檢測與處理,pandas,提供了一個(gè)名為,drop_duplicates,的去重方法。該方法只對,DataFrame,或者,Series,類型有效。這種方法不會改變數(shù)據(jù)原始排列,并且兼具代碼簡潔和運(yùn)行穩(wěn)定的特點(diǎn),。該,方法不僅支持單一特征的數(shù)據(jù)去重,還能夠依據(jù),DataFrame,的其中一個(gè)或者幾個(gè)特征進(jìn)行去重操作,。,pandas.DataFrame(Series).,drop_duplicates,(self,subset=None,keep=first,inplace=False),檢測與處理重復(fù)值,1.,記錄重復(fù),參數(shù)名稱,說明,subset,接收,string,或,s