我是pytables的新手,並且有關於存儲壓縮的熊貓DataFrame的問題。我當前的代碼是:使用HDFStore壓縮數據
import pandas
# HDF5 file name
H5name="C:\\MyDir\\MyHDF.h5"
# create HDF5 file
store=pandas.io.pytables.HDFStore(H5name)
# write a pandas DataFrame to the HDF5 file created
myDF.to_hdf(H5name,"myDFname",append=True)
# read the pandas DataFrame back from the HDF5 file created
myDF1=pandas.io.pytables.read_hdf(H5name,"myDFname")
# close the file
store.close()
當我檢查創建HDF5的大小,大小(212KB)比我用來創建大熊貓據幀原始csv文件(58KB)大得多。
所以,我嘗試了由(刪除HDF5文件),並重新創建
# create HDF5 file
store=pandas.io.pytables.HDFStore(H5name,complevel=1)
,創造並沒有改變文件的大小壓縮。我嘗試了所有從1到9的complevels
,尺寸仍然保持不變。
我嘗試添加
# create HDF5 file
store=pandas.io.pytables.HDFStore(H5name,complevel=1,complib="zlib")
,但它在壓縮沒有變化。
可能是什麼問題?
此外,理想情況下,我想使用類似於R爲其保存功能的壓縮方式(例如,在我的情況下,58kb文件在RData中保存爲27kb大小)?我是否需要在Python中進行任何額外的序列化以縮小尺寸?
編輯:
我使用Python 3.3.3和0.13.1熊貓
編輯: 我有一個更大的文件487MB csv文件,其RDATA size
試圖(通過的r保存功能)是169MB。對於較大的文件,我確實看到了壓縮。 Bzip2給出了202MB(level = 9)的最佳壓縮率,並且是最慢的讀/寫。 Blosc壓縮(級別= 9)給出了最大276MB的大小,但寫入/讀取速度要快得多。
不確定R在save
函數中做了什麼不同,但它比任何這些壓縮算法都快,壓縮得更快。
您還需要指定一個「complib」。請參閱此處的文檔:http://pandas-docs.github.io/pandas-docs-travis/io.html#compression – Jeff
複製並粘貼問題?您沒有將'store'傳遞給'to_hdf'函數。因此,傳遞給HDFStore構造函數的任何參數都不起作用。最簡單的方法是將complib和complevel參數傳遞給'to_hdf'並且根本不顯式創建HDFStore對象。 –