Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
提升Pandas代码效率的两个绝妙技巧_创想鸟

提升Pandas代码效率的两个绝妙技巧

如果你曾经使用过pandas处理表格数据,你可能会熟悉导入数据、清洗和转换的过程,然后将其用作模型的输入。然而,当你需要扩展和将代码投入生产时,你的pandas管道很可能开始崩溃并运行缓慢。在这篇文章中,我将分享2个技巧,帮助你提升pandas代码的执行速度,提高数据处理效率并避免常见的陷阱。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

让你的Pandas代码快得离谱的两个技巧

技巧1:矢量化操作

在Pandas中,矢量化操作是一种高效的工具,能够以更简洁的方式处理整个数据框的列,而无需逐行循环。

它是如何工作的?

广播是矢量化操作的一个关键要素,它允许您直观地操作具有不同形状的对象。

eg1: 具有3个元素的数组a与标量b相乘,得到与Source形状相同的数组。

让你的Pandas代码快得离谱的两个技巧

eg2: 在进行加法运算时,将形状为(4,1)的数组a与形状为(3,)的数组b相加,结果会得到一个形状为(4,3)的数组。

让你的Pandas代码快得离谱的两个技巧

已有很多文章讨论了这一点,特别是在深度学习中,大规模矩阵乘法很常见。本文将以两个简短例子进行讨论。

首先,假设您想要计算给定整数在列中出现的次数。以下是 2 种可能的方法。

"""计算DataFrame X 中 "column_1" 列中等于目标值 target 的元素个数。参数:X: DataFrame,包含要计算的列 "column_1"。target: int,目标值。返回值:int,等于目标值 target 的元素个数。"""# 使用循环计数def count_loop(X, target: int) -> int:return sum(x == target for x in X["column_1"])# 使用矢量化操作计数def count_vectorized(X, target: int) -> int:return (X["column_1"] == target).sum()

现在假设有一个DataFrame带有日期列并希望将其偏移给定的天数。使用矢量化操作计算如下:

def offset_loop(X, days: int) -> pd.DataFrame:d = pd.Timedelta(days=days)X["column_const"] = [x + d for x in X["column_10"]]return Xdef offset_vectorized(X, days: int) -> pd.DataFrame:X["column_const"] = X["column_10"] + pd.Timedelta(days=days)return X

技巧2:迭代

「for循环」

第一个也是最直观的迭代方法是使用Python for循环。

代码小浣熊 代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51 查看详情 代码小浣熊

