数据处理和统计分析——09 数据分组

1 聚合

1.1 简介

  • 在SQL中我们经常使用GROUP BY将某个字段,按不同的取值进行分组,在Pandas中也有groupby()函数;
  • 分组之后,每组都会有至少1条数据,将这些数据进一步处理返回单个值的过程就是聚合,比如分组之后计算算术平均值,或者分组之后计算频数,都属于聚合。

1.2 单变量分组聚合

  • 加载数据:

    在这里插入图片描述

  • 按照年份分组,计算平均寿命

    在这里插入图片描述

  • 查询年份:

    在这里插入图片描述

  • 对 1952 年进行聚合,计算平均寿命:

    在这里插入图片描述

1.3 聚合函数

1.3.1 常用聚合函数

Pandas 方法Numpy 函数说明
countnp.count_nonzero频率统计 (不包含 NaN 值)
size频率统计 (包含 NaN 值)
meannp.mean求平均值
stdnp.std标准差
minnp.min最小值
quantile()np.percentile()分位数
maxnp.max求最大值
sumnp.sum求和
varnp.var方差
describe计数、平均值、标准差,最小值、分位数、最大值
first返回第一行
last返回最后一行
nth返回第 N 行 (Python 从 0 开始计数)
  • 例:使用 Numpy 的求平均值方法

    • FutureWarning:提示在未来的 Pandas 版本中,提供的可调用对象(这里是 np.mean)将直接被使用。为了保持当前的行为,应该传递字符串 "mean" 而不是 np.mean。也就是说,建议将代码修改为df.groupby('year').lifeExp.agg("mean")

    在这里插入图片描述

1.3.2 agg()函数

  • 在 Python 的 Pandas 库中,agg(是aggregate的缩写)是一个用于数据聚合操作的方法;

  • agg方法常用于在分组操作(groupby)之后,对每个分组的数据进行聚合计算,比如计算每个分组的总和、平均值、最大值、最小值等;也可以在没有分组的情况下,直接对整个数据对象(如SeriesDataFrame)进行聚合操作;

  • Series对象使用agg:直接对Series对象调用agg方法,传入一个聚合函数(可以是内置函数,也可以是自定义函数),对整个Series的数据进行聚合;

    import pandas as pddata = [1, 2, 3, 4, 5]
    s = pd.Series(data)
    result = s.agg(sum)
    print(result)
    
  • 结合groupbyDataFrame使用agg:先使用groupbyDataFrame进行分组,然后对每个分组调用agg方法,传入一个或多个聚合函数,对分组后指定列的数据进行聚合;

    import pandas as pddata = {'category': ['A', 'A', 'B', 'B'],'value': [10, 20, 30, 40]
    }
    df = pd.DataFrame(data)
    # 按category列分组,对value列求平均值
    result = df.groupby('category').value.agg('mean')
    print(result)
    
  • 自定义函数:用户可以定义自己的聚合函数,然后传递给agg方法;

    • 自定义函数若被agg()函数当做聚合函数来使用时,自定义函数中有且至少要有一个参数。但agg()函数传递给自定义聚合函数的是一个Series对象,若想得到Series的每一个值,需要再自定义聚合函数中需要通过for循环迭代才能实现;

      在这里插入图片描述

    • 当然在自定义聚合函数中允许有多个参数,第一个参数用来接收DataFrame分组之后的值,其余参数可以自定义;

      在这里插入图片描述

  • aggaggregate效果一样

    在这里插入图片描述

  • 若想要对多个字段用不同的聚合方式,可以使用Python的字典数据类型,key是要聚合的字段,value是要使用的聚合方式;

    在这里插入图片描述

1.3.3 同时使用多个聚合函数

  • groupby后面想接多个聚合函数,可以把这些聚合函数放入一个 Python 列表中,然后将这个列表传递给agg()函数

    在这里插入图片描述

2 转换

2.1 简介

  • transform()函数

    • 功能:它会把 DataFrame 中的值传递给一个函数,然后由该函数对数据进行 “转换” 操作;
    • 特点:转换后的数据与原始数据的形状(行数和列数等)相同,不会减少数据量。例如,对一个包含多组数据的列进行某种转换后,该列的行数和列数不会改变,只是每个数据的值按照函数规则发生了变化;
  • transform() VS aggregate()

    • transform侧重于对数据进行转换,保持数据的原始结构和规模不变,不会减少数据量;

    • aggregate侧重于对数据进行汇总,得到一个或少数几个关键的聚合结果,会减少数据量。

