DaskでDataFrameをpartitionに分けて並列処理
Install
$ pip install "dask[complete]"
各partitionごとに何かを計算してmergeするイメージ
import pandas as pd import pandas as pd from dask import dataframe as dd def func(series): return pd.DataFrame({ 'min': [series.min()], 'median': [series.median()], 'sum': [series.sum()]}) # 分割処理したいオブジェクト s = pd.Series(list(range(100))) # Daskに変換(npartitions:分割数) ds = dd.from_pandas(s, npartitions=4) # 帰ってくるデータの型を定義して meta = pd.DataFrame({ 'min': [0], 'sum': [0], 'median': [0]}) # 計算の設定 res = ds.map_partitions(func, meta=meta) # 計算の実行 d = res.compute(scheduler='processes') print(d) # median min sum # 0 12.0 0 300 # 0 37.0 25 925 # 0 62.0 50 1550 # 0 87.0 75 2175