需要计算数据框列时使用 dask 进行并行计算

我有一个 3.6 亿的鸟类观测数据记录数据 

http://img2.mukewang.com/60c9a0210001bc9308280248.jpg

框,我想以dask分布式方式计算每个鸟类物种的质心作为年日的函数。


我想要做:


df2 = df.groupby(['VERNACULARNAME', 'yearday']).mean()

但我需要先计算yearday,我不知道是否有办法用dask. 我希望 dask 可以将新数据保存给dask工作人员,但是当我尝试时:


def yearday(r):

    r['yearday'] = dt.datetime(r['YEAR'], r['MONTH'], r['DAY']).timetuple().tm_yday

    return r


df.apply(yearday, axis=1).persist()

它没有规模。


如果有人想实际尝试,可以像这样加载数据:


import dask.dataframe as dd

df = dd.read_parquet('s3://esipfed/ebird/EOD_CLO_2016.parq.gz',

            storage_options={'anon': True, 'use_ssl': False})

注意:虽然我称这个数据集为EOD_CLO_2016.parq.gz,但它在 S3 存储桶中的许多对象上分块以促进并行化。每个块都被 gzip 压缩。


有没有办法以分布式方式即时进行这种计算,或者我是否需要在groupby用于执行可扩展部分之前用 yearday 列编写另一个数据文件?


狐的传说
浏览 151回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python