ひよこ、通勤中。

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

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

dockerメモ

コンテナ起動

$ docker run -d -it ubuntu:16.04 bash

※ ubuntu:16.04はdockerイメージ名

コンテナのターミナルに接続

$ docker exec -it ${CONTAINER_ID} bash

コンテナの状態をコミット

$ docker commit ${CONTAINER_ID}

タグ付け

$ docker tag ${commit番号} ${REPOSITORY}:${TAG} #例 test:latest

イメージの削除

$ docker rmi ${REPOSITORY}:${TAG} 

docker imagesで確認できる

Docker Imageを保存/読み込み

保存

$ docker save -o ファイル名  ${REPOSITORY}:${TAG}

読み込み

 $ docker load < ファイル名

自分流jupyter notebookの1セル目

import collections
import pathlib

# データ処理周り
import numpy as np
import pandas as pd
from IPython.core.display import display

# 可視化ライブラリ
import matplotlib.pyplot as plt
from matplotlib import cm # colormap
import seaborn as sns
%matplotlib inline

# pandasのwarningが邪魔なので
import warnings
warnings.filterwarnings('ignore')

# options
# pd.set_option('display.max_columns', 50)
plt.style.use('ggplot')