偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Pandas 中實現(xiàn)聚合統(tǒng)計,有幾種方法?

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

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

[[404468]]

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

value_counts上述需求是統(tǒng)計各國將領(lǐng)的人數(shù),換言之就是在上述數(shù)據(jù)集中統(tǒng)計各個國家出現(xiàn)的次數(shù)。所以實現(xiàn)這一目的只需簡單的對國家字段進(jìn)行計數(shù)統(tǒng)計即可:

當(dāng)然,以上實現(xiàn)其實僅適用于計數(shù)統(tǒng)計這種特定需求,對于其他的聚合統(tǒng)計是不能滿足的。

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

進(jìn)一步的,其具體實現(xiàn)形式有兩種:

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

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

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

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

agg函數(shù)主要接收兩個參數(shù),第一個參數(shù)func用于接收聚合算子,可以是一個函數(shù)名或?qū)ο?,也可以是一個函數(shù)列表,還可以是一個字典,使用方法很是靈活;第二參數(shù)axis則是指定聚合所沿著的軸向,默認(rèn)是axis=0,即沿著行的方向?qū)α芯酆?。agg的函數(shù)文檔如下:

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

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

2、agg內(nèi)接收聚合函數(shù)字典,其中key為列名,value為聚合函數(shù)或函數(shù)列表,可實現(xiàn)同時對多個不同列實現(xiàn)不同聚合統(tǒng)計。這里字典的key是要聚合的name字段,字典的value即為要用的聚合函數(shù)count,當(dāng)然也可以是包含count的列表的形式。用字典傳入聚合函數(shù)的形式下,統(tǒng)計結(jié)果都是一個dataframe,更進(jìn)一步的說當(dāng)傳入字典的value是聚合函數(shù)列表時,結(jié)果中dataframe的列名是一個二級列名。

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

groupby+apply如果說上述實現(xiàn)方式都還是pandas里中規(guī)中矩的聚合統(tǒng)計,那么這一種方式則是不是該算是一種騷操作?實際上,這是應(yīng)用了pandas中apply的強(qiáng)大功能,具體可參考?xì)v史推文Pandas中的這3個函數(shù),沒想到竟成了我數(shù)據(jù)處理的主力。

由于apply支持了多種重載方法,所以對于分組后的grouped dataframe應(yīng)用apply,也可實現(xiàn)特定的聚合函數(shù)統(tǒng)計功能。首先看如下實際應(yīng)用:

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

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

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

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

責(zé)任編輯:未麗燕 來源: 小數(shù)志
相關(guān)推薦

2009-09-18 12:29:55

2024-06-03 08:26:34

Android開發(fā)監(jiān)聽器

2013-02-25 14:46:49

2010-04-30 16:22:07

Unix終端

2021-03-08 09:32:04

Python文件命令

2009-09-09 11:24:46

PHP實現(xiàn)MVC

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數(shù)據(jù)集函數(shù)

2010-05-17 15:17:06

MySQL常用操作

2009-08-25 09:22:01

DataGridVie

2020-10-16 18:35:53

JavaScript字符串正則表達(dá)式

2024-02-21 08:33:27

GoReadDir性能

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停止服務(wù)Java
點贊
收藏

51CTO技術(shù)棧公眾號