查看原文
其他

pandarallel库 | 多核运行提升 pandas 速度

大邓 大邓和他的Python
2024-09-09

只需更改一行代码, pandarallel库 就可以充分利用CPU性能,并行化所有 Pandas 操作,加速你的数据处理。

pandarallel 还提供漂亮的进度条(在笔记本和终端上可用)以 大致了解要完成的剩余计算量。

没有并行化

并行化

可以看到,使用并行化后,处理速度快了很多。


一、性能对比

cpu有n个核,大概并行化会提升大概n倍。以下是使用和不使用 Pandaral·lel 的比较基准。实验环境:

  • 操作系统:Linux Ubuntu 16.04
  • 硬件:Intel Core i7 @ 3.40 GHz - 4 核

并行操作的运行速度大约是标准操作的 4 倍(除了标准操作的运行速度仅快 3.2 倍)。



二、特性

pandarallel 目前实现以下 API:pandas

三、使用

Mac和linux,没有什么特殊的用法, 但在 Windows 上, 您掉用的函数必须是自包含的,并且不应依赖于外部资源。为了降低大家的记忆压力, 咱们假设所有系统,都要满足自包含且不依赖外部资源。

3.1 安装

pip install pandarallel

3.1 正确用法

定义好计算函数func, 标准的pandas的批计算是在pd.Series基础上掉用apply方法,即 pd.Series.apply(func)

而pandarallel代码语法略微不同, pd.Series.parallel_apply(func)

import pandas as pd
from pandarallel import pandarallel
pandarallel.initialize()


def func(x):
    import math
    # 在函数体func内导入math,掉用math, okay!
    return math.sin(x.a**2) + math.sin(x.b**2)
  
  
df = pd.read_csv('实验的csv文件路径')
df['result'] = df['某个数值字段'].parallel_apply(func)

3.2 错误用法

import pandas as pd
from pandarallel import pandarallel
pandarallel.initialize()


import math
def func(x):
    # func不能依赖外部资源, math定义在函数体func之外, 会出问题的!
    return math.sin(x.a**2) + math.sin(x.b**2)
  
  
df = pd.read_csv('实验的csv文件路径')
df['result'] = df['某个数值字段'].parallel_apply(func)

3.3 使用场景

并行化是有代价的(实例化新进程、通过共享内存发送数据、 ...),因此,并行化只有在并行化的计算量大时才有效足够高。对于非常少量的数据,并不总是使用并行化值得。

pandarallel 通过使用计算机cpu所有内核来绕过此限制。但代价是,需要两倍于标准操作的内存占用。

精选内容

93G数据集 | 中国裁判文书网(2010-2021)

96G数据集 | 2亿条中国大陆企业工商注册信息

数据集 | 3571万条专利申请数据集(1985-2022年)

预训练模型 | 使用1000w专利摘要训练word2vec模型,可用于开发词典

使用中文MD&A数据集训练word2vec预训练模型, 可扩展或新建会计金融等领域的情感词典

词向量 | 使用1亿B站用户签名训练word2vec词向量

数据集 | 2001-2022年A股上市公司年报&管理层讨论与分析

CAR2023 | 文本分析在会计中的应用

MS | 使用网络算法识别创新的颠覆性与否

管理世界 | 使用文本分析词构建并测量 短视主义

管理世界 | 使用 经营讨论与分析 测量 企业数字化指标

管理世界 | 用正则表达式、文本向量化、线性回归算法从md&a数据中计算 「企业融资约束指标

中国管理科学 | 使用业绩说明会文本数据测量上市公司前瞻性信息

管理科学学报 | 使用LDA算法计算政策扩散速度与扩散程度

心理科学进展 | 语义距离与创造性思维关系的元分析

JMR | 测量消费者的「语言确定性

金融研究 | 使用Python构建「关键审计事项信息含量」

案例代码 | 使用正则表达式判别微博用户mbti类型

可视化 | 99-21年地方政府报告关键词变化趋势

使用 Word2Vec 和 TF-IDF 计算五类企业文化

数据集 | 2006年-2022年企业社会责任报告

数据集 | 2001-2022年A股上市公司年报&管理层讨论与分析

数据集 | 07-21年上市公司「委托贷款公告」

数据集 | 200w政府采购合同公告明细数据(1996.6-2022.12)

数据集 | 84w条业绩说明会问答数据(2005-2023)

代码 | 如何处理远超电脑内存的csv文件

Modin,只需一行代码加速你的Pandas

继续滑动看下一个
大邓和他的Python
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存