《Python與數(shù)據(jù)分析應(yīng)用》課件-第12章 數(shù)據(jù)聚合與分組運(yùn)算_第1頁(yè)
《Python與數(shù)據(jù)分析應(yīng)用》課件-第12章 數(shù)據(jù)聚合與分組運(yùn)算_第2頁(yè)
《Python與數(shù)據(jù)分析應(yīng)用》課件-第12章 數(shù)據(jù)聚合與分組運(yùn)算_第3頁(yè)
《Python與數(shù)據(jù)分析應(yīng)用》課件-第12章 數(shù)據(jù)聚合與分組運(yùn)算_第4頁(yè)
《Python與數(shù)據(jù)分析應(yīng)用》課件-第12章 數(shù)據(jù)聚合與分組運(yùn)算_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

第十二章數(shù)據(jù)聚合與分組運(yùn)算

在此輸入副標(biāo)題·分組與聚合的原理·分組操作·數(shù)據(jù)聚合·分組級(jí)運(yùn)算熟悉掌握掌握掌握

1234學(xué)習(xí)目標(biāo)熟悉分組與聚合的原理掌握分組級(jí)運(yùn)算掌握通過(guò)groupby()方法將數(shù)據(jù)分組掌握數(shù)據(jù)聚合12.112.212.312.4目錄CONTENTS分組與聚合的原理

通過(guò)groupby()方法將數(shù)據(jù)拆分成組數(shù)據(jù)聚合分組級(jí)運(yùn)算

第一部分PART0112.1分組與聚合的原理Pandas官方參考文檔地址是http:///pandas-docs/stable/groupby.html。在Pandas中,分組是指使用特定的條件將原數(shù)據(jù)劃分為多個(gè)組,聚合在這里指的是,對(duì)每個(gè)分組中的數(shù)據(jù)執(zhí)行某些操作,最后將計(jì)算的結(jié)果進(jìn)行整合。12.1分組與聚合的原理分組與聚合的過(guò)程大概分為以下三步:拆分將數(shù)據(jù)集按照一些標(biāo)準(zhǔn)拆分為若干個(gè)組。應(yīng)用將某個(gè)函數(shù)或方法(內(nèi)置和自定義均可)應(yīng)用到每個(gè)分組。合并將產(chǎn)生的新值整合到結(jié)果對(duì)象中。12.1分組與聚合的原理分組與聚合的原理12.1分組與聚合的原理

第二部分PART0212.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組在Pandas中,可以通過(guò)groupby()方法將數(shù)據(jù)集按照某些標(biāo)準(zhǔn)劃分成若干個(gè)組。by:用于確定進(jìn)行分組的依據(jù)。axis:表示分組軸的方向。sort:表示是否對(duì)分組標(biāo)簽進(jìn)行排序,接收布爾值,默認(rèn)為T(mén)rue。groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,observed=False,**kwargs)12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組groupby()方法會(huì)返回一個(gè)GroupBy對(duì)象,該對(duì)象實(shí)際上并沒(méi)有進(jìn)行任何計(jì)算,只是包含一些關(guān)于分組鍵的中間數(shù)據(jù)而已。使用Series調(diào)用groupby()方法返回的是SeriesGroupBy對(duì)象。使用DataFrame調(diào)用groupby()方法返回的是DataFrameBy對(duì)象。12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組通過(guò)groupby()方法的by參數(shù)可以指定按什么標(biāo)準(zhǔn)分組,該參數(shù)可以接收的數(shù)據(jù)主要有以下4種:列表或數(shù)組DataFrame某列字典或Series對(duì)象函數(shù)12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組按列名進(jìn)行分組

如果DataFrame對(duì)象的某一列數(shù)據(jù)符合劃分成組的標(biāo)準(zhǔn),則可以將該列當(dāng)做分組鍵來(lái)拆分?jǐn)?shù)據(jù)集。df.groupby(by='Key')<DataFrameGroupByobjectat

0x0000000006E274A8>12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組如果要查看每個(gè)分組的具體內(nèi)容,則可以使用for循環(huán)遍歷DataFrameGroupBy對(duì)象。group_obj=df.groupby('Key')#遍歷分組對(duì)象foriingroup_obj:print(i)12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組按Series對(duì)象進(jìn)行分組

還可以將自定義的Series類(lèi)對(duì)象作為分組鍵進(jìn)行分組。ser_obj=pd.Series(['a','b','c','a','b'])#按自定義Series對(duì)象進(jìn)行分組group_obj=df.groupby(by=ser_obj)12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組思考:如果Series對(duì)象的長(zhǎng)度與原數(shù)據(jù)的行索引長(zhǎng)度不相等時(shí),那么在分組時(shí)會(huì)怎么樣呢?12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組如果Series對(duì)象與Pandas對(duì)象的索引長(zhǎng)度不相同時(shí),則只會(huì)將具有相同索引的部分?jǐn)?shù)據(jù)進(jìn)行分組。df=se=pd.Series(['a','a','b'])group_obj=df.groupby(se)['one','two','one','two','one'],'data1':[2,3,4,6,8],'data2':[3,5,6,3,7]})se=pd.Series(['a','a','b'])group_obj=df.groupby(se)12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組按字典進(jìn)行分組

