经过大量搜索后,我找不到一种简单的方法来从.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
文件中提取时间戳和测量。
答案 0 :(得分:0)
数据似乎是由熊猫编写的,因此请使用pd.read_hdf()进行读取。
答案 1 :(得分:0)
h5py
将以numpy数组的形式访问HDF5数据集。调用获取键将返回数据集名称的列表。现在有了它们,将它们作为一个numpy数组进行访问并编写它们应该非常简单。您需要让dtype知道每一列中的内容才能正确格式化。
更新了5/22/2019 以反映评论链接中发布的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=',')