相关疑难解决方法(0)

如何在Python中读取HDF5文件

我试图从Python中读取hdf5文件中的数据.我可以使用读取hdf5文件h5py,但我无法弄清楚如何访问文件中的数据.

我的代码

import h5py    
import numpy as np    
f1 = h5py.File(file_name,'r+')    
Run Code Online (Sandbox Code Playgroud)

这有效,文件被读取.但是如何访问文件对象中的数据f1呢?

python hdf5

57
推荐指数
6
解决办法
16万
查看次数

Pandas无法读取使用h5py创建的hdf5文件

当我尝试读取用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)

非常感谢,玛莎

python hdf5 h5py pandas

16
推荐指数
1
解决办法
1万
查看次数

使用h5py保存pandas DataFrame,以便与其他hdf5阅读器进行互操作

这是一个示例数据框:

import pandas as pd

NaN = float('nan')
ID = [1, 2, 3, 4, 5, 6, 7]
A = [NaN, NaN, NaN, 0.1, 0.1, 0.1, 0.1]
B = [0.2, NaN, 0.2, 0.2, 0.2, NaN, NaN]
C = [NaN, 0.5, 0.5, NaN, 0.5, 0.5, NaN]
columns = {'A':A, 'B':B, 'C':C}
df = pd.DataFrame(columns, index=ID)
df.index.name = 'ID'
print(df)

      A    B    C
ID               
1   NaN  0.2  NaN
2   NaN  NaN  0.5
3   NaN  0.2  0.5
4   0.1  0.2  NaN
5   0.1  0.2 …
Run Code Online (Sandbox Code Playgroud)

matlab numpy h5py pandas

13
推荐指数
3
解决办法
1万
查看次数

将HDF5文件读取到带有条件的pandas DataFrame

我有一个巨大的HDF5文件,我想在pandas DataFrame中加载它的一部分来执行一些操作,但我有兴趣过滤一些行.

我可以通过一个例子更好地解释:

原始HDF5文件看起来像:

A    B    C    D
1    0    34   11
2    0    32   15
3    1    35   22
4    1    34   15
5    1    31   9
1    0    34   15
2    1    29   11
3    0    34   15
4    1    12   14
5    0    34   15
1    0    32   13
2    1    34   15
etc  etc  etc  etc
Run Code Online (Sandbox Code Playgroud)

我想要做的是将它完全按原样加载到pandas Dataframe中,但仅限于此 where A==1 or 3 or 4

到现在为止我可以使用以下方法加载整个HDF5:

store = pd.HDFStore('Resutls2015_10_21.h5')
df = pd.DataFrame(store['results_table'])
Run Code Online (Sandbox Code Playgroud)

我不知道如何在where这里包含一个条件.

python hdf5 pandas

7
推荐指数
1
解决办法
8724
查看次数

ValueError: 在带有来自 MatLab h5 文件的 pandas.read_hdf 的 HDF5 文件中没有数据集

ValueError: No dataset in HDF5 file.在使用时得到一个:

In [1]: import pandas as pda

In [2]: store = pda.read_hdf('X.h5')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-1-72e9d80a2c5b> in <module>()
----> 1 store = pda.read_hdf('X.h5')

/usr/local/miniconda3/envs/tensorFlow-GPU/lib/python3.6/site-packages/pandas/io/pytables.py in read_hdf(path_or_buf, key, mode, **kwargs)
    356             groups = store.groups()
    357             if len(groups) == 0:
--> 358                 raise ValueError('No dataset in HDF5 file.')
    359             candidate_only_group = groups[0]
    360

ValueError: No dataset in HDF5 file.
Run Code Online (Sandbox Code Playgroud)

h5dump 显示:

$ h5dump -n X.h5
HDF5 "X.h5" {
FILE_CONTENTS {
 group …
Run Code Online (Sandbox Code Playgroud)

python matlab hdf5 h5py pandas

7
推荐指数
0
解决办法
4570
查看次数

使用 Pandas 读取使用 h5py 创建的 HDF5 文件

我有一堆 hdf5 文件,我想将其中的一些数据转换为 parquet 文件。不过,我正在努力将它们读入 pandas/pyarrow 中。我认为这与文件最初创建的方式有关。

如果我使用 h5py 打开文件,数据看起来完全符合我的预期。

import h5py

file_path = "/data/some_file.hdf5"
hdf = h5py.File(file_path, "r")
print(list(hdf.keys()))
Run Code Online (Sandbox Code Playgroud)

给我

>>> ['foo', 'bar', 'baz']
Run Code Online (Sandbox Code Playgroud)

在本例中,我对“bar”组感兴趣,其中包含 3 个项目。

如果我尝试读取使用中的数据,HDFStore我将无法访问任何组。

>>> ['foo', 'bar', 'baz']
Run Code Online (Sandbox Code Playgroud)

那么该HDFStore对象就没有键或组。

import pandas as pd

file_path = "/data/some_file.hdf5"
store = pd.HDFStore(file_path, "r")
Run Code Online (Sandbox Code Playgroud)

如果我尝试访问数据,则会收到以下错误

assert not store.groups()
assert not store.keys()
Run Code Online (Sandbox Code Playgroud)
TypeError: cannot create a storer if the object is not existing nor a value are passed
Run Code Online (Sandbox Code Playgroud)

同样,如果我尝试使用pd.read_hdf它看起来文件是空的。

bar = store.get("/bar")
Run Code Online (Sandbox Code Playgroud)
ValueError: Dataset(s) …
Run Code Online (Sandbox Code Playgroud)

python h5py pandas hdfstore

4
推荐指数
1
解决办法
4453
查看次数

标签 统计

pandas ×5

python ×5

h5py ×4

hdf5 ×4

matlab ×2

hdfstore ×1

numpy ×1