簡體   English   中英

加載csv並在Python中保存HDF5

[英]Loading csv and saving HDF5 in Python

我正在嘗試從文本文件(三列浮點數,65341行,由一個或多個空格分隔)中導入數據,並將其保存到HDF5文件中。 我試圖將它們保存在一個表中,該表是由文件名定義的三個組的子級。

因此,對於名為“ data_a1_b2_c3.dat”的文件,我想要在/ data / a1 / b2 / c3中使用1x6000數組(其中c3是表)

我可以創建HDF5文件和組,但是事實證明創建表是有問題的。

到目前為止,這是我想出的(我省去了文件名解析和錯誤檢查;可以):

import numpy as np
import tables as tb

# load datafile
fname = 'data_a1_b2_c3.dat'
data=np.genfromtxt(fname)
data=data[:,2]  

# Open hdf5 file
h5=tb.openFile("h5file.h5",'a')


gp1 = h5.create_group(h5.root,"data")
gp2 = h5.create_group(gp1,"a1")
gp3 = h5.create_group(gp2,"b2")

t = h5.create_table(gp3,"c3",data,'my data')

最后一行引發如下錯誤:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/site-packages/tables/file.py", line 1067, in create_table
    chunkshape=chunkshape, byteorder=byteorder)
  File "/usr/lib64/python2.7/site-packages/tables/table.py", line 842, in __init__
    descr_from_dtype(nparray.dtype)
  File "/usr/lib64/python2.7/site-packages/tables/description.py", line 759, in descr_from_dtype
    for name in dtype_.names:
TypeError: 'NoneType' object is not iterable

我首先想到這與我的數據數組有關。 但是,我是Python的新手,並且SciPi文檔站點當前已關閉(有人有鏡子嗎?!)( http://www.isup.me/http://docs.scipy.org/doc/numpy/

我數組的形狀看起來很奇怪,但是類型看起來很正確。 有什么想法嗎?

>>> data.shape
(65341,)
>>> data.dtype
dtype('float64')

有關信息,這是我要導入的數據文件的前三行(僅需要第三列)

  0.250000000000000       0.250000000000000        584.469683289793     
  0.250000000000000        1.00000000000000        840.153369718130     
  0.250000000000000        2.00000000000000        821.242731813009

為了快速獲勝-您可以將數據保存為數組(我想是的-因為數據只是一維的):

a = h5.create_array(gp3,"c3",data,'my data')

記住也要關閉文件:

h5.close()

結果是:

數組結果

如果您確實要將其另存為表,則基本上必須記住,首先需要定義表(就其記錄結構而言),然后再分配和刷新它們的值。

因此,除了將其添加到開始之外,您所做的只是:

class Data(tb.IsDescription):
  value = tb.Float32Col()

然后執行:

t = h5.create_table(gp3,"c3",Data,'my data')

row = t.row
for d in data:
   row['value'] = d
   row.append()
t.flush()

結果是:

表

最后,就我個人而言,我實際上將Pandas用於CSV到HDF5的東西-更容易操作DataFrame和Series ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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