博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pandas apply应用并行进程,多核加快数据清洗速度
阅读量:4210 次
发布时间:2019-05-26

本文共 979 字,大约阅读时间需要 3 分钟。

在2019届腾讯广告算法大赛中对1亿级别的数据,使用了多进程加速数清洗。

会用到 pandas 。但是 pandas 本身好像并没有提供多进程的机制。本文将介绍如何来自己实现 pandas (apply 函数)的多进程执行。其中,我们主要借助 joblib 库,这个库为python 提供了一个非常简洁方便的多进程实现方法。

原来单进程代码:

df1 = pd.read_csv('file1.csv')df2 = pd.read_csv('file2.csv')def add_labels(filenam,df):	list_name = list(df['name'])	if filename in list_name:		i = list_name.index(filename)		return df['是否购买][i]	else:		return 'Nan'		df1['是否购买'] = df1['name'].apply(add_labels, args=(df2,))

修改为多进程代码:

from joblib import Parallel,delayeddef add_labels(filenam,df):	list_name = list(df['name'])	if filename in list_name:		i = list_name.index(filename)		return df['是否购买][i]	else:		return 'Nan'		def tmp_func(df1):	df1['是否购买'] = df1['name'].apply(add_labels, args=(df2,))	return dfdef apply_parallel(df_grouped,func):	results = Parallel(n_jobs=10)(delayed(func)(group) for name,group in df_grouped)	return pd.concat(results)	df_grouped = df1.groupby(df1.index)df1 = apply_parallel(df_grouped,tmp_func)

使用类似上面的代码,但是实际运行的代码不是上面的:加速

在这里插入图片描述

转载地址:http://kdwmi.baihongyu.com/

你可能感兴趣的文章
趣链 BitXHub跨链平台 (4)跨链网关“初介绍”
查看>>
C++ 字符串string操作
查看>>
MySQL必知必会 -- 了解SQL和MySQL
查看>>
MySQL必知必会 -- 使用MySQL
查看>>
MySQL必知必会 -- 数据检索
查看>>
MySQL必知必会 -- 排序检索数据 ORDER BY
查看>>
MySQL必知必会 -- 数据过滤
查看>>
MYSQL必知必会 -- 用通配符进行过滤
查看>>
MYSQL必知必会 -- 用正则表达式进行搜索
查看>>
MySQL必知必会 -- 创建计算字段
查看>>
MySQL必知必会 -- 使用数据处理函数
查看>>
MySQL必知必会 -- 数据汇总
查看>>
MySQL必知必会 -- 子查询的使用
查看>>
POJ 3087 解题报告
查看>>
POJ 2536 解题报告
查看>>
POJ 1154 解题报告
查看>>
POJ 1661 解题报告
查看>>
POJ 1101 解题报告
查看>>
ACM POJ catalogues[转载]
查看>>
ACM经历总结[转载]
查看>>