преобразование dask dataframe в dataframe выполняется слишком медленно, это не экономит время при использовании параллельного процесса - PullRequest
0 голосов
/ 29 сентября 2018

import pandas as pd import dask.dataframe as dd import time</p> <pre><code>import warnings warnings.simplefilter('ignore') data['x'] = range(1000) data['y'] = range(1000) def add(s): s['sum'] = s['x']+s['y'] return s start = time.time() n_data = data.apply(add, axis=1) print('it cost time is {} sec'.format(time.time()-start)) start = time.time() d_data = dd.from_pandas(data, npartitions=10) s_data = d_data.apply(add, axis=1) print('it cost time is {} sec'.format(time.time()-start)) start = time.time() s_data = s_data.compute() print('but transform it cost time is {} sec'.format(time.time()-start))

результат:

это время затрат 1,0297248363494873 сек

это время затрат0,008629083633422852 с

, но преобразование требует времени 1,3664238452911377 с

1 Ответ

0 голосов
/ 08 октября 2018

Панды применяются медленно.Поскольку вы работаете построчно с функцией Python, он должен использовать Python для циклов, а не C для циклов.

В планировщике по умолчанию Dask dataframe используются потоки, которые обычно очень хороши для быстрых векторизованных операций Pandas, ноне поможет для медленных операций Pandas, которые связаны кодом Python.Вы можете попробовать использовать многопроцессорные или распределенные планировщики.См. http://docs.dask.org/en/latest/scheduling.html

Тем не менее, я рекомендую вам лучше использовать Панд перед тем, как попробовать Dask.Вероятно, использование быстрых API-интерфейсов Pandas может значительно ускорить ваши вычисления, чем Dask.

...