2016-04-29 99 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不是用於生成較小的文件。在這種情況下,存儲它的最佳方式是什麼?它只有大多數列只有1s和0s的數值數據 - 大部分是稀疏的。

+2

酸洗是你做的序列化,而不是壓縮。嘗試使用csv文件是多餘的。 – Cubic

+0

您是否嘗試將hdf5與HDFStore一起存儲? – manu190466

+0

如果需要,你可以用壓縮方法寫入一個csv,pickling是python對象的字符串表示形式 – EdChum

回答

0

hdf5是一個用於高性能數字數據存儲的庫。你應該使用這種方式:

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

這聽起來像一個評論。 – Cubic

+0

@cubic:你很可怕,起初,這是一個輸入錯誤地方的評論。然後我對其進行了改進以使其成爲答案。 – manu190466

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

可以再用相同的壓縮參數讀取它。

+0

我真的不想壓縮它。在Excel中,作爲二進制文件存儲文件有很多幫助,但我沒有看到在Python中做出任何改變。有什麼出路嗎? –

+1

2007 excel二進制格式(xlsx)實際上是一個帶有修改擴展名的zip文件。您可以將.xlsx文件更改爲.zip,然後自己查看:)如果您不打算定期訪問文件,則壓縮是一種方法,尤其是在使用熊貓時非常容易。如果它大多是零和一個比你期望的壓縮比還要高。 – Shovalt