将hdf5转换为csv或tsv文件

时间:2014-05-20 11:43:27

标签: csv bigdata hdf5

我正在寻找可以将.h5文件转换为csv或tsv的示例代码。 我必须阅读.h5,输出应该是csv或tsv。

示例代码将非常感谢,请帮助,因为我已经坚持了最近几天。我遵循包装类但不知道如何使用它。我不是一个好的程序员所以面临很多问题。< / p>

请帮忙 非常感谢提前

5 个答案:

答案 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', ',')

一些注意事项:

  1. sys.stdout可以是任何文件,也可以是文件名字符串,如"out.csv"
  2. %g用于使格式化符合人性化。
  3. 如果您希望TSV使用'\t'而不是','
  4. 我假设您在文件(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