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

下載本文檔

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

文檔簡介

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

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

1234學習目標熟悉分組與聚合的原理掌握分組級運算掌握通過groupby()方法將數(shù)據(jù)分組掌握數(shù)據(jù)聚合12.112.212.312.4目錄CONTENTS分組與聚合的原理

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

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

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

如果DataFrame對象的某一列數(shù)據(jù)符合劃分成組的標準,則可以將該列當做分組鍵來拆分數(shù)據(jù)集。df.groupby(by='Key')<DataFrameGroupByobjectat

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

還可以將自定義的Series類對象作為分組鍵進行分組。ser_obj=pd.Series(['a','b','c','a','b'])#按自定義Series對象進行分組group_obj=df.groupby(by=ser_obj)12.2通過groupby()方法將數(shù)據(jù)拆分成組思考:如果Series對象的長度與原數(shù)據(jù)的行索引長度不相等時,那么在分組時會怎么樣呢?12.2通過groupby()方法將數(shù)據(jù)拆分成組如果Series對象與Pandas對象的索引長度不相同時,則只會將具有相同索引的部分數(shù)據(jù)進行分組。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通過groupby()方法將數(shù)據(jù)拆分成組按字典進行分組

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

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

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

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

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

第四部分PART0412.4

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

*args,

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

溫馨提示

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

最新文檔

評論

0/150

提交評論