PyTables

PyTables: 分层数据集

PyTables 是基于 HDF5 格式构建的数据集,比 pandas 更底层,比 h5py 更高层。适合用在存储比 csv 表格更复杂更大的数据,同时又不想自己实现一些基本的数据操作的情况中,并且经过简单的处理就能用 pandas 进行进一步数据分析。

安装

   # 使用 conda
   conda install pytables
   # 或者 pip
   python3 -m pip install tables

测试

   import tables as tb

   tb.test()

基本使用

pytables 的基本逻辑是

创建一个 HDF5 文件

    f = tb.open_file("filename.h5", mode="w", title="file title", filters=tb.Filters(complevel=9))

    # 别忘了还要关闭它
    f.close()

在文件中创建任意层的数据集

    g = f.create_group("/parent/group", "group_name", title="group title")

在数据集中创建若干个数据表

    # 需要创建对数据的描述
    class data_description(tb.IsDescription):
        name = tb.StringCol(20)
        idn = tb.Int64Col()
        class sub_data(tb.IsDescription):
            name = tb.StringCol(20)
            id2 = tb.Float64Col(shape=(3,5))

    # 然后创建空的数据表       
    t = f.create_table(g, "table_name", data_description)

    # 在里面循环添加记录
    for i in range(10):
        t.row["name"] = "a"
        t.row["idn"] = i
        t.row["sub_data"] = (f'asd_{i}', np.random.rand(3, 5))
        t.row.append()

    # 最后刷新一下缓存,确保数据都写入到磁盘
    t.flush()

遇到的问题

在不支持 flock 的集群上运行

需要设置环境变量

   export HDF5_USE_FILE_LOCKING=FALSE

评论

Comments powered by Disqus