如何使用 dask 提高并行计算的性能
How do I improve the performance in parallel computing with dask
我有一个 pandas 数据帧并转换为 dask 数据帧
df.shape = (60893, 2)
df2.shape = (7254909, 2)
df['name_clean'] = df['Name'].apply(lambda x :re.sub('\W+','',x).lower(),meta=('x', 'str'))
names = df['name_clean'].drop_duplicates().values.compute()
df2['found'] = df2['name_clean2'].apply(lambda x: any(name in x for name in names),meta=('x','str')) ~ takes 834 ms
df2.head(10) ~ takes 3 min 54 sec
如何查看 dask 数据框的形状?
为什么 .head() 有这么多时间?我这样做的方式正确吗?
您不能迭代 dask.dataframe 或 dask.array。需要先调用.compute()
方法将其转为Pandasdataframe/series或NumPy数组
请注意,仅调用 .compute()
方法然后忘记结果不会执行任何操作。您需要将结果保存为变量。
dask_series = df.Name.apply(lambda x: re.sub('\W+', '', x).lower(),
meta=('x', 'str')
pandas_series = dask_series.compute()
for name in pandas_series:
...
我有一个 pandas 数据帧并转换为 dask 数据帧
df.shape = (60893, 2)
df2.shape = (7254909, 2)
df['name_clean'] = df['Name'].apply(lambda x :re.sub('\W+','',x).lower(),meta=('x', 'str'))
names = df['name_clean'].drop_duplicates().values.compute()
df2['found'] = df2['name_clean2'].apply(lambda x: any(name in x for name in names),meta=('x','str')) ~ takes 834 ms
df2.head(10) ~ takes 3 min 54 sec
如何查看 dask 数据框的形状?
为什么 .head() 有这么多时间?我这样做的方式正确吗?
您不能迭代 dask.dataframe 或 dask.array。需要先调用.compute()
方法将其转为Pandasdataframe/series或NumPy数组
请注意,仅调用 .compute()
方法然后忘记结果不会执行任何操作。您需要将结果保存为变量。
dask_series = df.Name.apply(lambda x: re.sub('\W+', '', x).lower(),
meta=('x', 'str')
pandas_series = dask_series.compute()
for name in pandas_series:
...