Python のピクルス辞書

Python Nopikurusu Ci Shu



Pickle は Python エンティティ フレームワークの前処理に使用できます。これは、オブジェクトをメモリからバイト ストリームに変換し、バイナリ形式でディスクに保存するプロセスです。この手順はシリアライゼーションと呼ばれます。これを行うには、pickle dump() メソッドを使用します。このバイナリ レコードが Python プログラムに再度読み込まれると、pickle load() メソッドを使用してシリアル化を解除し、Python オブジェクトに戻すことができます。

この記事では、Python の pickle モジュールを使用して、データ (具体的には辞書) を保存する方法を説明します。まず、pickle モジュールを入手する必要があります。 Pickle dump() は 3 つのパラメーターを受け入れます。最初の入力は、保存するデータを指定します。 2 番目のパラメーターは、ファイルが書き込みバイナリ (wb) モードで開かれたときに返されるファイル オブジェクトです。 key-value 引数は 3 番目のパラメーターです。プロトコルは、このパラメーターによって定義されます。 pickle は、HIGHEST PROTOCOL と pickle DEFAULT PROTOCOL の 2 つのタイプに分類されます。データを取得または逆シリアル化するには、pickle load() メソッドを使用します。これにより、ファイルを読み取りバイナリ (rb) モードで開くことによってファイル オブジェクトが取得されます。







例 1: Pickle ダンプおよびロード関数を使用した Pickle ファイル内のデータのシリアライズおよびデシリアライズ

この例では、非常に単純なコードを使用して、データをディクショナリとしてシリアル化および逆シリアル化する方法を学習します。




前の図に示されているコードでは、Python ライブラリの最初の pickle モジュールがインポートされ、そのメソッドを使用できるようになっています。次に、2 つのキーと値を持つデータの辞書が初期化され、「shape」という名前の変数に格納されます。次の行では、pickle dump() メソッドを使用して、「info.p」という名前の新しいファイルを書き込みバイナリ (wb) モードで開き、「shape」データをこのファイルに保存します。次の行では、rb モードでデータをダンプした同じファイルに対して pickle load() メソッドが使用されています。これにより、辞書データが返され、「a」という名前の変数に格納されます。最後に、この返されたオブジェクトは、次のスクリーンショットに示すように、print コマンドを使用して出力ターミナルに表示されます。



データは最初に dump メソッドを使用して「info.p」ファイルに保存されたことがわかります。次に、同じファイルに load() メソッドを使用すると、データが返されました。





例 2: 追加のプロトコルで Pickle Dump 関数を使用して、Python でデータをシリアル化する

これは、最新のプロトコルである pickle の追加プロトコル「HIGHEST_PROTOCOL」を使用する同様の例です。このプロトコルにより、最適化を使用して含めることができる新しい言語機能が可能になります。




前の図のコードでは、最初の pickle モジュールがインポートされます。次に、キーと値を持つ 1 つの項目の辞書が初期化され、変数 a に格納されます。次の行では、「info.p」という新しいファイルを wb モードでハンドルとして開いています。これで、ファイルは「ハンドル」というオブジェクトにあります。次に、dump() 関数を使用して、「HIGHEST_PROTOCOL」を使用して辞書「a」を「処理」します。これにより、「a」の辞書がコンピュータのディスク上の「info.p」ファイルに保存されます。ファイルから情報を抽出するには、まずファイルを「rb」モードで開きます。次に、このファイルに対して pickle load() メソッドが使用されます。返されたデータは属性「b」に保存されます。最後に、print コマンドを使用すると、次のスクリーン キャプチャに示すように、この情報が出力ノードに表示されます。

例 3: Pickle ダンプおよびロード関数を使用した Pickle ファイル内のデータのリストのシリアライズおよびデシリアライズ

この例では、pickle モジュールが最初にインポートされます。次に、いくつかのデータがリスト形式で辞書に挿入され、「shape_colors」変数に格納されます。次の行では、このデータに対して pickle dump() メソッドが直接使用されています。パラメータ内のファイルの代わりに、「info.p」ファイルが wb モードで開かれます。その結果、辞書データは、コンピューターのディスクに保存されているこのファイルにダンプされます。次に、ファイルからデータを読み取るために、同じファイルに対して pickle load() メソッドが使用されます。返されたデータは、変数「a」に保存されます。最後に、print コマンドを使用すると、次のスナップショットに示すように、この情報がセカンダリ ターミナルに表示されます。



例 4: Pickle Dump 関数と Load 関数を異なるパラメータで使用して Pickle ファイルに情報を保存する

提供されたコードでは、最初の pickle モジュールがインポートされます。次に、給与の辞書が初期化され、「salaries」変数に格納されます。次の行では、新しいファイル「salary.p」をハンドルとして wb モードで開きます。これで、ファイルは「ハンドル」というオブジェクトにあります。次に、pickle dump() 関数を使用して、「HIGHEST_PROTOCOL」を使用して「salaries」辞書を「処理」します。これにより、「salaries」の辞書を「salary.p」ファイルとしてコンピュータのディスクに保存できます。ここで、ファイルからデータを取得するために、ファイルは最初に「rb」モードで開かれます。次に、このファイルに対して pickle load() メソッドが使用されます。元に戻した情報は、変数「a」に保存されます。最終的に、次のスナップショットに示すように、印刷コマンドを使用して、このデータが出力端に表示されます。



例 5: Pickle ダンプおよびロード関数を使用した Pickle ファイル内の複数次元のデータのシリアライズおよびデシリアライズ

Python で DataFrame (多次元テーブル) を作成すると、Python の Panda モジュールにある新しいメソッドや関数をテストするのに便利です。 DataFrame をゼロから構築する方法はいくつかありますが、最も簡単な方法の 1 つは、基本的な辞書を利用することです。


前の図のコードでは、最初の pickle モジュールと Pandas モジュールがインポートされます。次に、pd.DataFrame() メソッドを使用して多次元テーブルを作成します。戦略の次の属性は、4 つのリストのリストです。各リストは、テーブルの行に対応しています。 2 番目のパラメータは「columns」で、テーブルの各列の見出しを定義します。この DataFrame は「pre」に格納されます。次に、「attendance.p」という新しいファイルを wb モードで開き、このファイルに対して DataFrame を使用して pickle dump() メソッドを使用します。これで、指定したデータがコンピューターのハードディスク上の「attendance.p」ファイルに保存されます。


ファイルからデータを取得するには、ファイルの読み取りを許可する rb モードでファイルを開きます。次に、「attendance.p」ファイルで pickle load() メソッドが使用されます。最後に、ファイル内のデータが出力タ​​ーミナルに表示されます。ご覧のとおり、「attendance.p」ファイルに保存されている出力ターミナルに DataFrame 全体が表示されます。

結論

pickle ファイルを扱うときは、特に注意してください。 pickle モジュールにはセキュリティがありません。信頼できるデータのみを unpickle します。unpickle プロセス中に任意のコードを実行する可能性のある悪意のある pickle データを作成する可能性があります。とはいえ、Python で辞書、リスト、およびテーブルを格納する効果的な方法です。ピクルス化は、前処理などのデータに対して日常的な操作を実行しているときに、データ分析に特に役立ちます。この記事が、Python の pickle モジュールのさまざまなメソッドと、それを辞書で使用する方法について学ぶのに役立つことを願っています。