使用 pandas 对数据进行并行处理
使用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 对数据进行并行处理相关推荐
- Python使用pandas设置数据列中float数据类型的有效小数位数、抑制科学计数法
Python使用pandas设置数据列中float数据类型的有效小数位数.抑制科学计数法 目录
- pandas删除数据行中的重复数据行、基于dataframe所有列删除重复行、基于特定数据列或者列的作何删除重复行、删除重复行并保留重复行中的最后一行、pandas删除所有重复行(不进行数据保留)
pandas删除数据行中的重复数据行.基于dataframe所有列删除重复行.基于特定数据列或者列的作何删除重复行.删除重复行并保留重复行中的最后一行.pandas删除所有重复行(不进行数据保留) 目 ...
- Pandas获取数据列名称的列表(list):(column list)
Pandas获取数据列名称的列表(list):(column list) 目录 Pandas获取数据列名称的列表(list):(column list) #仿真数据
- pandas dataframe数据聚合groupby、agg、privot基于sum统计详解及实例
pandas dataframe数据聚合groupby.agg.privot基于sum统计详解及实例 知道了sum.那么min.max.mean.median都是举一反三的事情了. 在日常的数据分析中 ...
- pandas 删除数据
pandas 删除数据 import pandas as pd df1 = pd.DataFrame({'1列': ['1行1列', '2行1列', '3行1列', '4行1列'],'2列': ['1 ...
- python的pandas方法_python使用Pandas处理数据的方法
python使用Pandas处理数据的方法 发布时间:2020-06-17 13:50:10 来源:亿速云 阅读:119 作者:鸽子 Pandas是Python中非常常用的数据处理工具,使用起来非常方 ...
- Pandas简明教程:七、Pandas缺失数据的处理(数据清洗基础)
文章目录 1.缺失数据的类型 2.定位缺失数据 3.修改定位数据 4.批量修改缺失数据 5.数据修复的利器--插值法(`interpolate`) 本系列教程教程完整目录: 数据清洗的内容其实很丰富, ...
- pandas 合并数据
pandas合并数据使用append.比如我要合并一个文件夹里面所有的pic类型的数据,那么先使用os模块,把所有文件名列出, 然后依次读入成dataframe, 读入过程中,一次append, 如果 ...
- 【Python基础】一文搞定pandas的数据合并
作者:来源于读者投稿 出品:Python数据之道 一文搞定pandas的数据合并 在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能 ...
最新文章
- 教程:11、文件系统
- 类oracle数据库pss,Oracle笔记
- 【深度学习】基于深度学习的数据增广技术一览
- Redis操作List相关API
- 通过项目逐步深入了解Mybatis二
- python getattrribute_python操作对象属性
- 【牛客 - 157F】三轮(dp,分治fft)
- 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit
- Redis如何高效可靠地实现主从复制?终于有人讲明白了
- lte 在网络覆盖方面应该注意哪些问题_TD-LTE网络深度覆盖三个受限因素及四大解决策略...
- SDWebImage获取到UIImage分辨率跟原图不一样
- java连接数据库的详细步骤?
- 主动降噪ANC(Active Noise Control)
- 实现永久关闭445服务
- VS6 sp6补丁下载 [防VC6卡死]
- Winsock 的初始化
- 四种免费英汉电子词典软件简评
- HDU 4808 Drunk
- Vue项目多地IP地址部署,后台配置动态IP
- $.serializeArray读取不到form中的值
热门文章
- Google Earth 成长历程的15个小故事
- TNWX-微信公众号如何使用JSSDK
- Mac环境下安装配置android sdk
- 利用js获取滚动条滚动距离,实现图片固定在屏幕的某个位置
- intrusive_ptr源码分析
- 手把手制作太阳系运行模型,纹理贴图、模型变换、动画、计算机图形学(OpenGL、C++实现、超级详细)
- EOS系列 - 超级节点(BP)列表更新流程
- Comsol建模部分域的材料(如空气)属性无法被定义问题
- android中编辑框明文密文系统图标,Android设置密码的明文和密文显示【原创】
- 建站教程,从无到有(2)——把你的域名变成可供访问的简单网页!