はじめに
RStudioではEnvironmentの保存ボタンから、形式をそのままに利用した変数を保存することができる。しかし、Pythonの開発環境には、そのような便利な機能が存在しない。
目的
sklearnのdumpを利用して全ての変数を一括保存し、loadを利用して読み込み、通常の変数同様に利用しながら再利用する最低限のプログラムを作成する。
実践
準備
これまでにプログラム中で利用した変数は、すべて dict 型で管理する。
まず、data_dict = {} のように、空のdict型を用意する。
プログラムの作業の中で再利用するデータは全て、data_dict["どのような変数かわかりやすい名前のキー"] = 何らかのデータ として保存する。例えば、tmp = 10 * 5 とやらず、data_dict["演算結果"] = 10 * 5 とする。もちろん一時的な利用の変数をわざわざ保存する必要はない。
保存
これまでのデータを保存するためには、open("ファイル名.binaryfile","wb")として書き込みモードでオープンする。
データを保存するためにdump(保存したい変数,f1)としてバイナリー形式で出力する。
読み込み
これまでの計算結果を再度利用するためには、open("ファイル名.binaryfile", "rb")として読み込みモードでオープンする。
データを読み込み再度変数として利用するためには、test_data = load(読み込みモードでオープンした情報)として読みこむ。
再利用
test_dataをそのまま利用する。特別な処理は必要なし。
プログラム例
from sklearn.externals.joblib import dump, load
import pandas as pd
import matplotlib.pyplot as plt
# データをまとめて入れておくもの
data_dict = {}
# データを読み込む
data_dict["str"] = "test"
data_dict["raw_data"] = pd.read_csv("data/2017_liquor_sales.csv", index_col=0, encoding="utf-8")
print(data_dict.keys())
print(data_dict["raw_data"].head())
f1 = open("data_dict.binaryfile","wb")
dump(data_dict,f1)
f1.close
f2 = open("data_dict.binaryfile", "rb")
test_data = load(f2)
f2.close
print("\n")
print(test_data.keys())
print(test_data["raw_data"].head())
dict_keys(['str', 'raw_data'])
清酒 焼酎 ビール ウイスキー ワイン 発泡酒等 チューハイ・カクテル 他の酒
都市
札幌市 5052 5070 15284 2771 2425 13876 1880 844
青森市 7403 12208 13557 2910 2573 11019 4527 847
盛岡市 7956 7313 12289 2119 3533 8727 3661 1059
仙台市 7481 7247 10463 3954 2903 9164 2781 945
秋田市 9567 6969 15134 4241 3288 10834 4031 933
dict_keys(['str', 'raw_data'])
清酒 焼酎 ビール ウイスキー ワイン 発泡酒等 チューハイ・カクテル 他の酒
都市
札幌市 5052 5070 15284 2771 2425 13876 1880 844
青森市 7403 12208 13557 2910 2573 11019 4527 847
盛岡市 7956 7313 12289 2119 3533 8727 3661 1059
仙台市 7481 7247 10463 3954 2903 9164 2781 945
秋田市 9567 6969 15134 4241 3288 10834 4031 933
テストに利用したデータ
本データは政府統計の総合窓口に掲載されている1世帯当たり年間の食料「酒類」別支出金額,購入数量及び平均価格の「家計調査結果」(総務省統計局)(https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200561&tstat=000000330001&cycle=7&year=20170&month=0&tclass1=000000330001&tclass2=000000330004&tclass3=000000330006&stat_infid=000031705230)を抽出・整形したデータです。