2.2 例:使用transform()计算z分数

在这里插入图片描述

2.3 transform()填充缺失值

  • 之前介绍了填充缺失值的各种方法,对于某些数据集,可以使用列的平均值来填充缺失值。某些情况下,可以考虑将列进行分组,分组之后取平均再填充缺失值;

  • 加载数据:

    在这里插入图片描述

  • 构建缺失值

    在这里插入图片描述

  • 定义函数来填充缺失值

    在这里插入图片描述

3 过滤

  • 查看数据:

    在这里插入图片描述

  • 人数为1、5和6人的数据比较少,可以将这部分数据过滤掉。调用filter()函数,传入一个返回布尔值的函数,返回False的数据会被过滤掉

    在这里插入图片描述

4 DataFrameGroupBy对象

4.1 分组

  • 准备数据:

    在这里插入图片描述

  • 创建分组对象:

    在这里插入图片描述

  • 通过groups属性查看计算过的分组

    在这里插入图片描述

    • 返回值是一个字典;
    • 键(key):是分组的类别,也就是 sex 列中的不同取值;
    • 值(value):是一个列表,包含了每个分组类别对应的行索引。例如,'Female' 对应的行索引是 [198, 124, 101]'Male' 对应的行索引是 [24, 6, 153, 211, 176, 192, 9]
  • 分组后,就可以在分组的结果上进行aggregatetransform计算了;

  • 可以从分组对象中获取指定分组:

    在这里插入图片描述

4.2 遍历分组

在这里插入图片描述

4.3 多个分组

在这里插入图片描述

  • 若不使用as_index=False,可以使用result.reset_index()函数,都是重置索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917280.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构与算法】数据结构初阶:排序内容加餐(一)——快速排序:三路划分、自省排序

🔥个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题 🍉学习方向:C/C方向 ⭐️人生格言:为天地立心,为生民立命,为…

MySqL(加餐)

范式第一范式数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,对象等非原子数据。在关系型数据库的设计中,满足第一范式是对关系模式的基本要求。不满足第一范式的数据库就不能被称为关系数据库。第一范式实际上只要…

【redis】基于工业界技术分享的内容总结

Redis 实践指南与核心概念 一、Java 中常用的 Redis 使用场景与实践 缓存(Caching) 场景:热点数据、频繁访问的数据,如商品详情、用户信息。通过缓存减少数据库压力,提高系统响应速度。 工业界实践: 淘宝…

服务端之nestJS常用异常类及封装自定义响应模块

MENU前言常用异常类(由nestjs/common提供)示例自定义异常(可选)自定义响应模块前言 在NestJS中,nestjs/common提供了大量的内置异常类,主要用于在控制器、服务等层抛出特定的HTTP错误响应。 常用异常类&…

数据链路层、NAT、代理服务、内网穿透

目录 一. 以太网 以太网帧格式 二. MAC地址 三. MTU 四. ARP协议 五. NAT NAPT 六. 代理服务器 正向代理 反向代理 七. 内网穿透 八. 内网打洞 一. 以太网 • "以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内 容, 也包含了一些物理层…

Rust在CentOS 6上的移植

Rust已不支持Cent OS 6 rhel是Redhat 发布的Red Hat Enterprise Linux的简称,使用rhel源代码编译的CentOS,最新的版本是CentOS 7,于2024年停止支持。而更古老的CentOS 6,则在2020年就已经结束了。 而面对如此老旧的系统&#xf…

C++音视频开发:基础面试题

音视频领域技术门槛高,学习资料稀缺,体系化书籍和开发工具有限,新手入门困难。音视频开发涉及众多任务:音频(采集、编解码、降噪等)、视频(采集、编解码、图像处理)、实时传输&#…

C++刷题 - 7.27

