成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Pandas 中實現聚合統計,有幾種方法?

大數據
pandas是當前Python數據分析中最為重要的工具,其提供了功能強大且靈活多樣的API,可以滿足使用者在數據分析和處理中的多種選擇和實現方式。今天本文以Pandas中實現分組計數這個最基礎的聚合統計功能為例,分享多種實現方案,最后一種應該算是一個騷操作了……

pandas是當前Python數據分析中最為重要的工具,其提供了功能強大且靈活多樣的API,可以滿足使用者在數據分析和處理中的多種選擇和實現方式。今天本文以Pandas中實現分組計數這個最基礎的聚合統計功能為例,分享多種實現方案,最后一種應該算是一個騷操作了……

[[404468]]

這里首先給出模擬數據集,不妨給定包括如下兩列的一個dataframe,需求是統計各國將領的人數。應該講這是一個很基礎的需求,旨在通過這一需求梳理pandas中分組聚合的幾種通用方式。

value_counts上述需求是統計各國將領的人數,換言之就是在上述數據集中統計各個國家出現的次數。所以實現這一目的只需簡單的對國家字段進行計數統計即可:

當然,以上實現其實僅適用于計數統計這種特定需求,對于其他的聚合統計是不能滿足的。

groupby+count第一種實現算是走了取巧的方式,對于更為通用的聚合統計其實是不具有泛化性的,那么pandas中標準的聚合是什么樣的呢?對于上述僅有一種聚合函數的例子,在pandas中更傾向于使用groupby直接+聚合函數,例如上述的分組計數需求,其實就是groupby+count實現。

進一步的,其具體實現形式有兩種:

1、分組后對指定列聚合,在這種形式中依據country分組后只提取name一列,相當于每個country下對應了一個由多個name組成的series,而后的count即為對這個series進行count。

2、分組后直接聚合,然后再提取指定列。此時,依據country分組后不限定特定列,而是直接加聚合函數count,此時相當于對列都進行count,此時得到的仍然是一個dataframe,而后再從這個dataframe中提取對特定列的計數結果。

值得指出,在此例中country以外的其他列實際上也是只有name一列,但與第一種形式其實也是不同的,具體在于未加提取name列之前,雖然也是只有name一列,但卻還是一個dataframe:

groupby+agg上述方法是直接使用groupby+相應的聚合函數,這種聚合統計方法簡單易懂,但缺點就是僅能實現單一的聚合需求,對于有多種聚合函數的情況是不適用的。此時,功能更為強大的agg函數隨之登場。agg是aggregation的縮寫,可見其是專門用于聚合統計的,其可以接收多種不同的聚合函數,因而更具可定制性。

agg函數主要接收兩個參數,第一個參數func用于接收聚合算子,可以是一個函數名或對象,也可以是一個函數列表,還可以是一個字典,使用方法很是靈活;第二參數axis則是指定聚合所沿著的軸向,默認是axis=0,即沿著行的方向對列聚合。agg的函數文檔如下:

這里,仍然以上述分組計數為例,講解groupby+agg的三種典型應用方式:

1、agg內接收聚合函數或聚合函數列表。具體實現形式也分為兩種,與前面groupby直接+聚合函數的用法類似。實際上,該種用法其實與groupby直接+聚合函數極為類似。

2、agg內接收聚合函數字典,其中key為列名,value為聚合函數或函數列表,可實現同時對多個不同列實現不同聚合統計。這里字典的key是要聚合的name字段,字典的value即為要用的聚合函數count,當然也可以是包含count的列表的形式。用字典傳入聚合函數的形式下,統計結果都是一個dataframe,更進一步的說當傳入字典的value是聚合函數列表時,結果中dataframe的列名是一個二級列名。

3、agg內接收新列名+元組,實現對指定列聚合并重命名。對于聚合函數不是特別復雜而又希望能同時完成聚合列的重命名時,可以選用此種方式,具體傳參形式實際上采用了python中可變字典參數**kwargs的用法,其中字典參數中的key是新列名,value是一個元組的形式,包括聚合字段列名和聚合函數。

