2016-04-29 1 views
0

私は保存したいデータフレームを持っており、後で効率的にアクセスします。さまざまなフォーラムから、私はto_pickleメソッドを使うべきであることを知りました。しかし、私の驚いたことに、これはさらにサイズを増加させます。to_pickleメソッドはファイルサイズを増加させます

df.to_csv('df.csv', sep='\t', mode="wb") ## 650 MB output file 

df.to_pickle('df.pkl') ## 1.3 GB output file 

何か間違っていますか?

編集: コメントから、to_pickleは小さいファイルを作成するためのものではないようです。その場合、それを保存する最も良い方法は何ですか?ほとんどの列が1と0だけの数値データです。ほとんどがまばらです。

+2

ピクリングは、シリアル化のためのものであり、圧縮のためのものではありません。 csvファイルを拾い読みするのは余計なことです。 – Cubic

+0

HDFStoreでhdf5として保存しようとしましたか? – manu190466

+0

必要に応じて圧縮を使用してcsvに書き込むことができます。ピクリングはPythonオブジェクトの文字列表現です – EdChum

答えて

0

hdf5は、高性能な数値データの格納を目的としたライブラリです。あなたは、このようにそれを使用する必要があります。

df.to_hdf('store.h5','df',complevel=1,complib='bzip2') 
+0

コメントのようです。 – Cubic

+0

@立方体:あなたは厳しいですが、最初は間違った場所に入力されたコメントでした。その後、私はそれを答えにするために改善しました。 – manu190466

0
df.to_csv('out.gz', compression='gzip') 

あなたはその後、同じ圧縮パラメータでそれを読むことができます。

+0

私はそれを本当に圧縮したくありません。バイナリが多くの助けになるので、ファイルを保存するのに威力を発揮しますが、Pythonで何の違いも見られません。脱出はありますか? –

+1

2007 excelバイナリ形式(xlsx)は、実際には拡張子が変更されたzipファイルです。 .xlsxファイルを.zipに変更して自分自身で見ることができます:)ファイルを圧縮するよりも定期的にファイルにアクセスする予定がない場合、特にパンダで苦労している場合は、その方法があります。それがほとんど0と1よりも良い圧縮率を持つことが期待できます。 – Shovalt

関連する問題