如何从 .h5 文件中提取数据并将其正确保存在 .txt 或 .csv 中?

问题描述 投票:0回答:2

经过大量搜索后,我找不到一种简单的方法来从

.h5
中提取数据并将其通过
data.Frame
Numpy
传递给
Pandas
以保存在
.txt
.csv
文件中。

import h5py
import numpy as np
import pandas as pd

filename = 'D:\data.h5'
f = h5py.File(filename, 'r')

# List all groups
print("Keys: %s" % f.keys())
a_group_key = list(f.keys())[0]

# Get the data
data = list(f[a_group_key])
pd.DataFrame(data).to_csv("hi.csv")
Keys: <KeysViewHDF5 ['dd48']>

当我打印数据时,我看到以下结果:

print(data)
['axis0',
 'axis1',
 'block0_items',
 'block0_values',
 'block1_items',
 'block1_values']

如果有人解释我他们是什么以及我如何完全提取数据并将其保存在.csv文件中,我将不胜感激。似乎还没有常规的方法可以做到这一点,而且还具有挑战性!直到现在我只能通过以下方式看到部分数据:

import numpy as np 
dfm = np.fromfile('D:\data.h5', dtype=float)
print (dfm.shape)
print(dfm[5:])

dfm=pd.to_csv('train.csv')
#dfm.to_csv('hi.csv', sep=',', header=None, index=None)

我的期望是在.h5文件中提取time_stamps

measurements

python pandas numpy hdf5 data-extraction
2个回答
0
投票

数据好像是Pandas写的,所以用pd.read_hdf()读一下


0
投票

h5py
将访问 HDF5 数据集作为 numpy 数组。您获取密钥的调用会返回数据集名称的列表。现在你有了它们,将它们作为 numpy 数组访问并编写它们应该非常简单。您需要让 dtype 知道每列中的内容才能正确格式化。

已于 2019 年 5 月 22 日更新,以反映在评论链接中发布的

data.h5
的内容。
np.savetxt()
中的默认格式是
'%.18e'
。提供了非常简单(粗略)的逻辑来根据这些数据集的 dtype 修改格式。这需要更健壮的 dtype 检查和格式化以供一般使用。此外,您还需要添加逻辑来解码 unicode 字符串。

import h5py
filename = 'D:\data.h5'
import numpy as np
h5f = h5py.File(filename, 'r')
# get a List of data sets in group 'dd48'
a_dset_keys = list(h5f['dd48'].keys())

# Get the data
for dset in a_dset_keys :
    ds_data = (h5f['dd48'][dset])
    print ('dataset=', dset)
    print (ds_data.dtype)
    if ds_data.dtype == 'float64' :
        csvfmt = '%.18e'
    elif ds_data.dtype == 'int64' :
        csvfmt = '%.10d'
    else:
        csvfmt = '%s'
    np.savetxt('output_'+dset+'.csv', ds_data, fmt=csvfmt, delimiter=',')
© www.soinside.com 2019 - 2024. All rights reserved.