groupby+apply如果說上述實現方式都還是pandas里中規中矩的聚合統計,那么這一種方式則是不是該算是一種騷操作?實際上,這是應用了pandas中apply的強大功能,具體可參考歷史推文Pandas中的這3個函數,沒想到竟成了我數據處理的主力。

由于apply支持了多種重載方法,所以對于分組后的grouped dataframe應用apply,也可實現特定的聚合函數統計功能。首先看如下實際應用:

在上述方法中,groupby('country')后的結果,實際上是得到了一個DataFrameGroupBy對象,實際上是一組(key, value)的集合,其中每個key對應country列中的一種取值,每個value為該key對應的一個子dataframe,具體拆解打印如下:

而后,groupby后面接的apply函數,實質上即為對每個分組下的子dataframe進行聚合,具體使用何種聚合方式則就看apply中傳入何種參數了!

總結本文針對一個最為基礎的聚合統計場景,介紹pandas中4類不同的實現方案,其中第一種value_counts不具有一般性,僅對分組計數需求適用;第二種groupby+聚合函數,是最為簡單和基礎的聚合統計,僅適用于單一聚合函數的需求;第三種groupby+agg,具有靈活多樣的傳參方式,是功能最為強大的聚合統計方案;而第四種groupby+apply則屬于是靈活應用了apply的重載功能,可以用于完成一些特定的統計需求。

最后,雖然本文以簡單的分組計數作為講解案例,但所提到的方法其實是能夠代表pandas中的各種聚合統計需求。

責任編輯:未麗燕 來源: 小數志
相關推薦

2009-09-18 12:29:55

2024-06-03 08:26:34

Android開發監聽器

2013-02-25 14:46:49

2010-04-30 16:22:07

Unix終端

2009-09-09 11:24:46

PHP實現MVC

2021-03-08 09:32:04

Python文件命令

2018-02-08 09:04:58

Nginx404頁面方法

2018-08-09 20:47:41

2009-06-09 11:19:49

2020-07-24 20:45:51

Spark數據集函數

2009-08-25 09:22:01

DataGridVie

2020-10-16 18:35:53

JavaScript字符串正則表達式

2024-02-21 08:33:27

GoReadDir性能

2010-05-17 15:17:06

MySQL常用操作

2010-06-03 08:55:43

LINQ

2013-08-21 11:31:21

iPhone圖片方法

2020-03-24 09:06:45

Java對象大小

2010-01-22 14:46:25

C++語言

2010-10-26 09:23:03

Web Service

2020-01-10 16:23:44

Springboot停止服務Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本不卡一区 | 欧美人妇做爰xxxⅹ性高电影 | 久久久久久综合 | 久久99国产精品 | 免费在线观看一区二区 | 欧美 中文字幕 | 色悠悠久 | 黄色一级毛片 | www.99热| 欧美日韩一区二区三区四区 | 国产精品欧美一区二区 | 久久成人精品视频 | 亚洲第一视频网站 | 新超碰97 | 日韩电影中文字幕 | 亚洲人成一区二区三区性色 | 亚洲成人av| 2018国产精品| 激情欧美日韩一区二区 | 美美女高清毛片视频免费观看 | 亚洲毛片在线观看 | 美女久久 | 欧美成人猛片aaaaaaa | 亚洲一区影院 | 久久中文字幕在线 | 欧美激情久久久 | 欧美一区免费 | 日韩精品专区在线影院重磅 | 亚洲视频三区 | 欧美一级大片免费观看 | 狠狠操在线 | 日韩1区| 久久精品国产99国产精品 | 浮生影院免费观看中文版 | 久久精品国产免费看久久精品 | 99免费在线视频 | 日韩成人av在线 | 国产精品3区 | 香蕉一区二区 | 91超碰在线观看 | 久久精品综合 |