Я хочу объединить два кадра данных dask, добавить отсутствующие значения в медиану столбца и экспортировать объединенный кадр данных в csv-файлы.
У меня есть одна проблема: мой текущий код не может использовать все 8 процессоров (~ 20% каждого процессора)
Я не уверен, какая часть ограничивает использование процессора. Вот повторяемый код
import numpy as np
import pandas as pd
df1 = pd.DataFrame(
np.c_[(np.random.randint(100, size=(10000, 1)), np.random.randn(10000, 3))],
columns=['id', 'a', 'b', 'c'])
df2 = pd.DataFrame(
np.c_[(np.array(range(100)), np.random.randn(100, 10000))],
columns=['id'] + ['d_' + str(i) for i in range(10000)])
df1.id=df1.id.astype(int).astype(object)
df2.id=df2.id.astype(int).astype(object)
## some cells are missing in df2
df2.iloc[:, 1:] = df2.iloc[:,1:].mask(np.random.random(df2.iloc[:, 1:].shape) < .05)
## dask codes starts here
import dask.dataframe as dd
from dask.distributed import Client
ddf1 = dd.from_pandas(df1, npartitions=3)
ddf2 = dd.from_pandas(df2, npartitions=3)
ddf = ddf1.merge(ddf2, how='left', on='id')
ddf = ddf.fillna(ddf.quantile())
ddf.to_csv('train_*.csv', index=None, header=None)
Несмотря на то, что задействованы все 8 процессоров, используется только ~ 20% каждого процессора. Могу ли я написать код для улучшения использования процессора?