我在使用dask DataFrame.append时遇到了问题。我从主数据生成了许多派生特征,并将它们附加到主数据框中。之后,任何一组列的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)
g=ddf.assign(y=ddf['x0']+ddf['x1'])
dot_graph(g['x0'].dask)
想象一下,我有很多很多生成的列。因此,任何特定列的计算图包括所有其他列的无关计算。即在我的情况下,len(ddf ['someColumn'].dask) > 100000。因此,它很快变得不可用。
那么我的问题是,这个问题可以解决吗?是否有任何现有的方法可以解决这个问题?如果没有 - 我应该寻找什么方向来实现这一点?
谢谢!
x
和y
而没有使用z
,那么 Dask 将从计算中删除z
。但是一旦你将它们全部分配到 dataframe 中,你就必须全部使用它们。Dask 不执行像你想要的高级优化。您可以尝试将其持久化为 Parquet 而不是 HDF5。读取几列也比 HDF5 快得多。 - MRocklin