当前位置: 首页 > news >正文

【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

http://www.lryc.cn/news/210804.html

相关文章:

  • 一文解读WordPress网站的各类缓存-老白博客
  • 从零开始:开发直播商城APP的技术指南
  • GZ035 5G组网与运维赛题第6套
  • 分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制)
  • 【Qt】QString怎么转成int
  • ubuntu 22.04 安装python-pcl
  • 【题解】[GenshinOI Round 3 ]P9817 lmxcslD
  • 在pycharm中,远程操作服务器上的jupyter notebook
  • SQL 运算符
  • 中间件安全-CVE 复现K8sDockerJettyWebsphere漏洞复现
  • 系列九、什么是Spring bean
  • 轻量封装WebGPU渲染系统示例<4>-CubeMap/天空盒(源码)
  • Linux 环境变量 二
  • Beyond Compare4 30天试用到期的解决办法
  • sentinel规则持久化-规则同步nacos-最标准配置
  • 【Linux】tail命令使用
  • 【数据结构】面试OJ题——时间复杂度2
  • LibreOffice编辑excel文档如何在单元格中输入手动换行符
  • ideaSSM在线商务管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目
  • 数据结构 | 顺序表专题
  • C++可视化 有穷自动机NFA 有穷自动机DFA
  • vite vue3 ts 使用sass 设置样式变量 和重置默认样式
  • MySQL安全基线检查
  • Unity主程如何做好游戏项目管理
  • 103.linux5.15.198 编译 firefly-rk3399(2)
  • 如何从Android手机上轻松恢复误删除的短信 ?
  • 毅速丨金属3D打印能替代传统制造吗?
  • 21个新的ChatGPT应用
  • 【通信原理】第二章|确知信号
  • 【JVM】类加载器