贪心算法的详细逻辑这个问题的最优解可以用 贪心算法 在 O(N) 时间 内解决。它的核心思想是:每次操作尽可能覆盖最长的连续非零区间,并通过数学分析发现:最小操作次数等于所有“上升台阶”的高度差之和。1. 直观理解假设 steps [1, 2, 3, 2,…

音频3A处理简介之AGC(自动增益控制)

在音频通话和视频会议中,音频自动增益控制AGC模块的主要作用:• 稳定音频信号的输出电平。无论麦克风采集信号的强弱(如用户离麦克风远近程度不同),尽可能保证音频采集模块的输出音量保持相对一致,不会偏大…

web前端打包apk包

我用的是HBuilder工具,可视化更便捷,目前我这操作的apk包是不需要上架的,所以跟实际需要上架的可能还有些出入 首先先新建个项目,选择5App模式 把目前需要打包的内容上传到服务器,我们以嵌套的形式进行打包,找到index.…

Ansible提权sudo后执行报错

1.问题 配置了sudo提权信息后,执行ansible-play报错,报错信息如下:2.原因 sudo没有执行**/bin/sh的权限,而ansible脚本中依赖/bin/sh**,所以报错了: 查看日志sudo tail -f /var/log/secure3.解决方式 修改*…

.NET报表控件ActiveReports发布v19.0——正式兼容 .NET 9

ActiveReports 是一款专注于 .NET 和 .NET Core 平台的报表控件。通过拖拽式报表设计器,可以快速地设计 Excel表格、Word文档、图表、数据过滤、数据钻取、精准套打等类型报表,全面满足 WinForm、ASP.NET、ASP.NET MVC、WPF 平台中各种报表的开发需要。同…

SCI论文选词炼句

标准句子不能啰嗦;词不能有问题,得是SCI中经常出现的,符合上下文的。SCI论文中常出现的摸棱两可的词单词涵义例子Architecture指 整体系统设计方案,如网络层次结构、模块组合、激活函数选择等深度学习模型架构Structure更泛泛&…

Qt deleteLater 延迟删除原理

deleteLater 调用 事件发送 void QObject::deleteLater() {QCoreApplication::postEvent(this, new QDeferredDeleteEvent()); }首先该对象继承QObject调用deleteLater, 内部会发送删除事件QCoreApplication::postEvent(this, new QDeferredDeleteEvent()) 到事件循…

TypeScript SDK 升级:通过 Upload Relay 赋能更多应用

自 3 月主网上线以来,Walrus 开发者社区持续展现出强劲的发展势头: 当前 Walrus 已存储超 758 TB 数据,为数百个项目提供支持。在 2025 年 6 月举办的 Sui Overflow 黑客松上,Walrus 成为最受欢迎的数据层。该赛事共收到 599 个项…

C#线程同步(二)锁

目录 1.lock 2.Monitor 3.锁的其它要注意的问题 3.1同步对象的选择 3.2什么时候该上锁 3.3锁和原子性 3.4嵌套锁 3.5 死锁 3.6 性能 4.Mutex 5.Semaphore 1.lock 让我们先看一段代码: class ThreadUnsafe {static int _val1 1, _val2 1;static void G…

鸿蒙智能居家养老系统构思(续二)—— 适老化烹饪中心详细构思

一、背景在“写给华为鸿蒙智家 —— 智能居家养老系统构思”一文中,结合对居家养老的理解及个人体验,提出了基于鸿蒙OS实现居家养老系统的粗略构思。其中包含“吃得好”。当老人到了不能随性外出活动、只能在家消耗时光时,除了一些看看电视、…

高斯透镜公式(调整镜头与感光元件之间的距离时,使得不同距离的物体在感光元件上形成清晰的影像)

当使用定焦镜头时,仍然可以调整镜头与感光元件(或胶片)之间的距离时,使得不同距离的物体在感光元件上形成清晰的影像。对此可以用高斯透镜公式进行解释: 一、透镜成像的基本原理 在光学中,一个基本的公式是…

预过滤环境光贴图制作教程:第三阶段 - GGX 分布预过滤

核心目标 GGX 分布是 PBR 中模拟粗糙表面高光反射的主流模型,其核心是通过统计分布描述微表面的朝向概率。本阶段的目标是: 基于第一阶段生成的环境图集,预计算 6 个级别的 GGX 过滤结果(对应不同粗糙度); 使用蒙特卡洛采样(Monte Carlo Sampling)加速 GGX 卷积计算;…

Spring框架与AutoCAD结合应用

什么是AutoCAD? AutoCAD简介 AutoCAD是由美国Autodesk公司开发的计算机辅助设计(CAD)软件,广泛应用于建筑、工程、制造、产品设计等领域。它支持2D绘图和3D建模,提供精确的图形工具和自动化功能,帮助用户高效创建技术图纸和模型。 主要功能 2D绘图:提供直线、圆弧、多…