【pandas小技巧】--统计值作为新列
2023/8/18 11:22:53
本文主要是介绍【pandas小技巧】--统计值作为新列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
这次介绍的小技巧不是统计,而是把统计结果作为新列和原来的数据放在一起。pandas
的各种统计功能之前已经介绍了不少,但是每次都是统计结果归统计结果,原始数据归原始数据,
没有把它们合并在一个数据集中来观察。
下面通过两个场景示例来演示如果把统计值作为新列的数据。
1. 成绩统计的场景
成绩统计及其类似的场景比较常见,也就是把每行统计的结果作为该行的一个新列。
比如:
import pandas as pd import numpy as np df = pd.DataFrame( np.random.randint(60, 100, (4, 3)) ) df.columns = ["语文", "数学", "英语"] df.index = ["学生"+s for s in list("ABCD")] df
统计每个学生的各科总分和平均分,然后作为新的列合并到原数据中。
sum = df.sum(axis=1) mean = df.mean(axis=1) df["总分"] = sum df["平均分"] = mean df
这样可以更全面的查看每个学生的学习情况。
2. 订单统计的场景
订单统计的这个示例稍微复杂点,因为一个订单ID可能包含多个物品,
按订单ID来统计每个订单合计信息时,不能简单的像上面的统计成绩那样直接计算按行统计。
df = pd.DataFrame( { "id": [1, 1, 2, 3, 3, 3], "product": ["苹果", "香蕉", "手机", "冰箱", "电视", "空调"], "price": [24, 15, 2000, 8000, 5500, 7800], } ) df
如上所示,总共有3
个订单,根据订单号统计每个订单的总价如下:
df.groupby("id").price.sum()
得到每个订单ID对应的总价格,但是合计信息只有3
行,而原来的数据是6
行,无法直接合并到原数据。
这种情况下,我们需要用pandas
里的transform
函数。
transform函数分组统计之后,会保持原来的行数。
df["总价"] = df.groupby("id").price.transform("sum") df
相同的订单ID,统计的总价是一样的。
把总价的信息附加在订单的每个具体物品之后,
还可以基于此统计出同一个订单中每个物品价格所占总价的百分比。
df["百分比"] = df.price / df["合计"] df
总之,统计值作为新的列,不仅可以更好的比较和观察原始数据和统计值,
还可以基于新的统计列,再统计出其他的信息。
这篇关于【pandas小技巧】--统计值作为新列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解