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