我有一个 3.6 亿的鸟类观测数据记录数据
框,我想以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 列编写另一个数据文件?
相关分类