Python を使用して Pickle ファイルを読み取る
Python では、Pickle とは Python オブジェクト(リスト、辞書など)をバイナリストリームに変換することを指し、アンピクリングとはデータのバイナリストリームを Python オブジェクトに変換することを指します。
変換されたデータのバイナリストリームには、元のオブジェクトを再構築するためのすべての情報が含まれています。残念ながら、Pickle ファイルは一般的に安全でないと見なされています。
Pickle ファイルは、プログラムの状態(変数、オブジェクト、およびそれらの状態などの値)の保存、Python オブジェクトのシリアル化されたバイナリ文字列の形式でのデータベースへの保存、TCP または伝送制御プロトコルを介したデータの送信などに使用されます。
機械学習モデルのトレーニング中に、Pickle ファイルを使用してモデルの重みを保存します。場合によっては、ロードされたトレーニングデータまたはフォーマットされたトレーニングデータが Pickle ファイルの形式でディスクに保存されます。
この記事では、Python を使用してこれらの Pickle ファイルを読み取る方法を理解します。そのような 2つの方法について説明します。
Python の pickle
モジュールを使用して Pickle ファイルを読み取る
Python には、Python を使用してデータをシリアル化および逆シリアル化するためのユーティリティを含むモジュール pickle
が組み込まれています。このデータは Pickle ファイルに保存できます。
pickle
モジュールを使用して、Python を使用して pickle ファイルを読み取ることができます。同じことについては、次の Python コードを参照してください。
objects = []
file_name = "/path/to/the/pickle/file"
with (open(file_name, "rb")) as f:
while True:
try:
objects.append(pickle.load(f))
except EOFError:
break
上記のコードでは、objects
変数は pickle ファイルのすべてのデータを保持します。
コードはファイルをループして、EOFError
例外が見つかるまでファイルを読み取ります。同じことは、データが Pickle ファイル内のオブジェクトに保存されることです。
pickle
モジュールの load()
関数は、単一のオブジェクトのみを読み取ります。オブジェクトを読み取った後、ファイルポインタは pickle ファイル内の次のオブジェクトの先頭を指します。
詳細については、ここにリンクされているドキュメントを参照してください。
Python の pandas
モジュールを使用して Pickle ファイルを読み取る
pandas
ライブラリを使用して、Python で Pickle ファイルを読み取ることができます。
pandas
モジュールには、pickle ファイルの読み取りに使用できる read_pickle()
メソッドがあります。
このメソッドは、filepath_or_buffer
引数を受け入れます。ファイルパス、URL、または Pickle ファイルがロードされるバッファです。この関数は、ファイルの選択されていないオブジェクトを返します。
ここで、この方法を実際に使用する方法を見てみましょう。同じことについては、次の Python コードを参照してください。
import pandas as pd
file_name = "/path/to/the/pickle/file"
objects = pd.read_pickle(file_name)
read_pickle()
メソッドの詳細については、公式ドキュメントこちらを参照してください。