Ответ
Расширенный комментарий.Вы должны учитывать, что при использовании dask накладные расходы составляют около 1 мс (см. doc ), поэтому, если ваши вычисления короче, чем dask, это не стоит проблем.
Переход к конкретному вопросуЯ могу вспомнить два возможных сценария реального мира: 1. Большой кадр данных со столбцом с именем bookingID
и другим value
2. Другой файл для каждого идентификатора бронирования
Во втором случае вы можете играть из этого ответ в то время как для первого случая вы можете действовать следующим образом:
import dask.dataframe as dd
import numpy as np
import pandas as pd
# create dummy df
df = []
for i in range(10_000):
df.append(pd.DataFrame({"id":i,
"value":np.random.rand(1000)}))
df = pd.concat(df, ignore_index=True)
df = df.sample(frac=1).reset_index(drop=True)
df.to_parquet("df.parq")
Панды
%%time
df = pd.read_parquet("df.parq")
out = df.groupby("id").agg({"value":{"min", "max", "std", "mean"}})
out.columns = [col[1] for col in out.columns]
out = out.reset_index(drop=True)
CPU times: user 1.65 s, sys: 316 ms, total: 1.96 s
Wall time: 1.08 s
Даска
%%time
df = dd.read_parquet("df.parq")
out = df.groupby("id").agg({"value":["min", "max", "std", "mean"]}).compute()
out.columns = [col[1] for col in out.columns]
out = out.reset_index(drop=True)
CPU times: user 4.94 s, sys: 427 ms, total: 5.36 s
Wall time: 3.94 s
Заключительные мысли
В этой ситуации dask начинает иметь смысл, если df
не помещается в памяти.