Python怎么用pandas对数据进行分组_pandas DataFrame数据分组聚合操作

Pandas的groupby()可按列分组数据并应用聚合函数如sum、mean等,支持多级分组、agg多种聚合、transform组内转换及apply自定义函数,默认排除NaN值,可用fillna填充,结合sort_values和head可获取每组前N条,transform还能将结果合并回原DataFrame。

python怎么用pandas对数据进行分组_pandas dataframe数据分组聚合操作

Pandas 中使用

groupby()

方法可以轻松实现数据分组,然后配合聚合函数进行统计分析。这是一种非常强大的数据处理工具,能让你快速了解数据的不同维度。

解决方案

Pandas 的

groupby()

函数允许你根据一个或多个列的值对 DataFrame 进行分组。分组后,你可以对每个组应用聚合函数,例如

sum()

,

mean()

,

count()

,

min()

,

max()

等。

以下是一些常用的 Pandas 分组聚合操作示例:

立即学习“Python免费学习笔记(深入)”;

import pandas as pd# 创建一个示例 DataFramedata = {'Category': ['A', 'A', 'B', 'B', 'A', 'C', 'C'],        'Value': [10, 15, 20, 25, 12, 30, 35],        'City': ['Beijing', 'Shanghai', 'Beijing', 'Shanghai', 'Guangzhou', 'Shanghai', 'Guangzhou']}df = pd.DataFrame(data)# 按照 'Category' 列进行分组,并计算每组 'Value' 的总和grouped_sum = df.groupby('Category')['Value'].sum()print("按照 Category 分组求和:n", grouped_sum)# 按照 'Category' 列进行分组,并计算每组 'Value' 的平均值grouped_mean = df.groupby('Category')['Value'].mean()print("n按照 Category 分组求平均值:n", grouped_mean)# 按照 'Category' 和 'City' 列进行分组,并计算每组 'Value' 的总和grouped_multi = df.groupby(['Category', 'City'])['Value'].sum()print("n按照 Category 和 City 分组求和:n", grouped_multi)# 使用 agg 函数进行多种聚合操作grouped_agg = df.groupby('Category')['Value'].agg(['sum', 'mean', 'count'])print("n使用 agg 函数进行多种聚合操作:n", grouped_agg)# 对不同的列应用不同的聚合函数grouped_diff_agg = df.groupby('Category').agg({'Value': 'sum', 'City': 'nunique'})print("n对不同的列应用不同的聚合函数:n", grouped_diff_agg)# 使用 transform 进行组内转换df['Category_Mean'] = df.groupby('Category')['Value'].transform('mean')print("n使用 transform 进行组内转换:n", df)# 使用 apply 应用自定义函数def custom_function(x):    return x.max() - x.min()grouped_apply = df.groupby('Category')['Value'].apply(custom_function)print("n使用 apply 应用自定义函数:n", grouped_apply)

Pandas 分组后如何处理缺失值 (NaN)?

在分组聚合操作中,如果数据包含缺失值 (NaN),

groupby()

默认会将 NaN 值排除在外。这意味着 NaN 值不会参与到聚合计算中。

排除 NaN (默认行为):

groupby()

默认跳过 NaN 值。 如果一个组内的所有值都是 NaN,那么聚合结果也会是 NaN。填充 NaN: 你可以在分组之前使用

fillna()

方法填充 NaN 值。例如,使用组内的平均值或中位数填充。

import pandas as pdimport numpy as npdata = {'Category': ['A', 'A', 'B', 'B', 'A'],        'Value': [10, np.nan, 20, 25, 12]}df = pd.DataFrame(data)# 默认行为:排除 NaNgrouped_sum = df.groupby('Category')['Value'].sum()print("排除 NaN:n", grouped_sum)# 填充 NaN 值 (使用组内平均值)df['Value'] = df.groupby('Category')['Value'].transform(lambda x: x.fillna(x.mean()))grouped_sum_filled = df.groupby('Category')['Value'].sum()print("n填充 NaN 后求和:n", grouped_sum_filled)

