【pandas技巧】group by+agg+transform函数

2023-10-30 03:36

本文主要是介绍【pandas技巧】group by+agg+transform函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1. group by+单个字段+单个聚合

2. group by+单个字段+多个聚合

3. group by+多个字段+单个聚合

4. group by+多个字段+多个聚合

5. transform函数


studentsgradesexscoremoney
0小狗小学部female95844
1小猫小学部male93836
2小鸭初中部male83854
3小兔小学部female90931
4小花小学部male81853
5小草小学部male80991
6小狗初中部female81854
7小猫小学部male93886
8小鸭小学部male88983
9小兔小学部male86891
10小花初中部male92830
11小草初中部male84948

1. group by+单个字段+单个聚合

1.1 方法一

# 求每个人的总金额:
total_money=df.groupby("students")["money"].sum().reset_index()
total_money

1.2 方法二(使用agg)

df.groupby("students").agg({"money":"sum"}).reset_index()
#或者
df.groupby("students").agg({"money":np.sum}).reset_index()
studentsmoney
0小兔1820
1小狗1711
2小猫1670
3小花1861
4小草1825
5小鸭1719

2. group by+单个字段+多个聚合

2.1 方法一(使用group by+merge)

mean_money = df.groupby("students")["money"].mean().reset_index()
mean_money.columns = ["students","mean_money"]
mean_money
total_mean = total_money.merge(mean_money)
total_mean

total_mean = total_money.merge(mean_money)
total_mean
studentstotal_moneymean_money
0小兔1820910.0
1小狗1711855.5
2小猫1670835.0
3小花1861930.5
4小草1825912.5
5小鸭1719859.5

2.2 方法二(使用group by+agg)

total_mean = df.groupby("students").agg(total_money=("money", "sum"),mean_money=("money", "mean")).reset_index()
total_mean
studentstotal_moneymean_money
0小兔1820910.0
1小狗1711855.5
2小猫1670835.0
3小花1861930.5
4小草1825912.5
5小鸭1719859.5

3. group by+多个字段+单个聚合

3.1 方法一

df.groupby(["students","grade"])["money"].sum().reset_index()
studentsgrademoney
0小兔初中部1820
1小狗初中部843
2小狗小学部868
3小猫小学部1670
4小花初中部910
5小花小学部951
6小草初中部1825
7小鸭初中部1719

3.2 方法二(使用agg)

df.groupby(["students","grade"]).agg({"money":"sum"}).reset_index()
studentsgrademoney
0小兔初中部1820
1小狗初中部843
2小狗小学部868
3小猫小学部1670
4小花初中部910
5小花小学部951
6小草初中部1825
7小鸭初中部1719

4. group by+多个字段+多个聚合

agg函数的使用的方法是:agg(新列名=("原列名", "统计函数"))

df.groupby(["students","grade"]).agg(total_money=("money", "sum"),mean_money=("money", "mean"),total_score=("score", "sum")).reset_index()
studentsgradetotal_moneymean_moneytotal_score
0小兔初中部1820910.0192
1小狗初中部843843.088
2小狗小学部868868.093
3小猫小学部1670835.0178
4小花初中部910910.095
5小花小学部951951.098
6小草初中部1825912.5184
7小鸭初中部1719859.5173

5. transform函数

 5.1 方法一(使用groupby + merge)

df_1 = df.groupby("grade")["score"].mean().reset_index()
df_1.columns = ["grade", "average_score"]
df_1
gradeaverage_score
0初中部85.00
1小学部88.25
df_new1 = pd.merge(df, df_1, on="grade")
df_new1
studentsgradesexscoremoneyaverage_score
0小狗小学部female9584488.25
1小猫小学部male9383688.25
2小兔小学部female9093188.25
3小花小学部male8185388.25
4小草小学部male8099188.25
5小猫小学部male9388688.25
6小鸭小学部male8898388.25
7小兔小学部male8689188.25
8小鸭初中部male8385485.00
9小狗初中部female8185485.00
10小花初中部male9283085.00
11小草初中部male8494885.00

5.2 方法二(使用groupby + map)

dic = df.groupby("grade")["score"].mean().to_dict()
dic
{'初中部': 85.0, '小学部': 88.25}
df_new1["average_map_score"] = df["grade"].map(dic)
df_new1
studentsgradesexscoremoneyaverage_scoreaverage_map_score
0小狗小学部female9584488.2588.25
1小猫小学部male9383688.2588.25
2小兔小学部female9093188.2585.00
3小花小学部male8185388.2588.25
4小草小学部male8099188.2588.25
5小猫小学部male9388688.2588.25
6小鸭小学部male8898388.2585.00
7小兔小学部male8689188.2588.25
8小鸭初中部male8385485.0088.25
9小狗初中部female8185485.0088.25
10小花初中部male9283085.0085.00
11小草初中部male8494885.0085.00

5.3 方法三(使用transform一步到位)

df_new1["average_trans_score"] = df.groupby("grade")["score"].transform("mean")
df_new1
studentsgradesexscoremoneyaverage_scoreaverage_map_scoreaverage_trans_score
0小狗小学部female9584488.2588.2588.25
1小猫小学部male9383688.2588.2588.25
2小兔小学部female9093188.2585.0085.00
3小花小学部male8185388.2588.2588.25
4小草小学部male8099188.2588.2588.25
5小猫小学部male9388688.2588.2588.25
6小鸭小学部male8898388.2585.0085.00
7小兔小学部male8689188.2588.2588.25
8小鸭初中部male8385485.0088.2588.25
9小狗初中部female8185485.0088.2588.25
10小花初中部male9283085.0085.0085.00
11小草初中部male8494885.0085.0085.00

这篇关于【pandas技巧】group by+agg+transform函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/305337

相关文章

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python Excel 通用筛选函数的实现

《PythonExcel通用筛选函数的实现》本文主要介绍了PythonExcel通用筛选函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录案例目的示例数据假定数据来源是字典优化:通用CSV数据处理函数使用说明使用示例注意事项案例目的第一