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
gcloudコマンドメモ
インスタンスのスペック変更
gcloud compute instances set-machine-type {VM_NAME} --custom-memory {MEMORY_GB} --custom-cpu {CPU_NUM}
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 < ファイル名
誕生日から年齢を出す
import datetime now = datetime.datetime.now() df.loc[:, 'birthday_dt'] = pd.to_datetime (df['birthday']) df.loc[:, 'age'] = (now - df['birthday_dt']).astype('<m8[Y]')
n * mのグラフを書く
row, col = 10, 3 fig = plt.figure(figsize=(col * 5, row * 4)) for i, c in enumerate(df.columns): ax = fig.add_subplot(row, col, i + 1)
いつもの円グラフ
s.plot.pie(pctdistance=0.6, labeldistance=0.3, textprops={'color': "white", 'weight': "bold", 'fontsize': 12}, wedgeprops={'linewidth': 2,'edgecolor':"white"},)
自分流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')