みなさんはこれまでPythonで処理したデータを外部ファイルに保存して読み書きしたいと考えたことはないでしょうか。
例えば機械学習をするには非常に長い時間がかかることが多々ありますが、もしデータ処理後のコードに不備があってエラーを吐かれた場合は再び機械学習をしなければなりません。
今回はそのような事態を避けるために「Pythonで処理したデータを外部ファイルに書き込む/外部ファイルから読み込む」方法を紹介します!
処理後のデータを外部ファイルに書き込む/外部ファイルから読み込む
はじめに
今回はpickle、pandas、joblibという3つのライブラリを使った方法をそれぞれ説明します。どのライブラリを使っても結果は同じなのでコードの見やすさなどからご自分に合ったものを使うのがいいと思います。
なお、今回は説明のために”sample_list”というただのリスト変数を使って説明しています。
sample_list = [1,2,3,4,5]
パターン1.pickleライブラリ
まずはよく使われている方法であるpickleライブラリを使ったやり方を紹介します。
私自身はあまり好きでなないですが、ネットに一番転がっているやり方なので紹介しました笑。
書出し
pickleライブラリを使って変数”sample_list”を外部ファイルに書き出すには↓のようなプログラムで実現できます。
import pickle
sample_list = [1,2,3,4,5]
f = open("sample_list.pkl", "wb")
pickle.dump(sample_list, f)
f.close()
上記コードを実行すると”pickle_list.pkl”というファイルに変数”pickle_list”の情報がバイナリモード(“wb”)で書き込まれて保存されます。
読み込み
先ほど書き込みをしたファイル”pickle_list.pkl”の情報を読み込んで変数”data”に格納したいときは次のようなプログラムで実現できます。
import pickle
f = open("sample_list.pkl", "rb")
data = pickle.load(f)
print(data)
[1, 2, 3, 4, 5]
書き込みはバイナリモードで行ったので、読み込み時にもバイナリモード(“rb”)で読み込みましょう。
パターン2.pandasライブラリ
次はpandasライブラリを使った方法を紹介します。
pandasライブラリを使った方法では読み書きの際に必要なコードが少ない上に可読性も高いので個人的にはオススメです。
書出し
pandasライブラリを使って変数”sample_list”を外部ファイルに書き出すには↓のようなプログラムで実現できます。
import pandas as pd
sample_list = [1,2,3,4,5]
pd.to_pickle(sample_list, "sample_list.pd")
上記コードを実行すると”pickle_list.pd”というファイルに変数”pickle_list”の情報が書き込まれて保存されます。
読み込み
先ほど書き込みをしたファイル”pickle_list.pd”の情報を読み込んで変数”data”に格納したいときは次のようなプログラムで実現できます。
import pandas as pd
data = pd.read_pickle("sample_list.pd")
print(data)
[1, 2, 3, 4, 5]
パターン3.joblibライブラリ
最後に紹介するのはjoblibライブラリを使った方法です。
joblibライブラリを使えば書き出したファイルサイズが小さくすることができるので、容量の気になる方はjoblibライブラリを使いましょう。
書出し
joblibライブラリを使って変数”sample_list”を外部ファイルに書き出すには↓のようなプログラムで実現できます。
import joblib
sample_list = [1,2,3,4,5]
joblib.dump(sample_list, "sample_list.jb", compress=3)
上記コードを実行すると”pickle_list.jb”というファイルに変数”pickle_list”の情報が書き込まれて保存されます。
ちなみに3行目のcompressは圧縮率を表していて、0-9まで整数を指定することができます。今回は3を引数に与えました。
読み込み
先ほど書き込みをしたファイル”pickle_list.jb”の情報を読み込んで変数”data”に格納したいときは次のようなプログラムで実現できます。
import joblib
data = joblib.load("sample_list.jb")
print(data)
[1, 2, 3, 4, 5]
まとめ
今回は「Pythonで処理したデータを外部ファイルに書き込む/外部ファイルから読み込む」方法を紹介しました。
この記事で不明な点や気になるところがあれば下のコメント欄までお願いします。それではまた!
コメント