如何对分组后的数据进行排序,并获取每组的前 N 个值?

有时候,你需要对每个分组内的数据进行排序,然后提取每组的前 N 个值。 这在很多场景下都很有用,例如找出每个类别下销量最高的前几名产品。

import pandas as pddata = {'Category': ['A', 'A', 'A', 'B', 'B', 'B'],        'Value': [10, 15, 5, 20, 25, 18]}df = pd.DataFrame(data)# 按照 Category 分组,并对 Value 降序排序,获取每组的前 2 个值def top_n(df, n=2):    return df.sort_values(by='Value', ascending=False).head(n)top_2 = df.groupby('Category').apply(top_n)print(top_2)# 如果想重置索引,可以这样做top_2 = df.groupby('Category').apply(top_n).reset_index(drop=True)print("n重置索引后:n", top_2)

分组聚合后,如何将结果合并回原始 DataFrame?

transform()

函数非常适合这种场景。 它可以将聚合后的结果广播回原始 DataFrame,保持索引对齐。

import pandas as pddata = {'Category': ['A', 'A', 'B', 'B', 'A'],        'Value': [10, 15, 20, 25, 12]}df = pd.DataFrame(data)# 计算每个 Category 的平均值,并将结果合并回原始 DataFramedf['Category_Mean'] = df.groupby('Category')['Value'].transform('mean')print(df)

这个方法避免了手动合并的麻烦,而且效率很高。

transform()

保持了 DataFrame 的结构,使得后续分析更加方便。

以上就是Python怎么用pandas对数据进行分组_pandas DataFrame数据分组聚合操作的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1371840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Python怎么计算两个日期的差值_Python日期时间差计算指南
上一篇 2025年12月14日 11:47:58
python中is和==有什么区别_python is与==运算符差异对比分析
下一篇 2025年12月14日 11:48:05