def loop(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:res = []i_remove_col = df.columns.get_loc(remove_col)i_words_to_remove_col = df.columns.get_loc(words_to_remove_col)for i_row in range(df.shape[0]):res.append(remove_words(df.iat[i_row, i_remove_col], df.iat[i_row, i_words_to_remove_col]))return result

「apply」

def apply(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return df.apply(func=lambda x: remove_words(x[remove_col], x[words_to_remove_col]), axis=1).tolist()

在 df.apply 的每次迭代中,提供的可调用函数获取一个 Series,其索引为 df.columns,其值是行的。这意味着 pandas 必须在每个循环中生成该序列,这是昂贵的。为了降低成本,最好对您知道将使用的 df 子集调用 apply,如下所示:

def apply_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return df[[remove_col, words_to_remove_col]].apply(func=lambda x: remove_words(x[remove_col], x[words_to_remove_col]), axis=1)

「列表组合+itertuples」

使用itertuples与列表相结合进行迭代肯定会更好。itertuples生成带有行数据的(命名)元组。

def itertuples_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return [remove_words(x[0], x[1])for x in df[[remove_col, words_to_remove_col]].itertuples(index=False, name=None)]

「列表组合+zip」

zip接受可迭代对象并生成元组,其中第i个元组按顺序包含所有给定可迭代对象的第i个元素。

def zip_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return [remove_words(x, y) for x, y in zip(df[remove_col], df[words_to_remove_col])]

「列表组合+to_dict」

def to_dict_only_used_columns(df: pd.DataFrame) -> list[str]:return [remove_words(row[remove_col], row[words_to_remove_col])for row in df[[remove_col, words_to_remove_col]].to_dict(orient="records")]

「缓存」

除了我们讨论的迭代技术之外,另外两种方法可以帮助提高代码的性能:缓存和并行化。如果使用相同的参数多次调用 pandas 函数,缓存会特别有用。例如,如果remove_words应用于具有许多重复值的数据集,您可以使用它functools.lru_cache来存储函数的结果并避免每次都重新计算它们。要使用lru_cache,只需将@lru_cache装饰器添加到 的声明中remove_words,然后使用您首选的迭代方法将该函数应用于您的数据集。这可以显着提高代码的速度和效率。以下面的代码为例:

@lru_cachedef remove_words(...):... # Same implementation as beforedef zip_only_used_cols_cached(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return [remove_words(x, y) for x, y in zip(df[remove_col], df[words_to_remove_col])]

添加此装饰器会生成一个函数,该函数会“记住”之前遇到的输入的输出,从而无需再次运行所有代码。

「并行化」

最后一张王牌是使用 pandarallel 跨多个独立的 df 块并行化我们的函数调用。该工具易于使用:您只需导入并初始化它,然后将所有 .applys 更改为 .parallel_applys。

from pandarallel import pandarallelpandarallel.initialize(nb_workers=min(os.cpu_count(), 12))def parapply_only_used_cols(df: pd.DataFrame, remove_col: str, words_to_remove_col: str) -> list[str]:return df[[remove_col, words_to_remove_col]].parallel_apply(lambda x: remove_words(x[remove_col], x[words_to_remove_col]), axis=1)

以上就是提升Pandas代码效率的两个绝妙技巧的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
APP开发并不难,关键是你有没有找到对的团队
上一篇 2025年11月7日 17:23:55
微软修补了用来传播勒索软件的 Windows 零日漏洞
下一篇 2025年11月7日 17:24:03

相关推荐

  • 马斯克xAI的Grok将推AI视频检测工具,能否破解深度伪造难题?

    随着ai视频生成技术飞速渗透网络,深度伪造内容不断扩散,网络信息真实性面临前所未有的挑战。在此背景下,马斯克的xai公司的grok模型即将推出一项关键升级,打造一款“真伪侦探”工具。 近日,马斯克在X平台回应网友担忧时表示,Grok即将获得识别AI生成视频并追踪其网络来源的能力,以此应对深度伪造内容…

    2026年9月21日
    000
  • 豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型

    豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 豆包大模型 字节跳动自主研发的一系列大型语言模型 834 查看详情 豆包大模型1.6 lite是什么 豆包大模型1.6 lite(doubao-seed-1.6-lite)是字节跳动推出的轻量级…

    2026年9月21日 用户投稿
    300
  • 虚拟伴侣AI如何打造专属声音 虚拟伴侣AI语音合成技术的定制教程

    虚拟伴侣AI如何打造专属声音 虚拟伴侣AI语音合成技术的定制教程虚拟伴侣AI如何打造专属声音 虚拟伴侣AI语音合成技术的定制教程虚拟伴侣AI如何打造专属声音 虚拟伴侣AI语音合成技术的定制教程虚拟伴侣AI如何打造专属声音 虚拟伴侣AI语音合成技术的定制教程

    通过语音合成技术定制虚拟伴侣AI声音,需选择支持声音克隆的引擎如VITS,采集高质量语音样本并训练个性化模型,调整音色与情感参数后集成至系统,实现自然流畅的语音交互体验。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 如果您希望为虚拟伴侣A…

    2026年9月12日 用户投稿
    100
  • 灵绘AI如何进行风格迁移_灵绘AI风格迁移的实现方法详解

    灵绘AI支持艺术风格迁移,提供预设模板、自定义模型上传和参考图实时提取三种方式。首先可选择内置风格如“梵高星空”并调节强度至0.7应用;其次能导入.style或.onnx格式的自定义模型扩展风格库;还可通过加载内容图与风格图,在参考图模式下设置迭代次数与边缘保护,利用VGG网络实现高质量融合,最终导…

    2026年9月12日
    000
  • 老照片修复AI工具测评 老照片修复AI在线入口

    老照片修复AI工具推荐佐糖、jpgHD和迅捷图片恢复。佐糖支持网页与移动端操作,可自动识别并修复模糊、霉斑等问题,并提供智能上色;jpgHD专注修复JPEG压缩损伤,具备人脸增强功能且完全免费;迅捷图片恢复界面友好,擅长处理折痕与褪色,兼容多种格式。在线入口为https://picwish.cn/a…

    2026年9月12日
    100
  • 老照片修复AI技术优势 老照片修复AI软件推荐

    老照片修复AI技术具备智能细节重建、色彩还原与动态增强、操作便捷性等优势,推荐使用PhotoHealer软件实现高效修复。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 老照片修复AI技术优势 老照片修复AI软件推荐,这是不少网友都关注的,…

    2026年9月12日
    100
  • 还在为跨平台客服发愁?晓多AI全自动覆盖淘宝+京东+拼多多,24小时秒回!1个系统搞定3大平台!AI秒回+违禁词拦截,跨平台客服从此零失误!

    还在为淘宝、京东、拼多多的客服管理焦头烂额?消息漏回、响应延迟、违禁词误发让多平台运营变成噩梦?晓多ai智能客服系统带来终极解决方案——一键接入三大平台,实现24小时自动秒回!独创的ai风控官实时拦截20000+违禁7词,杜绝违规风险;智能分流技术0.3秒识别客户需求,让咨询转化率直线飙升。无论是商…

    2026年9月12日
    000
  • Coral NPU— 谷歌推出的全栈开源AI平台

    Coral NPU是什么 coral npu 是由谷歌推出的一个全栈开源人工智能平台,专为低功耗的边缘计算设备(例如智能手表、ar眼镜等)打造,旨在应对性能瓶颈、生态碎片化以及用户隐私保护三大核心挑战。该npu基于开放的 risc-v 指令集架构,集成了标量核心、向量执行单元和矩阵运算单元,能够高效…

    2026年9月12日
    300
  • 老照片修复AI快速上手 老照片修复AI软件入口

    老照片修复AI软件入口为https://www.haoee.com/application,该平台利用人工智能技术精准识别并修复老照片中的划痕、折痕与斑驳区域,通过像素级填充提升图像质感;内置色彩还原引擎可为黑白照片智能上色,还原符合时代特征的自然色调,使人物服饰与背景协调统一;支持一键高清放大,采…

    2026年9月11日
    100
  • 虚拟伴侣AI如何实现艺术创作 虚拟伴侣AI创意生成功能的开发方法

    虚拟伴侣AI如何实现艺术创作 虚拟伴侣AI创意生成功能的开发方法虚拟伴侣AI如何实现艺术创作 虚拟伴侣AI创意生成功能的开发方法虚拟伴侣AI如何实现艺术创作 虚拟伴侣AI创意生成功能的开发方法虚拟伴侣AI如何实现艺术创作 虚拟伴侣AI创意生成功能的开发方法

    虚拟伴侣AI可通过多模态模型、风格迁移、强化学习与情感计算实现艺术创作。首先构建跨模态神经网络,利用CLIP与Transformer架构,结合图文、音频数据预训练,实现文本生成图像或音乐;其次引入风格迁移技术,采用CNN提取艺术家风格特征,通过Gram矩阵优化生成结果,支持用户选择特定风格输出;再设…

    2026年9月11日 用户投稿
    100
  • 老照片修复AI功能解析 老照片修复AI在线地址

    老照片修复AI提供一键修复、智能上色、无损放大和人像优化功能,支持在线免费使用,操作便捷。该平台采用深度学习与色彩迁移算法,依托GPU集群高效处理,适配民国至近代各时期照片特征,用户可直接上传图片进行修复并下载高清结果。在线地址为:https://www.aitupian.com/la-zhao-p…

    2026年9月10日
    100
  • 朱雀大模型检测工具 腾讯朱雀AI官网平台入口

    腾讯朱雀AI官网平台入口为https://matrix.tencent.com/ai-detect/,提供文本、图像、视频内容的AI生成检测服务,支持双通道同步提交,基于深度学习模型分析并输出置信度结果,用户需注册腾讯账号登录使用。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使…

    2026年9月10日
    000
  • 华为官宣未来三年规划多款昇腾芯片:明年 Q1 发 950PR

    9 月 18 日,在华为全联接大会 2025 上,华为轮值董事长徐直军正式公布了昇腾 ai 芯片的未来发展规划。接下来三年内,华为将陆续发布多款新一代昇腾芯片,涵盖昇腾 950pr、950dt、960 以及 970 等型号。 华为 在大会的主题演讲中,徐直军详细介绍了昇腾系列芯片的发展路线。按照计划…

    2026年9月9日
    100
  • AI做音乐推荐怎么实现_Spotify推荐算法原理与应用

    AI做音乐推荐怎么实现_Spotify推荐算法原理与应用AI做音乐推荐怎么实现_Spotify推荐算法原理与应用AI做音乐推荐怎么实现_Spotify推荐算法原理与应用AI做音乐推荐怎么实现_Spotify推荐算法原理与应用

    答案:AI音乐推荐通过协同过滤、内容分析、混合系统和上下文感知等多维度算法,结合用户行为与歌曲特征,实现个性化推荐。Spotify利用隐式反馈、音频特征提取、深度学习和NLP技术,融合用户偏好与情境因素,解决冷启动问题,并在探索与利用间平衡,持续优化用户体验。 ☞☞☞AI 智能聊天, 问答助手, A…

    2026年9月4日 用户投稿
    000
  • 怎么用AI做情感分析_使用NLP进行文本情感识别方法

    怎么用AI做情感分析_使用NLP进行文本情感识别方法怎么用AI做情感分析_使用NLP进行文本情感识别方法怎么用AI做情感分析_使用NLP进行文本情感识别方法怎么用AI做情感分析_使用NLP进行文本情感识别方法

    情感分析通过NLP技术让机器识别文本情绪,核心在于数据质量与模型选择。需经数据预处理、特征提取、模型训练与评估,常用TF-IDF、词向量及BERT等模型,结合朴素贝叶斯、SVM或深度学习方法,最终部署为API实现实时分析,广泛应用于品牌监控、产品优化与市场洞察,但面临语境理解、标注成本、语言多样性、…

    2026年9月1日 用户投稿
    100
  • 还在 SSH + Vim?VS Code 都支持远程开发了

    还在 SSH + Vim?VS Code 都支持远程开发了还在 SSH + Vim?VS Code 都支持远程开发了还在 SSH + Vim?VS Code 都支持远程开发了还在 SSH + Vim?VS Code 都支持远程开发了

    一.趋势 随着容器化和深度学习等技术在生产中的应用,越来越多的场景需要“远程”开发。例如: 服务器虚拟机容器等远程环境往往难以或无法在本地完全重建,比如: 特定配置:例如曾经遇到的 .Net Framework 4.0 + MSSQL 2000 ,以及安装了特定版本补丁的历史项目,几乎无法重现其环境…

    2026年8月31日 用户投稿
    200
  • AI做数学题怎么用_Photomath数学解题与步骤解析

    Photomath通过图像识别与自然语言处理将数学题转化为可计算表达式,再调用算法求解并展示详细步骤。使用时需确保题目清晰,选择合适解法,理解过程而非仅抄答案。其局限包括对手写体识别不准、难解创造性题目、侧重中小学内容。类似工具有Symbolab和Wolfram Alpha,各擅领域不同。提升学习效…

    2026年8月30日
    100
  • 智能助手怎么处理多模态任务_AI理解图片语音和文本方法

    多模态智能助手通过多模态嵌入、注意力机制、Transformer架构和对比学习等技术,将图像、语音和文本统一表示并关联,实现跨模态理解与响应;实际应用中面临数据稀疏性、模态不对齐、异构性和计算复杂度等挑战;性能评估需结合单模态指标、跨模态指标、用户满意度及对抗性测试综合判断。 ☞☞☞AI 智能聊天,…

    2026年8月29日
    000
  • 夸克AI怎么进行学术研究_夸克AI文献检索与综述生成方法

    夸克AI怎么进行学术研究_夸克AI文献检索与综述生成方法夸克AI怎么进行学术研究_夸克AI文献检索与综述生成方法夸克AI怎么进行学术研究_夸克AI文献检索与综述生成方法夸克AI怎么进行学术研究_夸克AI文献检索与综述生成方法

    利用夸克AI可高效完成文献检索、数据库构建、综述生成与查重优化。首先通过关键词限定与AI问答精准获取近三年相关文献,结合AI摘要快速提炼核心内容;随后建立结构化数据库,按研究方法、样本规模等维度分类整理,并标注引用等级;接着使用AI写作助手上传数据或摘要,设定时间与领域范围,自动生成逻辑清晰的综述初…

    2026年8月27日 用户投稿
    600
  • 实践CSS3选择器的代码演练

    CSS3选择器动手实践代码 CSS3选择器是Web开发中非常重要的一部分,它可以帮助我们更好地选择和控制HTML元素。在本文中,我们将使用具体的代码示例来学习和实践CSS3选择器的用法。 第一种选择器是元素选择器。它通过HTML元素的标签名进行选择。例如,我们可以使用以下代码选择所有的段落元素: p…

    2025年12月24日
    100

发表回复

登录后才能评论
关注微信