簡體   English   中英

如何從.h5文件中提取數據並將其保存在.txt或.csv中?

[英]How can extract data from .h5 file and save it in .txt or .csv properly?

經過大量搜索后,我找不到從.h5提取數據的簡單方法,並將其傳遞給NumpyPandasdata.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM