我试图从Python中读取hdf5文件中的数据.我可以使用读取hdf5文件h5py,但我无法弄清楚如何访问文件中的数据.
import h5py
import numpy as np
f1 = h5py.File(file_name,'r+')
Run Code Online (Sandbox Code Playgroud)
这有效,文件被读取.但是如何访问文件对象中的数据f1呢?
当我尝试读取用h5py创建的HDF5格式文件时,我得到了pandas错误.我想知道我是不是做错了什么?
import h5py
import numpy as np
import pandas as pd
h5_file = h5py.File('test.h5', 'w')
h5_file.create_dataset('zeros', data=np.zeros(shape=(3, 5)), dtype='f')
h5_file.close()
pd_file = pd.read_hdf('test.h5', 'zeros')
Run Code Online (Sandbox Code Playgroud)
给出错误:TypeError:如果对象不存在也没有传递值,则无法创建存储器
我尝试将密钥集指定为'/ zeros'(就像我在阅读文件时使用h5py一样)而没有运气.
如果我使用pandas.HDFStore读取它,我会得到一个空的商店:
store = pd.HDFStore('test.h5')
>>> store
<class 'pandas.io.pytables.HDFStore'>
File path: test.h5
Empty
Run Code Online (Sandbox Code Playgroud)
用h5py读取刚刚创建的文件没有麻烦:
h5_back = h5py.File('test.h5', 'r')
h5_back['/zeros']
<HDF5 dataset "zeros": shape (3, 5), type "<f4">
Run Code Online (Sandbox Code Playgroud)
使用这些版本:
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
pd.__version__
'0.16.2'
h5py.__version__
'2.5.0'
Run Code Online (Sandbox Code Playgroud)
非常感谢,玛莎
我下载了一个存储在.h5文件中的数据集.我只需保留某些列,并能够操纵其中的数据.
为此,我尝试将其加载到pandas数据帧中.我试过用:
pd.read_hdf(path)
Run Code Online (Sandbox Code Playgroud)
但我得到: No dataset in HDF5 file.
我已经在SO上找到了答案(将条件下的HDF5文件读取到pandas DataFrame)但我不需要条件,答案会增加关于文件编写方式的条件,但我不是文件的创建者所以我可以'对此做任何事情.
我也尝试过使用h5py:
df = h5py.File(path)
Run Code Online (Sandbox Code Playgroud)
但这不容易被操纵,我似乎无法从中获取列(仅使用列的名称df.keys())有关如何执行此操作的任何想法?
我有以下代码将hdf5文件作为numpy数组读取:
hf = h5py.File('path/to/file', 'r')
n1 = hf.get('dataset_name')
n2 = np.array(n1)
Run Code Online (Sandbox Code Playgroud)
当我打印n2我得到这个:
Out[15]:
array([[<HDF5 object reference>, <HDF5 object reference>,
<HDF5 object reference>, <HDF5 object reference>...
Run Code Online (Sandbox Code Playgroud)
如何阅读HDF5 object reference查看存储在其中的数据?