Python Tables 学习笔记
实在是太烦了,虽然以前也用过python tables来存储大数据,但是还是有些功能不太懂。我只用了最简单的create array直接把所有的数据一次性写入hdf5文件。但是现在的电脑内存比较小,处理的数据太大,一次性写入,内存会不足。另一方面,一边处理数据,一边写入数据,是一种更好的策略。于是自己又重写学了python tables,也花了不少时间。在此总结下,也为自己做好总结立个标杆。要总结好,不然很快就会忘记了。
本文将从tables的读,写,以及一些简单的操作进行简要描述。使得tables这个tool能够为我们所用。
首先,我们先介绍下HDF5(Hierarchical Data Format).HDF 是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF 是由美国国家超级计算应用中心(NCSA)创建的,以满足不同群体的科学家在不同工程项目领域之需要。HDF 可以表示出科学数据存储和分布的许多必要条件。其有以下一些特征:
- 自述性
- 通用性
- 灵活性
- 扩展性
- 跨平台
HDF文件是安装树状结构组织起来的。其顶部是根节点(),根节点下可以接很多分组(group),每个分组下有可以有很多节点,包括表(table),数组(array),压缩数组(compression array,Earray),可扩展压缩数组(enlargeable array,Earray),变长数组(variable length array,VLarray)。每个节点下还有叶子节点,即最终存储的数据。
简单知道HDF5文件的特征,我们接着介绍下,在python下如何使用tables(其实还有H5Py这个包也是可以用)这个package来实现对HDF5文件的操作。
假设大家已经把tables及其依赖的库如numpy等包安装好在python的环境下。
1 写数据到表
这里简单以pytable里面的例子进行说明。对于table,我们首先要定义表格中每个元素(field)的数据类型,长度等信息。如下图,我们定义了一个particle类,其名称,数据类型,及长度。比如说name这个field是字符串类型,最大长度是16个字节。