我正在寻找可以将.h5文件转换为csv或tsv的示例代码。 我必须阅读.h5,输出应该是csv或tsv。
示例代码将非常感谢,请帮助,因为我已经坚持了最近几天。我遵循包装类但不知道如何使用它。我不是一个好的程序员所以面临很多问题。< / p>
请帮忙 非常感谢提前
答案 0 :(得分:2)
您也可以使用h5dump -o dset.asci -y -w 400 dset.h5
-o dset.asci
指定输出文件-y -w 400
指定尺寸大小乘以打印每个值所需的位置数和间距数。你应该在这里采取一个非常大的数字。dset.h5
当然是您要转换的hdf5文件这会将其转换为ascii文件,该文件很容易导入到Excel中,您可以轻松地将其保存为.csv
(另存为excel,并指定文件格式)。我做了几次,它对我有用。 source
答案 1 :(得分:1)
可以在以下位置找到HDF5到CSV转换的示例 https://github.com/amgreenstreet/Million-Song-Dataset-HDF5-to-CSV
它使用Python并将Million Songs Dataset从HDF5转换为CSV格式。
我强烈建议使用Python(x,y)版本 http://python-xy.github.io/ 因为这个例子使用了额外的Python包,如NumPy和PyTables。 Python(x,y)包含了这些包。
答案 2 :(得分:0)
的Python:
import numpy as np
import h5py
np.savetxt(sys.stdout, h5py.File('foo.h5')['dataname'], '%g', ',')
一些注意事项:
"out.csv"
。'\t'
而不是','
。dataname
)中有一个数据集名称。答案 3 :(得分:0)
import numpy as np
import h5py
with h5py.File('chunk0003.hdf5','r') as hf:
print('List of arrays in this file: \n', hf.keys())
### This lists arrays in the file [u'_self_key', u'chrms1', u'chrms2', u'cuts1', u'cuts2', u'misc', u'strands1', u'strands2']
r1 = h5py.File('chunk0003.hdf5','r')
a = r1['chrms1'][:]
b = r1['chrms2'][:]
c = r1['cuts1'][:]
d = r1['cuts2'][:]
e = r1['strands1'][:]
f = r1['strands2'][:]
r1.close()
table=np.array([a,b,c,d,e,f])
table2=table.transpose()
np.savetxt('chunk0003.txt',table2,delimiter='\t')
答案 4 :(得分:0)
另一个使用pandas
的python解决方案。
#!/usr/bin/env python3
import pandas as pd
import sys
fpath = sys.argv[1]
if len(sys.argv)>2:
key = sys.argv[2]
df = pd.read_hdf(fpath, key=key)
else:
df = pd.read_hdf(fpath)
df.to_csv(sys.stdout, index=False)
此脚本为available here
此scrpt的第一个参数是hdf5文件。如果传递了第二个参数,则将其视为列的名称,否则将打印所有列。它将csv转储到stdout,您可以将其重定向到文件。
例如,如果您的数据存储在名为data.h5
的hdf5文件中,并且您已将此脚本另存为hdf2df.py
,那么
$ python3 hdf2df.py data.hf > data.csv
会将数据写入csv文件data.csv
。