版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
通過(guò)groupby()方法
將數(shù)據(jù)拆分成組教師:亢華愛(ài)北京信息職業(yè)技術(shù)學(xué)院商務(wù)數(shù)據(jù)分析與應(yīng)用專業(yè)教學(xué)資源庫(kù)目錄Contents通過(guò)Series對(duì)象進(jìn)行分組通過(guò)列名進(jìn)行分組通過(guò)字典進(jìn)行分組通過(guò)函數(shù)進(jìn)行分組通過(guò)groupby()方法將數(shù)據(jù)拆分成組在Pandas中,可以通過(guò)groupby()方法將數(shù)據(jù)集按照某些標(biāo)準(zhǔn)劃分成若干個(gè)組,該方法的語(yǔ)法格式如下:groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,observed=False,**kwargs)通過(guò)groupby()方法將數(shù)據(jù)拆分成組部分參數(shù)表示的含義如下:(5)sort:表示是否對(duì)分組標(biāo)簽進(jìn)行排序,接收布爾值,默認(rèn)為T(mén)rue。(1)by:用于確定進(jìn)行分組的依據(jù)。(2)axis:表示分組軸的方向,可以為0(表示按行)或1(表示按列),默認(rèn)為0。(3)level:如果某個(gè)軸是一個(gè)Multilndex對(duì)象(索引層次結(jié)構(gòu)),則會(huì)按特定
級(jí)別或多個(gè)級(jí)別分組。(4)as_index:表示聚合后的數(shù)據(jù)是否以組標(biāo)簽作為索引的DataFrame對(duì)象
輸出,接收布爾值,默認(rèn)為T(mén)rue。通過(guò)groupby()方法將數(shù)據(jù)拆分成組該對(duì)象實(shí)際上并沒(méi)有進(jìn)行任何計(jì)算只是包含一些關(guān)于分組鍵(比如df_obj['keyl'])的中間數(shù)據(jù)而已groupby()方法返回一個(gè)GroupBy對(duì)象Series調(diào)用groupby()方法返回SeriesGroupBy對(duì)象DataFrame調(diào)用groupby()方法返回DataFrameBy對(duì)象通過(guò)groupby()方法將數(shù)據(jù)拆分成組列表或數(shù)組,其長(zhǎng)度必須與待分組的軸一樣在進(jìn)行分組時(shí),可以通過(guò)groupby()方法的by參數(shù)來(lái)指定按什么標(biāo)準(zhǔn)分組,by參數(shù)可以接收的數(shù)據(jù)有多種形式,類型也不必相同,常用的分組方式主要有以下4種:函數(shù),用于處理軸索引或索引中的各個(gè)標(biāo)簽Dataframe對(duì)象中某列的名稱字典或Series對(duì)象,給出待分組軸上的值與分組名稱之間的對(duì)應(yīng)關(guān)系1PART通過(guò)列名進(jìn)行分組In[1]:importpandasaspddf=pd.DataFrame({''Key'':['C','B','C','A','B','B','A','C','A'],''Data'':[2,4,6,8,10,1,14,16,18]})dfOut[1]:KeyData0 C 21 B 42 C 63 A 84 B 105 B 16 A 147 C 168 A 18通過(guò)列名進(jìn)行分組在Pandas對(duì)象中,如果它的某一列數(shù)據(jù)滿足不同的劃分標(biāo)準(zhǔn),則可以將該列當(dāng)做分組鍵來(lái)拆分?jǐn)?shù)據(jù)集。例:創(chuàng)建一個(gè)DataFrame對(duì)象,具體代碼如下:In[2]:#按Key列進(jìn)行分組df.groupby(by='Key')Out[2]:<pandas.core.groupby.groupby.DataFrameGroupByobjectat0x00000000Q6E274A8>通過(guò)列名進(jìn)行分組從輸出的結(jié)果可以看出,DataFrame經(jīng)過(guò)分組后得到了一個(gè)DataFrameGroupBy對(duì)象,該對(duì)象是一個(gè)可迭代的對(duì)象,即只有在真正需要的時(shí)候才會(huì)執(zhí)行計(jì)算(采用惰性計(jì)算)。在Pandas對(duì)象中,如果它的某一列數(shù)據(jù)滿足不同的劃分標(biāo)準(zhǔn),則可以將該列當(dāng)做分組鍵來(lái)拆分?jǐn)?shù)據(jù)集。例:創(chuàng)建一個(gè)DataFrame對(duì)象,具體代碼如下:如果要查看每個(gè)分組的具體內(nèi)容,則可以使用for循環(huán)遍歷DataFrameGroupBy對(duì)象通過(guò)列名進(jìn)行分組例:在上述示例代碼的基礎(chǔ)上,使用一個(gè)變量接收返回的DataFrameGroupBy對(duì)象,之后用for循環(huán)進(jìn)行遍歷,示例代碼如下:In[3]:group_obj=df.groupby('Key')#遍歷分組對(duì)象foriingroup_obj:print(i)#輸出結(jié)果('A', Key Data3 A 86 A 148A 18)('B', Key Data1 B 44 B 105 B 1)('C', KeyData0 C 22 C 67 C 16)通過(guò)列名進(jìn)行分組上述示例中,調(diào)用groupby()方法讓df對(duì)象按分組鍵Key對(duì)應(yīng)的一列數(shù)據(jù)進(jìn)行分組,這表明(其劃分標(biāo)準(zhǔn))一旦發(fā)現(xiàn)該列中存在相同的數(shù)據(jù),就把其所在的一行從整個(gè)df對(duì)象中拆分出來(lái),與其他具有相同鍵的數(shù)據(jù)組合在一起In[3]:group_obj=df.groupby('Key')#遍歷分組對(duì)象foriingroup_obj:print(i)通過(guò)列名進(jìn)行分組上述示例輸出了三個(gè)元組,每個(gè)元組的第一個(gè)元素為該組的名稱(Key列的數(shù)據(jù)),第二個(gè)元素為該組的具體數(shù)據(jù)。In[3]:group_obj=df.groupby('Key')#遍歷分組對(duì)象foriingroup_obj:print(i)('A', Key Data3 A 86 A 14A 18)('B', Key Data1 B 44 B 105 B 1)('C', KeyData0 C 22 C 67 C 16)例如,所有“A”為一組,所有“B”為一組,所有“C”為一組,共分成3組數(shù)據(jù),這些分組信息都保存在group_obj對(duì)象中,使用for循環(huán)遍歷可打印岀每個(gè)分組的信息。2PART通過(guò)Series對(duì)象進(jìn)行分組通過(guò)Series對(duì)象進(jìn)行分組In[4]:importpandasaspdimportnumpyasnpdf=pd.DataFrame({'key1':['A','A','B','B','A'],'key2':['one','two','one','two','one'],'data1':[2,3,4,6,8],'data2':[3,5,6,3,7]})dfOut[4]:key1key2data1data20 A one 2 31 A two 3 52 B one 4 63 B two 6 34 A one 8 7例如:創(chuàng)建一個(gè)5行4列的DataFrame對(duì)象,示例代碼如下:通過(guò)Series對(duì)象進(jìn)行分組In[5]:se=pd.Series(['a','b','c','a','b'])seOut[5]:0 a1 b2 c3 a4 bdtype:object然后創(chuàng)建一個(gè)用做分組鍵的Series對(duì)象,示例代碼如下:通過(guò)Series對(duì)象進(jìn)行分組In[6]:group_obj=df.groupby(by=se) #按自定義Series對(duì)象進(jìn)行分組foriingroup_obj: #遍歷分組對(duì)象print(i)Out[6]:(‘a(chǎn)’,key1key2data1data20 Aone2 33 Btwo6 3)('b', key1key2data1data21 Atwo3 54 Aone8 7)('c', key1key2data1 data22 Bone4 6)在調(diào)用groupby()方法時(shí)把se對(duì)象傳給by參數(shù),將se對(duì)象作為分組鍵拆分df對(duì)象,以得到一個(gè)分組對(duì)象,遍歷該分組對(duì)象并査看每個(gè)分組的具體內(nèi)容,示例代碼如下:從輸出結(jié)果中可以看出,se將df對(duì)象分為a、b、c三組,其中索引0和3對(duì)應(yīng)的兩行為a組數(shù)據(jù),索引1和4對(duì)應(yīng)的兩行為b組數(shù)據(jù),索引2對(duì)應(yīng)的一行為c組數(shù)據(jù)。通過(guò)Series對(duì)象進(jìn)行分組In[7]:#當(dāng)Series長(zhǎng)度與原數(shù)據(jù)的索引值長(zhǎng)度不同時(shí)se=pd.Series(['a','a','b'])group_obj=df.groupby(se)foriingroup_obj: #遍歷分組對(duì)象print(i)Out[7]:('a', key1 key2 data1data20 A one 231 A two 35)('b', key1key2 data1data22 B one 46)如果Series對(duì)象的長(zhǎng)度與原數(shù)據(jù)的行索引長(zhǎng)度不相等時(shí),那么在進(jìn)行分組時(shí)會(huì)怎么樣呢?接下來(lái),我們使用代碼進(jìn)行測(cè)試,具體代碼如下:通過(guò)Series對(duì)象進(jìn)行分組In[7]:#當(dāng)Series長(zhǎng)度與原數(shù)據(jù)的索引值長(zhǎng)度不同時(shí)se=pd.Series(['a','a','b'])group_obj=df.groupby(se)foriingroup_obj: #遍歷分組對(duì)象print(i)Out[7]:('a', key1 key2 data1data20 A one 231 A two 35)('b', key1key2 data1data22 B one 46)首先創(chuàng)建了一個(gè)Series對(duì)象,共包含三行數(shù)據(jù),其中前兩行的數(shù)據(jù)是“a”,最后一行數(shù)據(jù)為“b”,然后調(diào)用groupby()方法按se對(duì)象將df對(duì)象拆分成組,由于se只有三行數(shù)據(jù),所以它只需要對(duì)df對(duì)象的前三行數(shù)據(jù)進(jìn)行分組,即df對(duì)象的前兩行分為一組,最后一行分為一組。3PART通過(guò)字典進(jìn)行分組通過(guò)字典進(jìn)行分組當(dāng)用字典對(duì)DataFrame進(jìn)行分組時(shí),則需要確定軸的方向及字典中的映像關(guān)系,即字典中的鍵為列名,字典的值為自定義的分組名。例如,創(chuàng)建一個(gè)5行5列的DataFrame對(duì)象,具體代碼如下:In[8]:frompandasimportDataFrame,Seriesnum_df=DataFrame({'a':[1,2,3,4,5],
'b':[6,7,8,9,10],'c':[11,12,13,14,15],'d':[5,4,3,2,1],'e':[10,9,8,7,6]})num_dfOut[8]:abcde016 115 10127 124 9238 133 8349 142 74510 151 6通過(guò)字典進(jìn)行分組然后,創(chuàng)建一個(gè)表示分組規(guī)則的字典,其中字典的鍵為num_df對(duì)象的列名稱,值為自定義的分組名稱,具體代碼如下:In[9]:#定義分組規(guī)則mapping={'a':'第一組','b':'第二組','c':'第一組','d':'第三組','e':'第二組'}mappingOut[9]:{'a':'第一組','b':'第二組','c':'第一組','d':'第三組','e':'第二組'}通過(guò)字典進(jìn)行分組接著調(diào)用groupby()方法,在該方法中傳入剛創(chuàng)建的字典mapping,將mapping作為分組鍵拆分num_df對(duì)象,具體代碼如下:In[10]:#按字典分組by_co1umn=num_df.groupby(mapping,axis=1)foriinby_column:print(i)Out[10]:(‘第一組’ ,ac011112 1223 1334 1445 15)(‘第三組’,d0 51 42 3 3 24 1)(‘第二組’,b e06 1017 928 839 7410 6)通過(guò)字典進(jìn)行分組In[10]:#按字典分組by_co1umn=num_df.groupby(mapping,axis=1)foriinby_column:print(i)Out[10]:(‘第一組’ ,ac011112 1223 1334 1445 15)(‘第三組’,d0 51 42 3 3 24 1)(‘第二組’,b e06 1017 928 839 7410 6)上述示例在拆分num_df時(shí),按照橫軸的方向進(jìn)行分組,將a列、c列數(shù)據(jù)映射到第一組;將b列、e列數(shù)據(jù)映射到第二組;將d列數(shù)據(jù)映射到第三組。從輸出結(jié)果中可以看出,num_df共分為“第一組”“第二組”“第三組”三組。4PART通過(guò)函數(shù)進(jìn)行分組通過(guò)函數(shù)進(jìn)行分組與字典或Series對(duì)象相比,使用函數(shù)作為分組鍵會(huì)更加靈活,任何一個(gè)被當(dāng)做分組鍵的函數(shù)都會(huì)在各個(gè)索引值上被調(diào)用一次,返回的值會(huì)被用作分組名稱。In[11]:importpandasaspddf=pd.DataFrame({'a':[l,2,3,4,5],'b':[6,7,8,9,10],'c':[5,4,3,2,1]},index=['Sun','Jack','Alice','Helen','Job'])dfOut[11]:abcSun 16 5Jack 27 4Alice383Helen 49 2Job 510 1創(chuàng)建一個(gè)DataFrame對(duì)象,將其行索引的名稱設(shè)為字符串類型的,具體代碼如下:通過(guò)函數(shù)進(jìn)行分組如果以行索引名稱的長(zhǎng)度進(jìn)行分組,則長(zhǎng)度相同的行索引名稱會(huì)分為一組,即索引名稱長(zhǎng)度為3的分為一組,長(zhǎng)度為4的分為一組,長(zhǎng)度為5的分為一組,共分成三組。In[12]:groupby_obj=df.groupby(len) #使用
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 解構(gòu)交叉學(xué)科
- 教育研究脈絡(luò)揭秘
- 2024年版商務(wù)咨詢與服務(wù)合同
- 3我不拖拉 說(shuō)課稿-2023-2024學(xué)年道德與法治一年級(jí)下冊(cè)統(tǒng)編版
- 25 少年閏土(說(shuō)課稿)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文六年級(jí)上冊(cè)
- 金融科技項(xiàng)目投資與風(fēng)險(xiǎn)管理合同
- 美麗人生故事解讀
- 2024水利工程設(shè)計(jì)咨詢合同 for 水電站項(xiàng)目
- 企業(yè)并購(gòu)的100%股權(quán)轉(zhuǎn)讓協(xié)議
- 個(gè)人與物流公司2024年度運(yùn)輸合同3篇
- 成人氧氣吸入療法-中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)
- 新公司成立商業(yè)計(jì)劃書(shū)
- (精)公司向個(gè)人借款合同
- 人教版三年級(jí)上冊(cè)脫式計(jì)算200題及答案
- 醫(yī)技溝通與合作課件
- 醫(yī)學(xué)專業(yè)醫(yī)學(xué)統(tǒng)計(jì)學(xué)試題(答案見(jiàn)標(biāo)注) (三)
- cnas實(shí)驗(yàn)室規(guī)劃方案
- 脊髓損傷的病理生理和病因
- 肝內(nèi)膽管癌術(shù)后護(hù)理查房課件
- 職工心理健康知識(shí)手冊(cè)
- 工程量自動(dòng)計(jì)算表格新
評(píng)論
0/150
提交評(píng)論