深入解析pandas數(shù)據(jù)聚合和重組
介紹pandas數(shù)據(jù)聚合和重組的相關(guān)知識(shí),僅供參考。
1GroupBy技術(shù)
1.1簡(jiǎn)介
簡(jiǎn)介:根據(jù)一個(gè)或多個(gè)鍵進(jìn)行分組,每一組應(yīng)用函數(shù),再進(jìn)行合并
分組的鍵有多種形式:
- 列表或數(shù)組,長(zhǎng)度與待分組的軸一樣
- 表示DataFrame某個(gè)列名的值
- 字典或Series,給出待分組軸上的值與分組名之間的對(duì)應(yīng)關(guān)系
- 函數(shù),用于處理軸索引或索引中的各個(gè)標(biāo)簽
實(shí)例:
import numpy as np import pandas as pd import matplotlib.pyplot as plt from pandas import Series,DataFrame df =DataFrame({'key1':list('aabba'),'key2':['one','two','one','two','one'],\ 'data1':np.random.randn(5),'data2':np.random.randn(5)}) #根據(jù)key1進(jìn)行分組,并計(jì)算data1的均值。 #注意下面的方式,取出來進(jìn)行分組,而不是在DataFrame中分組,這種方式很靈活 #可以看到這是一個(gè)GroupBy對(duì)象,具備了應(yīng)用函數(shù)的基礎(chǔ) #這個(gè)過程是將Series進(jìn)行聚合,產(chǎn)生了新的Series grouped = df['data1'].groupby(df['key1']) print(grouped,'\n')
注:
取出來進(jìn)行分組,而不是在DataFrame中分組分組鍵中的缺失值被排除在外 1.2對(duì)分組進(jìn)行迭代
GroupBy對(duì)象支持迭代,可以產(chǎn)生一組二元元組(由分組名和數(shù)據(jù)塊組成)
groupby默認(rèn)在axis=0上進(jìn)行分組,但可以設(shè)置在任何軸上分組
1.3選取一個(gè)或一組列
對(duì)于由DataFrame產(chǎn)生的GroupBy對(duì)象,如果用一個(gè)或一組列名進(jìn)行索引,可實(shí)現(xiàn)選取部分列進(jìn)行聚合的目的,即下面語法效果相同。
1.4通過字典或Series進(jìn)行分組
假設(shè)已經(jīng)知道列的分組方式,現(xiàn)在需要利用這個(gè)信息進(jìn)行分組統(tǒng)計(jì)。
下面為groupby傳入一個(gè)已知信息的字典:
相當(dāng)于將每一個(gè)列重設(shè)名,再按新的名字進(jìn)行求和。
Series也有這樣的功能,被看作一個(gè)固定大小的映射,可以用Series作為分組鍵,pandas會(huì)自動(dòng)檢查對(duì)齊。
1.5利用函數(shù)進(jìn)行分組
將函數(shù)、數(shù)組、字典、Series混用也ok,因?yàn)樽罱K都會(huì)轉(zhuǎn)換為數(shù)組
2數(shù)據(jù)聚合
2.1簡(jiǎn)介
簡(jiǎn)介:
這里的數(shù)據(jù)聚合是說任何能夠從數(shù)組產(chǎn)生標(biāo)量值的過程常見的聚合運(yùn)算都有就地計(jì)算數(shù)據(jù)集統(tǒng)計(jì)信息的優(yōu)化實(shí)現(xiàn)。當(dāng)然不止這些,可以用自己定義的運(yùn)算,還可以調(diào)用分組對(duì)象上已經(jīng)定義好的任何方法。
例:quantile可計(jì)算Series或DataFrame列的樣本分位數(shù)。
對(duì)于自己定義的聚合函數(shù),只需將其傳入aggregate或agg即可:
有些方法(describe)也可應(yīng)用
自定義函數(shù)比經(jīng)過優(yōu)化的函數(shù)要慢得多,這是因?yàn)樵跇?gòu)造中間分組數(shù)據(jù)塊時(shí)存在非常大的開銷(函數(shù)調(diào)用、數(shù)據(jù)重排等)
可使用的函數(shù):
2.1面向列的多函數(shù)應(yīng)用
有時(shí)候需要對(duì)不同的列應(yīng)用不同的函數(shù) ,或者對(duì)一列應(yīng)用不同的函數(shù)
若傳入一組函數(shù)或函數(shù)名,得到的DataFrame列就會(huì)以相應(yīng)的函數(shù)命名
上面有個(gè)問題就是列名是自動(dòng)給出的,以函數(shù)名為列名,若傳入元組(name,function)組成的列表,就會(huì)自動(dòng)將第一個(gè)元素作為列名
對(duì)兩列都應(yīng)用functions:
得到的結(jié)果的列名是層次化索引,可以直接用外層索引選取數(shù)據(jù):
如果想對(duì)不同的列應(yīng)用不同的函數(shù),具體的辦法是向agg傳入一個(gè)從列映射到函數(shù)的字典:
2.2以‘無索引’的方式返回聚合數(shù)據(jù)
到目前為止,示例中的聚合數(shù)據(jù)都是由唯一的分組鍵組成的索引(可能還是層次化的)
由于并不是總需要如此,可以向groupby傳入as_index = False禁用該功能
到此這篇關(guān)于pandas數(shù)據(jù)聚合和重組的文章就介紹到這了,更多相關(guān)pandas數(shù)據(jù)聚合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python數(shù)據(jù)可視化之使用matplotlib繪制簡(jiǎn)單圖表
這篇文章主要為大家詳細(xì)介紹了使用matplotlib繪制簡(jiǎn)單圖表的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03Python圖像的增強(qiáng)處理操作示例【基于ImageEnhance類】
這篇文章主要介紹了Python圖像的增強(qiáng)處理操作,結(jié)合實(shí)例形式分析了使用ImageEnhance類處理圖片的亮度、對(duì)比度、色度以及銳度等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01python進(jìn)階_淺談面向?qū)ο筮M(jìn)階
下面小編就為大家?guī)硪黄猵ython進(jìn)階_淺談面向?qū)ο筮M(jìn)階。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08python利用Appium實(shí)現(xiàn)自動(dòng)控制移動(dòng)設(shè)備并提取數(shù)據(jù)功能
這篇文章主要介紹了python利用Appium自動(dòng)控制移動(dòng)設(shè)備并提取數(shù)據(jù),本文以控制抖音app滑動(dòng)并獲取抖音短視頻發(fā)布者為例,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09Pandas對(duì)DataFrame單列/多列進(jìn)行運(yùn)算(map, apply, transform, agg)
這篇文章主要介紹了Pandas對(duì)DataFrame單列/多列進(jìn)行運(yùn)算(map, apply, transform, agg),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Python參數(shù)解析器configparser簡(jiǎn)介
configparser是python自帶的配置參數(shù)解析器,可以用于解析.config文件中的配置參數(shù),ini文件中由sections(節(jié)點(diǎn))-key-value組成,這篇文章主要介紹了Python參數(shù)解析器configparser,需要的朋友可以參考下2022-12-12Python 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web服務(wù)器
這篇文章主要介紹了Python 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web服務(wù)器的方法,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2021-01-01Python FTP文件定時(shí)自動(dòng)下載實(shí)現(xiàn)過程解析
這篇文章主要介紹了Python FTP文件定時(shí)自動(dòng)下載實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Python實(shí)現(xiàn)Keras搭建神經(jīng)網(wǎng)絡(luò)訓(xùn)練分類模型教程
這篇文章主要介紹了Python實(shí)現(xiàn)Keras搭建神經(jīng)網(wǎng)絡(luò)訓(xùn)練分類模型教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06