[英]appending rows with pandas' to_hdf multiples H5 file size?
我有一個大約13,000行×5列的HDF5
,隨着時間的推移,這些行通過DF.to_hdf(Filename, 'df', append=True, format='table')
到同一文件中,大小如下:
-rw-r--r-- 1 omnom omnom 807M Mar 10 15:55 Final_all_result.h5
最近,我收到一個ValueError
因為試圖添加到其中一列的數據比聲明的列長(2000,帶有min_itemsize
)長。
因此,我將所有行都加載到內存中,並一次性將它們轉儲到新的HDF
文件中 :
DF.to_hdf(newFilename, \
'df', \
mode='a', \
data_columns=['Code', 'ID', 'Category', 'Title', 'Content'], \
format='table', \
min_itemsize={'index': 24, \
'Code': 8, \
'ID': 32, \
'Category': 24, \
'Title': 192, \
'Content':5000 \
} \
)
我真的很驚訝,新文件的大小約為原始文件的1/10:
-rw-r--r-- 1 omnom omnom 70M Mar 10 16:01 Final_all_result_5000.h5
我仔細檢查了兩個文件中的行數,它們相等。
我是否以錯誤的方式附加新行,從而導致每次附加操作都使文件大小倍增? 在這里進行了Google搜索和搜索,但認為以前沒有討論過,或者我搜索的關鍵字錯誤。
任何幫助表示贊賞。
更新:我嘗試根據此線程中的建議為附加行中的所有數據列添加min_itemsize
: pandas pytables append:性能和文件大小的增加 :
DF.to_hdf(h5AbsPath, \
'df', \
mode='a', \
data_columns=['Code', 'ID', 'Category', 'Title', 'Content'], \
min_itemsize={'index': 24, \
'Code': 8, \
'ID': 32, \
'Category': 24, \
'Title': 192, \
'Content':5000 \
}, \
append=True \
)
但仍然不會減小文件大小。
感謝您提出增加壓縮的建議,附加文件和新轉儲文件均未按要求進行壓縮。
我曾經從pandas DataFrame保存.h5文件。 嘗試將complib='blosc'
和complevel=9
到to_hdf()
函數。 這將減小文件的大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.