0

0

groupby如何分组求平均值 groupby mean使用场景解析【详解】

倫敦的微風

倫敦的微風

发布时间:2026-02-09 18:15:06

|

217人浏览过

|

来源于php中文网

原创

groupby().mean()用于按列分组后计算数值列算术平均值,默认忽略NaN、将分组键设为索引;支持指定列、控制缺失值处理、重置索引及结合agg实现混合聚合与自定义列名。

groupby如何分组求平均值 groupby mean使用场景解析【详解】 - php中文网

当您使用 pandas 对数据进行分组聚合时,groupby().mean() 是最常用的操作之一,用于按指定列分组后计算每组数值列的算术平均值。以下是该操作的具体实现方式与适用情形:

一、基础语法与默认行为

pandas 的 groupby 对象在调用 mean() 方法时,默认对所有可数值化的列执行均值计算,并自动忽略 NaN 值。该方法不改变原始 DataFrame 的索引结构,但会将分组键提升为结果的索引(或作为新列,取决于 as_index 参数设置)。

1、导入 pandas 并创建示例数据框:
import pandas as pd
df = pd.DataFrame({'category': ['A', 'A', 'B', 'B'], 'value1': [10, 20, 30, 40], 'value2': [1.5, 2.5, 3.5, 4.5]})

2、执行分组求平均:
result = df.groupby('category').mean()

3、查看结果:
print(result)

二、指定数值列进行分组均值计算

若数据框中包含非数值列(如字符串、时间戳等),直接调用 mean() 可能触发警告或跳过这些列。显式指定列名可确保仅对目标数值列计算均值,提高可控性与性能。

1、仅对 value1 列求均值:
df.groupby('category')['value1'].mean()

2、同时对多个指定列求均值:
df.groupby('category')[['value1', 'value2']].mean()

3、结果返回一个具有 MultiIndex 列结构的 DataFrame,列名为原字段名,行索引为 category 分组键。

三、处理缺失值的策略控制

mean() 默认启用 skipna=True,即自动排除 NaN 后计算均值。但在某些分析场景中,需识别全为缺失的组或强制保留 NaN,此时可通过参数干预行为。

1、显式声明跳过缺失值:
df.groupby('category').mean(skipna=True)

SPLASH
SPLASH

将音乐制作的乐趣带给每个人。

下载

2、禁用缺失值跳过(使整组含任一 NaN 即返回 NaN):
df.groupby('category').mean(skipna=False)

3、验证某组是否全为 NaN:结合 count() 与 size() 判断 —— 若 count() 返回 0 而 size() > 0,则该组所有值均为 NaN。

四、重置索引并保留分组列为普通列

默认情况下,groupby 结果将分组键设为索引,不利于后续合并或导出。使用 reset_index() 可将其还原为常规列,增强下游操作兼容性。

1、执行分组均值并重置索引:
df.groupby('category').mean().reset_index()

2、指定新列名以避免歧义(尤其多级列时):
df.groupby('category').mean().reset_index(name='avg_value')

3、注意:name 参数仅对单列聚合有效;多列聚合需使用 rename 或列名映射方式重命名。

五、结合 agg 实现混合聚合与列别名

当需对不同列应用不同聚合函数,或为结果列指定语义化名称时,agg 方法比链式 mean() 更灵活。它支持字典映射和命名元组形式,可统一输出结构。

1、对 value1 求均值、value2 求最大值:
df.groupby('category').agg({'value1': 'mean', 'value2': 'max'})

2、为结果列赋予自定义名称:
df.groupby('category').agg(avg_v1=('value1', 'mean'), max_v2=('value2', 'max'))

3、该写法生成的列名为 avg_v1 和 max_v2,无需额外 rename,且保持单层列索引结构。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

73

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

3

2026.01.31

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

191

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

10

2026.02.03

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

198

2023.11.20

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

444

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

213

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1518

2023.10.24

Golang处理数据库错误教程合集
Golang处理数据库错误教程合集

本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

130

2026.02.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号