나는 pytables에 초보자이며 압축 된 팬더 DataFrame 저장과 관련하여 질문이 있습니다. 나의 현재 코드는 다음과 같습니다HDFStore로 데이터 압축
내가 만든 HDF5의 크기를 확인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()
는, 크기 (212킬로바이트는) 내가 팬더 DataFrame을 만드는 데 사용되는 원래의 csv 파일 (58킬로바이트)보다 훨씬 크다.
그래서, 난합니다 (HDF5 파일을 삭제) 및
# create HDF5 file
store=pandas.io.pytables.HDFStore(H5name,complevel=1)
변경하지 않았다 만든 파일의 크기를 재현하여 압축을 시도했다. 나는 complevels
을 1에서 9까지 시도했으며 크기는 여전히 동일하게 유지되었습니다.
# create HDF5 file
store=pandas.io.pytables.HDFStore(H5name,complevel=1,complib="zlib")
을 추가하려고하지만, 압축의 변화가 없었다.
무엇이 문제 일 수 있습니까?
또한, R이 저장 기능에 대해 수행하는 것과 유사한 압축을 사용하고 싶습니다 (예 : 내 사례에서 58KB 파일이 RData의 27kb 크기로 저장 됨). 크기를 줄이기 위해 파이썬에서 추가 직렬화를 수행해야합니까?
편집 :
내가 0.13.1
편집 파이썬 3.3.3와 팬더를 사용하고 있습니다 : 나는 누구의 RData에 size
큰 파일 4백87메가바이트 CSV 파일로 시도 (R의를 통해 저장 기능)은 169MB입니다. 큰 파일의 경우 압축이 표시됩니다. Bzip2는 202MB (레벨 = 9)의 최상의 압축을 제공했으며 읽기/쓰기가 가장 느립니다. Blosc 압축 (레벨 = 9)은 276MB의 가장 큰 크기를 제공했지만 쓰기/읽기가 훨씬 빨랐습니다.
어떤 R이 save
함수에서 다르게 동작하는지 알 수는 없지만 이러한 압축 알고리즘보다 훨씬 빠르고 똑같습니다.
당신은''complib''도 지정해야합니다. docs here : http://pandas-docs.github.io/pandas-docs-travis/io.html#compression – Jeff
복사하여 붙여 넣기에 문제가 있습니까? 'to_hdf' 함수에'store'를 전달하지 않습니다. 따라서 HDFStore 생성자에 전달 된 모든 매개 변수는 영향을 미치지 않습니다. 가장 쉬운 방법은 complib 및 complevel 매개 변수를 to_hdf에 전달하고 명시 적으로 HDFStore 객체를 전혀 만들지 않는 것입니다. –