使用pandarallel 对数据进行并行处理,加速 pandas中的map,apply。

pandas做数据分析很好用,map、apply使用的也比较多,非常的耗时间。虽然map性能优于apply,但是在处理大量数据的时候处理速度依然很慢。下面介绍几个加速map,apply的方法。

一、pandarallel 包(多进程)并行加速

1、安装pandarallel

pip install pandarallel

对于windows用户,有一个不好的消息是,它只能在Windows的linux子系统上运行(WSL),你可以在微软官网上找到安装教程:
https://docs.microsoft.com/zh-cn/windows/wsl/about

2、使用pandarallel

1、导入包

from pandarallel import pandarallel

2、初始化

初始化函数为 pandarallel.initialize(shm_size_mb,nb_workers,progress_bar)
参数:

shm_size_mb:是给pandarallel的内存空间分配的大小
nb_workers:设置使用多少个CPU的核数
progress_bar:设置是否显示每个CPU的进度条

# 查看计算机cpu核数
import multiprocessing
cup_num = multiprocessing.cpu_count()
print(f"计算机cpu核数:{cup_num}")pandarallel.initialize(nb_workers=nb_workers,progress_bar=True)  # 初始化该这个b...并行库

4、使用方法

pandas 中的替换
apply替换parallel_apply
map替换parallel_map

样例:

import time
import pandas as pd
import numpy as np
import multiprocessing
cup_num = multiprocessing.cpu_count()
print(f"计算机cup核数:{cup_num}")
from pandarallel import pandarallel  # 导入pandaralle
pandarallel.initialize(nb_workers=cup_num-2,progress_bar=True)  # 初始化该这个b...并行库# 调用的函数
def func(x):import mathreturn math.sin(x.a**2) + math.sin(x.b**2)
df_size = int(5e6)
if __name__ == '__main__':# 需要在time_start = time.time()df = pd.DataFrame(dict(a=np.random.randint(1, 8, df_size),b=np.random.rand(df_size)))res_parallel = df.parallel_apply(func, axis=1)time_end = time.time()print("并行代码耗时 %f s" % (time_end - time_start))

效果:
使用pandarallel并行计算

不使用pandarallel并行计算

参考
https://blog.csdn.net/u010751000/article/details/121391796
https://blog.csdn.net/weixin_45631815/article/details/124085118

使用 pandas 对数据进行并行处理相关推荐

  1. Python使用pandas设置数据列中float数据类型的有效小数位数、抑制科学计数法

    Python使用pandas设置数据列中float数据类型的有效小数位数.抑制科学计数法 目录

  2. pandas删除数据行中的重复数据行、基于dataframe所有列删除重复行、基于特定数据列或者列的作何删除重复行、删除重复行并保留重复行中的最后一行、pandas删除所有重复行(不进行数据保留)

    pandas删除数据行中的重复数据行.基于dataframe所有列删除重复行.基于特定数据列或者列的作何删除重复行.删除重复行并保留重复行中的最后一行.pandas删除所有重复行(不进行数据保留) 目 ...

  3. Pandas获取数据列名称的列表(list):(column list)

    Pandas获取数据列名称的列表(list):(column list) 目录 Pandas获取数据列名称的列表(list):(column list) #仿真数据

  4. pandas dataframe数据聚合groupby、agg、privot基于sum统计详解及实例

    pandas dataframe数据聚合groupby.agg.privot基于sum统计详解及实例 知道了sum.那么min.max.mean.median都是举一反三的事情了. 在日常的数据分析中 ...

  5. pandas 删除数据

    pandas 删除数据 import pandas as pd df1 = pd.DataFrame({'1列': ['1行1列', '2行1列', '3行1列', '4行1列'],'2列': ['1 ...

  6. python的pandas方法_python使用Pandas处理数据的方法

    python使用Pandas处理数据的方法 发布时间:2020-06-17 13:50:10 来源:亿速云 阅读:119 作者:鸽子 Pandas是Python中非常常用的数据处理工具,使用起来非常方 ...

  7. Pandas简明教程:七、Pandas缺失数据的处理(数据清洗基础)

    文章目录 1.缺失数据的类型 2.定位缺失数据 3.修改定位数据 4.批量修改缺失数据 5.数据修复的利器--插值法(`interpolate`) 本系列教程教程完整目录: 数据清洗的内容其实很丰富, ...

  8. pandas 合并数据

    pandas合并数据使用append.比如我要合并一个文件夹里面所有的pic类型的数据,那么先使用os模块,把所有文件名列出, 然后依次读入成dataframe, 读入过程中,一次append, 如果 ...

  9. 【Python基础】一文搞定pandas的数据合并

    作者:来源于读者投稿 出品:Python数据之道 一文搞定pandas的数据合并 在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能 ...

最新文章

  1. 教程:11、文件系统
  2. 类oracle数据库pss,Oracle笔记
  3. 【深度学习】基于深度学习的数据增广技术一览
  4. Redis操作List相关API
  5. 通过项目逐步深入了解Mybatis二
  6. python getattrribute_python操作对象属性
  7. 【牛客 - 157F】三轮(dp,分治fft)
  8. 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit
  9. Redis如何高效可靠地实现主从复制?终于有人讲明白了
  10. lte 在网络覆盖方面应该注意哪些问题_TD-LTE网络深度覆盖三个受限因素及四大解决策略...
  11. SDWebImage获取到UIImage分辨率跟原图不一样
  12. java连接数据库的详细步骤?
  13. 主动降噪ANC(Active Noise Control)
  14. 实现永久关闭445服务
  15. VS6 sp6补丁下载 [防VC6卡死]
  16. Winsock 的初始化
  17. 四种免费英汉电子词典软件简评
  18. HDU 4808 Drunk
  19. Vue项目多地IP地址部署,后台配置动态IP
  20. $.serializeArray读取不到form中的值

热门文章

  1. Google Earth 成长历程的15个小故事
  2. TNWX-微信公众号如何使用JSSDK
  3. Mac环境下安装配置android sdk
  4. 利用js获取滚动条滚动距离,实现图片固定在屏幕的某个位置
  5. intrusive_ptr源码分析
  6. 手把手制作太阳系运行模型,纹理贴图、模型变换、动画、计算机图形学(OpenGL、C++实现、超级详细)
  7. EOS系列 - 超级节点(BP)列表更新流程
  8. Comsol建模部分域的材料(如空气)属性无法被定义问题
  9. android中编辑框明文密文系统图标,Android设置密码的明文和密文显示【原创】
  10. 建站教程,从无到有(2)——把你的域名变成可供访问的简单网页!