wgw*_*gwz 3 python hdf5 pytables h5py
我有一个数据集,我想转换为HDF5格式.它是NOAA的数据集.目录结构类似于:
NOAA
??? code
??? ghcnd_all
??? ghcnd_all.tar.gz
??? ghcnd-stations.txt
??? ghcnd-version.txt
??? readme.txt
??? status.txt
Run Code Online (Sandbox Code Playgroud)
我正在与熊猫一起进行数据分析.我感兴趣的主要原因是为了节省空间,数据集大约为25Gb.
如何将此数据集转换为单个.hdf5文件?
小智 7
HDF5中的数据存储在数据集中,这些数据集可能是多维的,最多包含32个维度,每个维度最多包含无符号的64位整数长度(列数),并且包含任意大小的数据类型,包括上限的复合数据类型单个数据集的16艾字节.数据集用于保存结构化数据,如numpy数组,pandas DataFrames,图像和电子表格.我还没有找到任何方法直接将纯文本或tar.gz文件放入HDF5.但是,使用Python,您可以将文件读入字符串并将其放入数据集中,如HDF5中的字符串所示.除数据集外,组是HDF5中的另一个主要对象类型,是数据集和其他组的容器.数据集和组类似于文件和目录(或文件夹),并提供分层格式的基础,如Unix文件系统,其中可以使用以/开头的路径名访问对象.HDF5文件是可能包含多个数据集和组的容器,没有大小限制.
为了更好地了解HDF5是什么,我建议从HDF5下载中下载它并附带实用程序和HDFView ,安装它然后通过HDFView学习HDF5,这可以在30分钟内完成.HDFView是一个Java GUI,可以轻松地与HDF5进行交互,但是您不能简单地将文件拖放到其中,而是可以将文件数据导入到数据集中.使用pandas创建HDF5文件并向其添加DataFrame非常容易,这是将数据放入HDF5文件的好方法.以下是对此的演示.有关HDF5你可以看看上列出的其他教程的详细信息HDF5教程,通过API的Python HDF5例子,其他HDF5 Python的例子和HDF5 for Python的Python h5py包文档.有关熊猫的更多信息,10分钟到熊猫是一个很好的起点,接下来是一系列代码示例的熊猫Cookbook和Wes McKinney的数据分析Python,这是大熊猫发明和开发以来的最佳教程.它是一个优秀的作者.
下面是一个使用pandas创建HDF5文件,将DataFrame加载到其中并检索并将其副本存储在另一个变量中的示例:
In [193]: import pandas as pd
In [194]: frame = pd.read_csv('test.csv')
In [195]: frame
Out[195]:
a b c d message
0 1 2 3 4 one
1 5 6 7 8 two
2 9 10 11 12 three
In [196]: type(frame)
Out[196]: pandas.core.frame.DataFrame
In [197]: hdf5store = pd.HDFStore('mydata.h5')
In [198] %ls mydata.h5
Volume in drive C is OS
Volume Serial Number is 5B75-665D
Directory of C:\Users\tn\Documents\python\pydata
09/02/2015 12:41 PM 0 mydata.h5
1 File(s) 0 bytes
0 Dir(s) 300,651,331,584 bytes free
In [199]: hd5store['frame'] = frame
In [200]: hdf5store
Out[200]:
<class 'pandas.io.pytables.HDFStore'>
File path: mydata.h5
/frame frame (shape->[3,5])
In [201]: list(hdf5store.items())
Out[201]:
[('/frame', /frame (Group) ''
children := ['block0_values' (Array), 'block0_items' (Array), 'axis1' (Array), 'block1_items' (Array), 'axis0' (Array), 'block1_values' (VLArray)])]
In [202]: hdf5store.close()
Run Code Online (Sandbox Code Playgroud)
现在演示从mydata.h5检索帧的能力:
In [203]: hdf5store2 = pd.HDFStore('mydata.h5')
In [204]: list(hdf5store2.items())
Out[204]:
[('/frame', /frame (Group) ''
children := ['block0_values' (Array), 'block0_items' (Array), 'axis1' (Array), 'block1_items' (Array), 'axis0' (Array), 'block1_values' (VLArray)])]
In [205]: framecopy = hdf5store2['frame']
In [206]: framecopy
Out[206]:
a b c d message
0 1 2 3 4 one
1 5 6 7 8 two
2 9 10 11 12 three
In [207]: framecopy == frame
Out[207]:
a b c d message
0 True True True True True
1 True True True True True
2 True True True True True
In [208]: hdf5store2.close()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5259 次 |
| 最近记录: |