相关推荐

  • 德邦快递客户编码绑定方法

    德邦快递客户编码绑定方法德邦快递客户编码绑定方法德邦快递客户编码绑定方法德邦快递客户编码绑定方法

    德邦快递客户编码绑定方法,详细操作步骤如下。 1、 打开德邦快递应用,点击右下角我的选项。 2、 进入我的页面,选择工具服务中的客户中心即可。 3、 登录客户中心,点击立即绑定。 4、 输入手机号,获取验证码并填写后,点击立即绑定即可完成。 以上就是德邦快递客户编码绑定方法的详细内容,更多请关注创想…

    2026年9月1日 用户投稿
    200
  • 打印机驱动安装失败怎么办?

    打印机驱动安装失败怎么办?打印机驱动安装失败怎么办?打印机驱动安装失败怎么办?打印机驱动安装失败怎么办?

    在日常生活中,我们难免会遇到各种各样的问题,但无论怎样,我们都应该认真对待并妥善解决这些问题。今天,小编就来给大家分享一下关于打印机安装失败的解决方法,以便大家在遇到类似情况时能够自行解决。 由于电脑系统的配置和设置存在差异,并且打印机种类繁多,这常常会导致打印机驱动安装失败的情况发生。因此,今天我…

    2026年9月1日 用户投稿
    400
  • 如何使用Composer简化WordPress代码解析工作

    可以通过一下地址学习composer:学习地址 在处理 wordpress 插件开发时,我遇到了一个挑战:需要解析 wordpress 源码中的内联文档,并将其转换为开发者参考文档。这个任务看似简单,但实际上需要处理大量的代码和文档,工作量巨大且容易出错。最终,我通过使用 composer 安装和管…

    用户投稿 2026年9月1日
    000
  • 如何修复谷歌浏览器崩溃 Chrome浏览器常见问题解决指南

    chrome浏览器频繁崩溃通常由扩展程序冲突、缓存损坏、系统资源不足或浏览器文件损坏引起,可通过禁用扩展、清理缓存、检查资源占用、更新浏览器、扫描恶意软件、重置设置或重新安装来解决;其中扩展程序是最常见原因,可借助隐身模式和逐一启用法排查;清理缓存能消除因数据冲突导致的崩溃,重置设置可恢复默认配置并…

    2026年9月1日
    000
  • 快兔网盘PC客户端如何使用_快兔网盘PC客户端使用教程

    快兔网盘PC端需通过安卓模拟器运行,用户先下载模拟器安装包并完成快速安装,随后在模拟器内启动快兔网盘APP进行登录;接着可使用上传、文件管理、下载解压及分享等功能,所有操作均通过模拟器界面完成;为提升体验,建议开启高帧率模式、设置键盘快捷键,并避免多实例运行以减少卡顿。 快兔网盘PC客户端的使用主要…

    2026年9月1日
    100
  • 苹果选择通义,肯定阿里的同时,也否定了阿里

    苹果ai订单尘埃落定:阿里通义千问胜出,生态安全成关键 历时两年的苹果AI订单争夺战最终以阿里巴巴胜出告终。2月11日消息,苹果已选择阿里巴巴为中国版iPhone开发人工智能功能。 自2023年起,苹果便在测试多家中国AI模型,竞争者包括百度、字节跳动等巨头,以及百川智能、月之暗面和DeepSeek…

    2026年9月1日
    000
  • 处理HHVM/PHP环境的利器:sebastian/environment库的使用指南

    可以通过一下地址学习composer:学习地址 在开发php项目时,我们常常需要考虑代码在不同运行环境下的兼容性问题。最近,我在开发一个项目时遇到了这样的困扰:同样的代码在hhvm和php环境下表现不一致,导致调试和维护变得非常困难。经过一番探索,我找到了sebastian/environment这…

    用户投稿 2026年9月1日
    000
  • 百度浏览器视频下载技巧 如何用百度浏览器保存在线视频

    百度浏览器无法直接下载主流视频网站的版权内容,需借助扩展程序或第三方工具实现;用户可安装高评价、高安装量的视频下载扩展,通过解析视频链接获取下载选项,但受限于网站版权保护技术,并非所有视频都能成功下载,最终能否下载取决于目标网站的技术防护措施。 关于如何用百度浏览器下载在线视频,这其实是个老生常谈的…

    2026年9月1日
    000
  • ChatGPT怎么用_ChatGPT注册登录与基础使用教程

    答案是注册并掌握提问技巧后,ChatGPT能成为高效工具。需通过官网注册,验证邮箱和手机号,登录后可在聊天界面输入问题,利用上下文记忆、角色设定、明确指令等技巧提升回答质量,免费版适合初试,Plus版则提供GPT-4、插件、数据分析等高级功能,适合高频深度使用者。 ☞☞☞AI 智能聊天, 问答助手,…

    2026年9月1日
    000
  • 《星际:异端先知》或将颠覆传统 用AI生成NPC对话

    顽皮狗最新作品《星际:异端先知》承诺将为玩家带来前所未有的宏大体验。尽管目前关于这款游戏的信息有限,但此前已有开发者透露游戏中将引入rpg成长机制。近期,该工作室发布的招聘启事也表明,他们有意在游戏中应用ai技术来生成npc对话内容。 顽皮狗正在招募一名高级对话设计师,负责包括游戏场景和过场动画在内…

    2026年9月1日
    000
  • 深入探讨PHP对象反射:sebastian/object-reflector的应用与实践

    可以通过一下地址学习composer:学习地址 在php开发中,对象反射是一个非常有用的工具,它允许开发者在运行时检查和操作类的属性和方法。然而,当我们需要深入了解对象的继承属性或访问私有和保护属性时,php原生的反射api显得有些不足。这让我在开发过程中遇到了不少麻烦。 直到我发现了sebasti…

    用户投稿 2026年9月1日
    000
  • 使用Symfony/Translation组件轻松实现应用国际化

    可以通过一下地址学习composer:学习地址 在开发多语言支持的应用时,我遇到了一个难题:如何高效地管理和翻译文本内容。尝试了多种方法后,我发现 symfony 的 translation 组件不仅解决了我的问题,还提供了丰富的功能,使得国际化变得简单而高效。 首先,我们需要通过 Composer…

    用户投稿 2026年9月1日
    100
  • 响指AI开发平台进阶版重磅上线:后端能力全面开放!

    “我本来只是想帮我们机构整理一下志愿者信息,没想到最后竟然做出了一个能在线报名、筛选和地图导航的完整平台。” 李瑶是一家公益组织的项目协调员,她原计划请人开发一个志愿者报名系统,但被动辄上万的开发费用劝退了。 后来她试用了响指进阶版,只输入一句话:“我想做一个可以收集志愿者报名信息、自动分组、并在地…

    2026年9月1日
    000
  • 怎么在VSCode安装Pylint_VSCode配置Python代码检查工具Pylint教程

    答案是安装并配置Pylint扩展与Python包,再在VSCode中启用并自定义规则。首先安装VSCode的Pylint扩展,然后通过pip install pylint在Python环境中安装库;接着在settings.json中设置”python.linting.pylintEnab…

    2026年9月1日
    600
  • 如何使用SymfonyErrorHandler提升PHP调试效率

    可以通过一下地址学习composer:学习地址 在开发 php 应用程序时,错误处理和调试是一个不可避免的问题。最近在一个项目中,我遇到了一个棘手的情况:代码运行时抛出了大量难以追踪的错误,严重影响了开发进度。尝试了多种方法后,我发现了 symfony 的 errorhandler 组件,它极大地简…

    用户投稿 2026年9月1日
    000
  • 店群专用指纹浏览器是什么 专为店群运营设计的防关联浏览器解析

    店群专用指纹浏览器,说白了,就是一种为多账号运营而生的特殊浏览器。它能让你的每一台电脑,或者说你的每一个浏览器窗口,都像一台全新的、独一无二的设备,从而有效避免电商平台对你多账号操作的“关联”检测,确保你的店群业务能够稳定、安全地运行。 店群运营的本质,就是通过批量开设和管理多个店铺,实现规模化盈利…

    2026年9月1日
    400
  • OneDrive如何管理同步文件夹_OneDrive同步文件夹管理教程

    可通过更改位置、选择性同步和按需文件功能优化OneDrive同步。首先关闭自动启动并重命名原文件夹,运行onedrive.exe时指定新路径如D:MyOneDrive;其次在设置中选择仅同步必要文件夹以节省空间;然后启用“节省空间并按需下载文件”功能,使文件仅在线显示占位符;最后必要时取消链接设备并…

    2026年9月1日
    000
  • 悟空浏览器屏幕变一半了怎么办

    悟空浏览器屏幕显示一半的问题通常是误触分屏模式或屏幕旋转异常导致的,可依次检查是否进入分屏或多任务模式并退出、尝试横竖屏切换恢复显示、清除浏览器缓存、更新应用至最新版本、排查系统兼容性或第三方插件干扰,若仍无法解决则建议卸载后重新安装官方版本应用即可恢复正常。 如果你在使用悟空浏览器时发现屏幕显示只…

    2026年9月1日
    200
  • Java中如何将时间戳1670037101000转换为yyyy-MM-dd’T’HH:mm:ss’Z’格式的UTC和上海时间?

    Java时间戳格式转换:UTC和上海时间 本文介绍如何使用Java将时间戳(例如1670037101000)转换为”yyyy-MM-dd’T’HH:mm:ss’Z’”格式的UTC时间和上海时间。 以下Java代码片段演示了转换过程: imp…

    2026年9月1日
    000
  • win10怎么禁用驱动程序强制签名_win10驱动程序强制签名禁用方法

    1、通过组策略编辑器选择“忽略”设备驱动程序代码签名并重启;2、通过高级启动临时禁用驱动强制签名;3、使用管理员命令提示符执行bcdedit命令开启测试签名和禁用完整性检查。 如果您尝试安装某些第三方或未经认证的驱动程序,但系统因强制签名策略而阻止安装,则需要调整相关设置。以下是解决此问题的步骤: …

    2026年9月1日
    000

发表回复

登录后才能评论
关注微信