0

0

Python 数据聚合操作的性能优化

冷漠man

冷漠man

发布时间:2026-02-18 14:35:25

|

603人浏览过

|

来源于php中文网

原创

pandas.groupby().agg()应避免字典值用list,改用named aggregation;groupby默认dropna=true需显式设置;慎用apply,优先内置方法;as_index=false隐性拷贝耗内存,建议reset_index()。

python 数据聚合操作的性能优化

pandas.groupby().agg() 时别直接传字典套 list

常见错误是写成 df.groupby('key').agg({'col': ['mean', 'std']}),看似简洁,但内部会触发多重路径判断和冗余计算,尤其在列多、聚合函数多时,性能掉得明显。

实操建议:拆成明确的 named aggregation 写法,让 pandas 提前知道每个输出列名和对应函数,跳过推导逻辑:

df.groupby('key').agg(
    mean_val=('col', 'mean'),
    std_val=('col', 'std')
)
  • 避免用 ['mean', 'std'] 这种 list 形式——它强制 pandas 启动旧式聚合引擎
  • 如果必须复用函数逻辑,优先封装为 lambda 或命名函数,再传入 tuple,不要塞进 dict value 里
  • 注意:Pandas ≥1.3 才完整支持 named aggregation;老版本会静默回退到慢路径

groupby 前先 dropna=False 还是默认丢?

默认情况下 groupby 会自动丢弃 NaN 的分组键(即 dropna=True),这常导致结果行数比预期少,且不易察觉——特别是当你的业务逻辑本该包含空分组时。

实操建议:明确声明 dropna 参数,别依赖默认值:

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

动软商城系统
动软商城系统

动软商城系统是一款优秀的网上商城系统,经营者只需要轻松的后台操作,就可以马上拥有功能强的网上销售系统,同时动软商城系统提供多样的营销手段帮助您成功打开网上销售市场。动软的模版界面机制,可以轻松的搭建出风格各异的界面,最大限度的满足经营者的要求,还拥有专业SEO优化系统,大大提高网页被搜索引擎抓取收录的几率。动软商城系统先进的流程控制技术全面促进进、销、存等系统的协同,支持企业数据整合和网络资源信息

下载
  • 要保留空键分组 → 加 dropna=False,否则 NaN 键全被过滤,size()count() 行为也不同
  • count() 本身不计 NaN,但 size() 计;混用时容易误判“缺失”是数据问题还是分组被删了
  • 如果后续要 merge 回原表,没设 dropna=False 可能导致 key 对不上,报 KeyError 或静默丢行

大表聚合卡住?检查是否意外触发 apply 回退

当你写 df.groupby('key').apply(lambda x: x.sort_values('time').tail(1)),看起来只是取每组最新一条,但只要 lambda 里用了非标量操作或返回结构不一致,pandas 就会放弃向量化路径,切到慢得多的 Python 循环模式。

实操建议:优先用内置方法替代 apply

  • 取每组最新/最旧 → 用 idxmax()/idxmin() 配合 .loc,比如 df.loc[df.groupby('key')['time'].idxmax()]
  • 需要复杂排序后取值 → 先 sort_values 整体排,再用 groupby(...).head(1),比 apply 快 5–10 倍
  • 确认是否真需要 apply:打印 type(result),如果是 SeriesDataFrame 且 shape 不统一,基本已掉进回退陷阱

聚合后内存暴涨?小心 as_index=False 的隐性拷贝

很多人加 as_index=False 是为了图方便省去 reset_index(),但它会让 pandas 在聚合阶段就构造新 DataFrame,而不是复用原有索引结构,对大表来说等于白多占一份内存。

实操建议:按需选择索引策略,别无脑关:

  • 后续还要继续 groupby 或 join → 保持默认 as_index=True,索引就是天然分组标识,更省内存
  • 必须输出平铺表结构 → 用 reset_index() 显式调用,比 as_index=False 更可控,也方便链式调试
  • 聚合列名含特殊字符或重复名时,as_index=False 可能引发 ValueError: cannot insert xxx, already exists,而 reset_index() 能提前暴露问题

真正影响性能的往往不是聚合函数本身,而是你没意识到 pandas 正在为你悄悄做哪些事——比如重排索引、推断类型、补全缺失分组。这些动作在小数据上无感,一到百万行以上,延迟和内存就全堆在看不见的地方。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

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

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

75

2025.12.04

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

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

4

2026.01.31

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

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

199

2023.11.20

lambda表达式
lambda表达式

Lambda表达式是一种匿名函数的简洁表示方式,它可以在需要函数作为参数的地方使用,并提供了一种更简洁、更灵活的编码方式,其语法为“lambda 参数列表: 表达式”,参数列表是函数的参数,可以包含一个或多个参数,用逗号分隔,表达式是函数的执行体,用于定义函数的具体操作。本专题为大家提供lambda表达式相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.15

python lambda函数
python lambda函数

本专题整合了python lambda函数用法详解,阅读专题下面的文章了解更多详细内容。

192

2025.11.08

Python lambda详解
Python lambda详解

本专题整合了Python lambda函数相关教程,阅读下面的文章了解更多详细内容。

58

2026.01.05

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

419

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

594

2023.08.10

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

561

2026.02.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 4.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.6万人学习

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

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