作家
登录

Python数据预处理:使用Dask和Numba并行化加速

作者: 来源: 2018-03-13 14:03:50 阅读 我要评论

沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践!

如不雅你善于应用Pandas变换数据、创建特点以及清洗数据等,那么你就可以或许轻松地应用Dask和Numba并行加快你的工作。纯真赶紧度上比较,Dask完胜Python,而Numba打败Dask,那么Numba+Dask根本上算是无敌的存在。

将数值计算分成Numba sub-function和应用Dask map_partition+apply,而不是应用Pandas。对于100万行数据,应用Pandas办法和混淆数值计算创建新特点的速度比应用Numba+Dask办法的速度要慢很多倍。

Python:60.9x | Dask:8.4x | Numba:5.8x |Numba+Dask:1x

Python数据预处理:应用Dask和Numba并行化加快

作为旧金山大年夜学的一名数据科学硕士,会经常跟数据打交道。应用Apply函数是我用来创建新特点或清理数据的浩瀚技能之一。如今,我只是一名数据科学家,而不是计算机科学方面的专家,但我是一个爱好捣鼓并使得代码运行更快的法度榜样员。如今,我将会分享我在并行应用上的经验。

大年夜多Python爱好者可能懂得Python实现的全局说冥器锁(GIL),GIL会占用计算机中所有的CPU机能。更糟糕的是,我们重要的数据处理包,比如Pandas,很少能实现并行处理代码。

Apply函数vs Multiprocessing.map

  1. %time df.some_col.apply(lambda x : clean_transform_kthx(x)) 
  2. Wall time: HAH! RIP BUDDY 
  3. # WHY YOU NO RUN IN PARALLEL!? 

Tidyverse已经为处理数据做了一些好梦的工作,Plyr是我最爱好的数据包之一,它许可R说话应用者轻松地并行化他们的数据应用。Hadley Wickham说过:

“plyr是一套处理一组问题的对象:须要把一个大年夜的数据构造分化成一些平均的数据块,之后对每一数据块应用一个函数,最后将所有结不雅组合在一路。”

对于Python而言,我欲望有类似于plyr如许的数据包可供应用。然而,今朝如许的数据包还不存在,但我可以应用处行数据包构成一个简单的解决筹划。

Dask

Python数据预处理:应用Dask和Numba并行化加快

之前在Spark上花费了一些时光,是以当我开端应用Dask时,照样比较轻易地控制其重点内容。Dask被设计成可以或许在多核CPU上并行处理义务,此外也借鉴了很多Pandas的语律例则。

如今开端本文所举例子。对于比来的数据挑衅而言,我试图获取一个外部数据源(包含很多地舆编码点),并将其与要分析的一大年夜堆街区相匹配。在计算欧几里得距离的同时,应用最大年夜启发式将最大年夜值分派给一个街区。

Python数据预处理:应用Dask和Numba并行化加快

最初的apply:

  1. my_df.apply(lambda x: nearest_street(x.lat,x.lon),axis=1) 

Dask apply:

  1. dd.from_pandas(my_df,npartitions=nCores).\ 
  2.    map_partitions(\ 
  3.      lambda df : df.apply(\ 
  4.          lambda x : nearest_street(x.lat,x.lon),axis=1)).\ 
  5.      compute(get=get) 
  6. # imports at the end 

因为我经由过程迭代行来生成一个新队列(特点),而Dask apply只在列上起感化,是以我没有应用Dask apply,以下是Dask法度榜样:

  1. from dask import dataframe as dd 
  2. from dask.multiprocessing import get 
  3. from multiprocessing import cpu_count 
  4. nCores = cpu_count() 

Python数据预处理:应用Dask和Numba并行化加快


  推荐阅读

  教你如何区别单模与多模光纤

沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践! 单模光纤的纤芯较细,使光线可以或许直接>>>详细阅读


本文标题:Python数据预处理:使用Dask和Numba并行化加速

地址:http://www.17bianji.com/lsqh/40675.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)