У меня есть следующий код:
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' не имеет атрибута 'точка'
Любая помощь очень ценится.