使用Python,Pandas的HDF5:数据损坏和读取错误

时间:2016-08-06 20:07:39

标签: python pandas hdf5 hdf

所以我试图将Pandas DataFrames存储在HDF5中并获得奇怪的错误,而不是一致的。至少有一半的时间,读取 - 处理 - 移动 - 写入周期的某些部分失败,通常没有比“HDF5读取错误”更清楚的解释。更糟糕的是,有时候表格最终会产生无意义/损坏的数据,这些数据不会在下游之前停止 - 要么是数量级关闭(甚至与正确的值无关),要么是没有意义的日期(最近的数据被标记为在1750年代过时......等等。)

我以为我会经历当前的流程,然后我怀疑可能导致问题的事情可能有所帮助。这是它的样子:

  1. 阅读一些表格(称之为“QUERY1”和“QUERY2”)以查看它们是否是最新的,如果它们不是,
  2. 将HDF5商店中的表格作为“QUERY1”并将其作为QUERY1_YYYY_MM_DD“存储在HDF5商店中
  3. 在该表的外部数据库上运行关联查询。每个数据都在100到1500列之间,每日数据可追溯到1980年。
  4. 将查询1的结果存储为HDF5商店中的新“QUERY1”
  5. 计算一个或多个QUERY1,QUERY2,... QUERYn的几个转换,它们将具有分层(Pandas MultiIndex)列。使用HDF5商店中的更新/替换覆盖项目“Derived_Frame1”...等
  6. 可以访问Windows网络驱动器上的相关.h5文件的多个人运行此例程 - 有时可能,但通常不会同时运行。
  7. 我怀疑的一些事情可能是问题的一部分:

    • 使用默认格式(df.to_hdf(store, key))而不是坚持使用df.to_hdf(store, key, format='table')的“表格”格式。我这样做是因为根据%timeit,读取和写入的默认格式都要快2到5倍

    • 使用网络驱动器允许多个用户运行此例程并至少访问派生的帧。关于这个要求,我无能为力,特别是对于随时对派生数据帧的读访问。

    • 从文档中,听起来像在HDF5商店中反复删除和重写项目可以做奇怪的事情(至少逐渐增加文件大小,不知道还有什么)。也许我应该将查询存档存储在另一个文件中?也许我应该在更新后更换整个主文件?

    • 首先在HDF5中使用MultiIndex列存储数据帧 - 这似乎是默认格式下的“警告”,尽管如果我使用{{1}似乎警告就会消失}。

    • 编辑:运行上述例程的不同用户也可能/可能使用不同版本的Pandas和不同版本的PyTable。

    有什么想法吗?

0 个答案:

没有答案