2016-08-10 3 views
1

hdf 파일을 읽으려고하지만 그룹이 표시되지 않습니다. 테이블과 h5py를 사용하는 몇 가지 다른 방법을 시도했지만 파일에서 그룹을 표시하는 데는 아무런 효과가 없습니다. 내가 확인한 파일은 '계층 적 데이터 형식 (버전 5) 데이터'입니다 (업데이트 참조). 파일 정보는 참조 용으로 here입니다.Python을 사용하는 HDF 파일의 데이터가 누락되었습니다.

예 데이터 h5py 사용

import h5py 
import tables as tb 

hdffile = "TRMM_LIS_SC.04.1_2010.260.73132" 

here 발견 될 수

f = h5py.File(hdffile,'w') 
print(f) 

출력을 :

< HDF5 file "TRMM_LIS_SC.04.1_2010.260.73132" (mode r+) > 
[] 

탭 사용 레 :

fi=tb.openFile(hdffile,'r') 
print(fi) 

출력 :

TRMM_LIS_SC.04.1_2010.260.73132 (File) '' 
Last modif.: 'Wed Aug 10 18:41:44 2016' 
Object Tree: 
/(RootGroup) '' 

Closing remaining open files:TRMM_LIS_SC.04.1_2010.260.73132...done 

UPDATE

h5py.File(hdffile,'w') overwrote the file and emptied it. 

이제 내 질문에 h5py 및 테이블 때문에 파이썬에 HDF 버전 4 파일을 읽는 방법입니다 둘 다 작동하지 않니?

+0

, 이것은 또한 당신을 도울 것입니다 : https : //로 docs.python.org/3/library/functions.html#open 'r', 'w'에 'a'를 추가하려면 파일을 읽으려면 표를 참조하십시오. 행운을 빕니다! – Kartik

답변

4

파일의 크기는 어느 정도입니까? 나는 h5py.File(hdffile,'w')을 쓰는 것이 그것을 덮어 쓴다고 생각하기 때문에 비어 있습니다. 읽을 때는 h5py.File(hdffile,'r')을 사용하십시오.

@Luke H의 답변에 대한 회답이 충분하지 않지만 팬더로 읽는 것이 좋은 아이디어는 아닙니다. Pandas hdf5는 htf5를 사용하는 "독단적 인"방법 인 pytables를 사용합니다. 이는 추가 메타 데이터 (예 : 색인)를 저장한다는 의미입니다. pytables로 파일을 만든 경우 pytables 만 사용하여 파일을 읽습니다.

+0

고마워요! 당신은 'w'파일을 비우고 파일을 다시 다운로드했기 때문에 hdf (version 5) 파일을 만들었습니다. 버전 4에 있습니다. 불행히도 파일 서명이 없기 때문에 h5py.File이 작동하지 않습니다. – BenT

0

시도해보십시오 팬더 :

import pandas as pd 
f = pd.read_hdf(C:/path/to/file) 

See Pandas HDF documentation here.

이 당신이 다음 조작 할 수있는 dataframe 같은 HDF 파일에서 읽어야한다.

+0

pandas에서 pd.read_hdf를 사용해 보았지만 찾을 수 없었던 그룹 식별자에 대해 두 번째 인수가 필요합니다. – BenT

+0

파일에 하나 이상의 "pandas object"가 있기 때문입니다. 어떤 것을 지정해야합니다 ("key"인수를 통해). 내가 너보다 그걸 많이 도울 수 없어서 미안해. –

+0

그래서 @ user357269에서 파일이 덮어 씌여졌고 hdf 버전 4에 있고 pandas.read_hdf가 버전 5로 수집 한 것에서 만 작동한다는 것을 알았습니다. – BenT

1

UPDATE :

은 내가 ...

OLD/모듈 HDF 버전 5로 작업하는 모든 현대적인 도서관으로 HDF5/H5 파일을 convert 당신의 HDF 버전으로 처음 4 개 파일을 당신을 추천 할 것입니다 답변 :

store = pd.HDFStore(filename) 
print(store) 
:

이이 방법을 시도 0

이렇게하면 저장된 키, 저장된 DF의 길이 등 HDF 파일에 대한 세부 정보가 인쇄됩니다.

데모 :

지금
In [18]: fn = r'C:\Temp\a.h5' 

In [19]: store = pd.HDFStore(fn) 

In [20]: print(store) 
<class 'pandas.io.pytables.HDFStore'> 
File path: C:\Temp\a.h5 
/df_dc    frame_table (typ->appendable,nrows->10,ncols->3,indexers->[index],dc->[a,b,c]) 
/df_no_dc   frame_table (typ->appendable,nrows->10,ncols->3,indexers->[index]) 

당신이 dataframes 위의 출력에서 ​​키를 사용하여 읽을 수 있습니다 : @MaxU 말한다 ... 그리고 무엇

In [21]: df = store.select('df_dc') 

In [22]: df 
Out[22]: 
    a b c 
0 92 80 86 
1 27 49 62 
2 55 64 60 
3 31 66 3 
4 37 75 81 
5 49 69 87 
6 59 0 87 
7 69 91 39 
8 93 75 31 
9 21 15 7 
+0

그래서 @ user357269에서 파일이 덮어 씌여졌고 hdf 버전 4와 pandas HDF 도구가 버전 5에서만 작동한다는 것을 알았습니다. 고마워요. – BenT

+0

@BenT, 내 대답을 업데이트했습니다. - – MaxU

+0

을 확인하십시오. hdf4 변환기가 설치되어 있지 않으므로이를 시도 할 것입니다. 감사. – BenT

관련 문제