ひよこ、通勤中。

通勤中の電車の中でひよこは何を思うのか。

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