[英]How can extract data from .h5 file and save it in .txt or .csv properly?
經過大量搜索后,我找不到從.h5
提取數據的簡單方法,並將其傳遞給Numpy
或Pandas
的data.Frame
,以便保存在.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和測量值 。
看起來這些數據是由Pandas編寫的,因此請使用pd.read_hdf()來讀取它。
h5py
將訪問HDF5數據集作為numpy數組。 您獲取密鑰的調用將返回數據集名稱的LIST。 既然你擁有它們,那么將它們作為一個numpy數組訪問並編寫它們應該非常簡單。 您需要讓dtype知道每列中的內容才能正確格式化。
更新於data.h5
以反映在評論鏈接中發布的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=',')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.