IT系のネタや知識をアウトプットしたかった

Knowledge-IO

IT系 機械学習・ディープラーニング

【Python】Pickleで巨大データの読み込みを高速化する

投稿日:

 

はじめに

CSVファイルなどの巨大データを読み込む際、読み込みだけでなくパース処理なども行われるので、非常に時間がかかります。

Pythonでは、DataFrameやその他オブジェクトを、Pickle(漬物)としてファイルに出力することで、次回以降の読み込みを高速化することが可能です。

Pickleファイルを読み込むことで、オブジェクトを再利用できます。また、CSVなどのファイルから読み込むのに対して、非常に高速です。

Pickle化は、通常のファイル出力と同じように出力できます。

注意点としては、openのモードはwb(rb)、また、巨大データを出力する際はサイズ制限があるので、dump時にprotocol=4とするくらいです。

 

以下、速度比較

テスト用のCSV作成

巨大ファイルとは言い難いですが、今回は検証として約2GBのテーブルデータを作成。CSVとして出力しました。

pd.read_csv()でCSVファイル読み込み

pd.read_csv()で通常通り読み込み。43.4s

Pickleファイルとして書き出し

DataFrameを書き出し。2.4s

Pickleファイルは771MBになりました。容量も削減できますね。

Pickleファイルを読み込み

Pickleファイルを読み込み。1.8s

 

読み込みだけで比較すると、43.4sから1.8sになりました。

一度巨大データをDataFrameとして読み込んだなら、Pickle化しておくと捗りそうですね。




-IT系, 機械学習・ディープラーニング

Copyright© Knowledge-IO , 2020 All Rights Reserved Powered by STINGER.