python-将数组或DataFrame与其他信息一起保存在文件中
统计软件Stata允许将短文本片段保存在数据集中。 这可以使用NumPy和/或NumPy完成。
这对我来说是非常有价值的功能,因为它使我可以保存各种信息,从提醒和待办事项列表到有关我如何生成数据甚至特定变量的估算方法的信息。
我现在试图在Python 3.6中提出类似的功能。 到目前为止,我已经在网上查看并咨询了许多帖子,但是这些帖子并不能完全解决我想要做的事情。
一些参考文章包括:
在磁盘上保留numpy数组的最佳方法
将熊猫数据框保存到pickle和csv之间有什么区别?
在笔记本中上传大型csv文件以使用python熊猫的最快方法是什么?
如何查看npz文件中的数据对象内容?
对于小型NumPy阵列,我得出的结论是,函数NumPy和Pandas的组合可以在单个文件中充分存储所有相关信息。
例如:
a = np.array([[2,4],[6,8],[10,12]])
d = {"first": 1, "second": "two", "third": 3}
np.savez(whatever_name.npz, a=a, d=d)
data = np.load(whatever_name.npz)
arr = data['a']
dic = data['d'].tolist()
但是,问题仍然存在:
是否存在更好的方法来将其他信息潜在地合并到包含NumPy阵列或(大)Pandas DataFrame的文件中?
我特别想听听您可能对示例提出的任何建议的利弊。 依赖性越少越好。
6个解决方案
25 votes
有很多选择。 我将只讨论HDF5,因为我有使用这种格式的经验。
优点:便携式(可以在Python之外读取),本机压缩,内存不足功能,元数据支持。
缺点:依赖于单个低级C API,可能会将数据损坏为单个文件,删除数据不会自动减小大小。
以我的经验,为了提高性能和便携性,请避免使用h5py/lzf存储数字数据。 您可以改用h5py提供的直观界面。
存储数组