Так что у меня проблема с dask DataFrame.append. Я генерирую много производных функций из основных данных и добавляю их к основному фреймворку. После этого взорвался граф dask для любого набора столбцов. Вот небольшой пример:dask DataFrame.assign взрывает диаграмму dask
%pylab inline
import numpy as np
import pandas as pd
import dask.dataframe as dd
from dask.dot import dot_graph
df=pd.DataFrame({'x%s'%i:np.random.rand(20) for i in range(5)})
ddf = dd.from_pandas(df, npartitions=2)
dot_graph(ddf['x0'].dask)
here is the dask graph as expected
g=ddf.assign(y=ddf['x0']+ddf['x1'])
dot_graph(g['x0'].dask)
here the graph for same column is exploded with irrelevant computation
Представьте у меня есть много много порождены колонн. Таким образом, граф вычислений для любого конкретного столбца включает нерелевантные вычисления для всех остальных столбцов. То есть в моем случае у меня есть len (ddf ['someColumn']. dask)> 100000. Так что это становится непригодным для использования быстро.
Так что мой вопрос в том, можно ли решить эту проблему? Существуют ли какие-либо средства для этого? Если нет - в каком направлении я должен это реализовать?
Спасибо!
Спасибо за быстрый ответ. Я использую df = df.assign (x = x, y = y, z = z) в данный момент, присваивая все ряды сразу, но есть такие дополнительные узлы в графе для столбцов, которые не нуждаются в этих вычислениях. Есть ли способ оптимизировать график таким образом, что, когда вы получаете подмножество столбцов, он обрабатывает все остальные вычисления? Моим обходным решением было вычислить все, сохранить в hdf, загрузить его, а затем я могу получить доступ к некоторому подмножеству столбцов по запросу. Но тогда ограничение длины hdf столбцов поразило меня, и я снова начал чередовать данные, снова собирая подмножества столбцов. – oxymoron
Если вы используете только 'x' и' y', а не 'z', тогда dask удалит' z' из вычисления. Однако, как только вы назначите их всех в dataframe вы застряли с ними все. Dask не выполняет оптимизацию на высоком уровне, как то, что вы хотите. Вы можете попробовать остановиться на Парке вместо HDF5. Также будет намного быстрее прочитать несколько столбцов, чем с HDF5 – MRocklin
Спасибо, попробуем паркет – oxymoron