當(dāng)使用字典對(duì)DataFrame進(jìn)行分組時(shí),則需要確定軸的方向及字典中的映射關(guān)系,即字典中的鍵為列名,字典的值為自定義的分組名。mapping={'a':'第一組','b':'第二組','c':'第一組','d':'第三組','e':'第二組'}by_column=num_df.groupby(mapping,axis=1)12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組按函數(shù)進(jìn)行分組將函數(shù)作為分組鍵會(huì)更加靈活,任何一個(gè)被當(dāng)做分組鍵的函數(shù)都會(huì)在各個(gè)索引值上被調(diào)用一次,返回的值會(huì)被用作分組名稱。#使用內(nèi)置函數(shù)len進(jìn)行分組groupby_obj=df.groupby(len)12.2通過(guò)groupby()方法將數(shù)據(jù)拆分成組

第三部分PART0312.3數(shù)據(jù)聚合前面介紹過(guò)的Pandas統(tǒng)計(jì)方法,比如用于獲取最大值和最小值的max()和mix(),這些方法常用于簡(jiǎn)單地聚合分組中的數(shù)據(jù)。#按key1進(jìn)行分組,求每個(gè)分組的平均值df.groupby('key1').mean()12.3.1使用內(nèi)置統(tǒng)計(jì)方法聚合數(shù)據(jù)如果內(nèi)置方法無(wú)法滿足聚合要求時(shí),則可以自定義函數(shù),將它作為參數(shù)傳給agg()方法,實(shí)現(xiàn)Pandas對(duì)象的聚合運(yùn)算。func:表示用于匯總數(shù)據(jù)的函數(shù),可以為單個(gè)函數(shù)或函數(shù)列表。axis:表示函數(shù)作用于軸的方向,0或index表示將函數(shù)應(yīng)用到每一列;1或columns表示將函數(shù)應(yīng)用到每一行,該參數(shù)的默認(rèn)值為0。agg(func,axis=0,*args,**kwargs)12.3.2面向列的聚合方法對(duì)每一列數(shù)據(jù)應(yīng)用同一個(gè)函數(shù)通過(guò)agg()方法進(jìn)行聚合,最簡(jiǎn)單的方式就是給該方法的func參數(shù)傳入一個(gè)函數(shù),這個(gè)函數(shù)既可以是內(nèi)置的,也可以自定義的。defrange_data_group(arr):returnarr.max()-arr.min()#使用自定義函數(shù)聚合分組數(shù)據(jù)data_group.agg(range_data_group)

12.3.2面向列的聚合方法對(duì)某列數(shù)據(jù)應(yīng)用不同的函數(shù)

可以將兩個(gè)函數(shù)的名稱放在列表中,之后在調(diào)用agg()方法進(jìn)行聚合時(shí)作為參數(shù)傳入即可。#對(duì)一列數(shù)據(jù)用兩種函數(shù)聚合data_group.agg([range_data_group,sum])12.3.2面向列的聚合方法雖然每一列可以應(yīng)用不同的函數(shù),但是結(jié)果并不能很直觀地辨別出每個(gè)函數(shù)代表的含義。12.3.2面向列的聚合方法為了能更好地反映出每列數(shù)據(jù)的信息,可以使用“(name,function)”元組將function(函數(shù)名)替換為name(自定義名稱)。data_group.agg([("極差",range_data_group),("和",sum)])12.3.2面向列的聚合方法對(duì)不同列數(shù)據(jù)應(yīng)用不同函數(shù)

如果希望對(duì)不同的列使用不同的函數(shù),則可以在agg()方法中傳入一個(gè){"列名":"函數(shù)名"}格式的字典。data_group.agg({'a':'sum','b':'mean','c':range_data_group})12.3.2面向列的聚合方法agg()方法執(zhí)行聚合操作時(shí),會(huì)將一組標(biāo)量值參與某些運(yùn)算后轉(zhuǎn)換為一個(gè)標(biāo)量值。12.3.2面向列的聚合方法

第四部分PART0412.4

分組級(jí)運(yùn)算思考:如果希望聚合后的數(shù)據(jù)與原數(shù)據(jù)保持一樣的形狀,應(yīng)該怎么做呢?12.4數(shù)據(jù)轉(zhuǎn)換如果希望保持與原數(shù)據(jù)集形狀相同,那么可以通過(guò)transfrom()方法實(shí)現(xiàn)。上述方法中只有一個(gè)func參數(shù),表示操作Pandas對(duì)象的函數(shù)。transfrom()方法會(huì)把func函數(shù)應(yīng)用到各個(gè)分組中,并且將計(jì)算結(jié)果放在適當(dāng)?shù)奈恢蒙?。transform(func,

*args,

**kwargs)12.4數(shù)據(jù)轉(zhuǎn)換transform()方法返回的結(jié)果有兩種,一種是可以廣播的標(biāo)量值(np.mean),另一種可以是與分組大小相同的結(jié)果數(shù)組。12.4數(shù)據(jù)轉(zhuǎn)換apply()方法的使用是十分靈活的,它可以在許多標(biāo)準(zhǔn)用例中替代聚合和轉(zhuǎn)換,另外還可以處理一些比較特殊的用例。func:表示應(yīng)用于某一行或某一列的函數(shù)。axis:表示函數(shù)操作的軸向。broadcast:表示是否將數(shù)據(jù)進(jìn)行廣播。apply(func,axis=0,broadcast=None,r

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論