Как преобразовать существующий код из Pandas в Dask? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть следующий код:

df = pd.DataFrame(np.random.randint(0, 1000000, size=(1000000, 55)), columns=(selected))/100000
df = df.div(xf.sum(axis=1), axis=0)

ret = df.dot(returns_annualR) #returns_annualR is a pandas series (55x1)
var_matrix = np.dot(np.dot(df, cov_matrixR),df.T) #cov_matrixR is a pandas dataframe (55x55)
d1 = dd.dot(df.T).min().abs()

Когда я использую Pandas и Numpy - код завершается с ошибкой " Memory Error ". У меня всего 16 ГБ ОЗУ.

Мне было интересно, можно ли реализовать приведенный выше код с помощью Dask. Я понимаю, что это может быть хорошей задачей для Dask, то есть для больших фреймов данных. Я пытался, но, похоже, не добился большого успеха (я относительно новичок в Dask).

Например, я преобразовал "df" в Dask следующим образом:

xf = pd.DataFrame(np.random.randint(0, 1000000, size=(num_portfolios, num_assets)), columns=(selected))/100000
xf = xf.div(xf.sum(axis=1), axis=0)

dd_test = dd.from_pandas(xf, npartitions=40).compute()

returns1 = returns_annualR.to_numpy() #convert to numpy array
returns1 = dd_test.dot(returns1).compute()

Itне удается, когда я пытаюсь выполнить скалярное произведение и получаю следующую ошибку: Объект 'DataFrame' не имеет атрибута 'точка'

Любая помощь очень ценится.

...