在Python中打开.h5文件

12

我正在尝试在Python中读取一个h5文件。

这个文件可以在这个链接中找到,它被称为'vstoxx_data_31032014.h5'。我正在尝试运行的代码来自《Python金融大数据分析》一书,作者是Yves Hilpisch,代码如下:

import pandas as pd     
h5 = pd.HDFStore('path.../vstoxx_data_31032014.h5', 'r')
futures_data = h5['futures_data']  # VSTOXX futures data
options_data = h5['options_data']  # VSTOXX call option data
h5.close()

我遇到了以下错误:

h5 = pd.HDFStore('path.../vstoxx_data_31032014.h5', 'r')
Traceback (most recent call last):

  File "<ipython-input-692-dc4e79ec8f8b>", line 1, in <module>
    h5 = pd.HDFStore('path.../vstoxx_data_31032014.h5', 'r')

  File "C:\Users\Laura\Anaconda3\lib\site-packages\pandas\io\pytables.py", line 466, in __init__
    self.open(mode=mode, **kwargs)

  File "C:\Users\Laura\Anaconda3\lib\site-packages\pandas\io\pytables.py", line 637, in open
    raise IOError(str(e))

OSError: HDF5 error back trace

  File "C:\aroot\work\hdf5-1.8.15-patch1\src\H5F.c", line 604, in H5Fopen
    unable to open file
  File "C:\aroot\work\hdf5-1.8.15-patch1\src\H5Fint.c", line 1085, in H5F_open
    unable to read superblock
  File "C:\aroot\work\hdf5-1.8.15-patch1\src\H5Fsuper.c", line 277, in H5F_super_read
    file signature not found

End of HDF5 error back trace

Unable to open/create file 'path.../vstoxx_data_31032014.h5'

为了回答这个问题,我已经将“path... /”替换为我的工作目录。

有人知道这个错误可能来自哪里吗?


1
你已经标记了 h5py,但在问题中你使用的是 pandas 来读取它? - DavidG
这就是书上所教的...我应该使用什么替代? - python_enthusiast
对不起,我现在明白了。 - python_enthusiast
1
我个人会使用h5py模块,因为我对pandas不太熟悉。我已经添加了一个答案,展示了如何打开文件。 - DavidG
2个回答

15
为了使用h5py模块打开HDF5文件,您可以使用h5py.File(filename)。文档可以在这里找到。
import h5py

filename = "vstoxx_data_31032014.h5"

h5 = h5py.File(filename,'r')

futures_data = h5['futures_data']  # VSTOXX futures data
options_data = h5['options_data']  # VSTOXX call option data

h5.close()

1
嗯,我用h5文件可以运行。你确定你设置了正确的路径吗? - DavidG
1
你使用的h5py版本是什么? - DavidG
我尝试谷歌搜索如何检查,但找不到。我再次运行pip install h5py,所以它应该是最新的,我想。 - python_enthusiast
我认为这是2.7.13版本! - python_enthusiast
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/157149/discussion-between-python-newbie-and-davidg。 - python_enthusiast
显示剩余4条评论

-3
import os

wd=os.chdir('pah of your working directory') #change the file path to your working directory
wd=os.getcwd() #request what is the current working directory
print(wd)

if __name__ == '__main__':
    # import required libraries
    import h5py as h5
    import numpy as np
    import matplotlib.pyplot as plt

    f = h5.File("hdf5 file with its path", "r")
    datasetNames = [n for n in f.keys()]
    for n in datasetNames:
        print(n)

4
请不要发布仅包含代码的答案。未来的读者会感激你解释为什么这个答案回答了问题,而不是从代码中推断出来。另外,由于这是一个旧问题,请解释它如何补充其他已接受的答案。最后,请了解代码格式化的工作方式。 - Gert Arnold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接