Python Pytables/数据库相对于文件系统对数据组织的好处?

Python Pytables/数据库相对于文件系统对数据组织的好处?,python,csv,organization,pytables,Python,Csv,Organization,Pytables,我目前正在尝试重新设计我实验室的一般工作流程,并且遇到了一个概念上的障碍,这主要是由于我在这方面缺乏知识。 我们的数据目前以典型的文件系统结构组织,大致如下: 日期\单元格\扫描 其中,对于特定日期,通常有多个单元格文件夹,在这些单元格文件夹中有多个扫描文件。这些是相对简单的.csv文件,其中记录参数分别保存在.xml文件中。因此,在任何日期文件夹中,都可能有几十到几百个文件用于当天在多个单元格子目录文件夹中组织的录制 我们的工作流程通常涉及在一个单元格文件夹中打开多个扫描文件,对其进行平均,然

我目前正在尝试重新设计我实验室的一般工作流程,并且遇到了一个概念上的障碍,这主要是由于我在这方面缺乏知识。 我们的数据目前以典型的文件系统结构组织,大致如下:

日期\单元格\扫描

其中,对于特定日期,通常有多个单元格文件夹,在这些单元格文件夹中有多个扫描文件。这些是相对简单的.csv文件,其中记录参数分别保存在.xml文件中。因此,在任何日期文件夹中,都可能有几十到几百个文件用于当天在多个单元格子目录文件夹中组织的录制

我们的工作流程通常涉及在一个单元格文件夹中打开多个扫描文件,对其进行平均,然后对具有其他单元格文件夹数据点的扫描文件进行平均,通常需要几天时间

这对于Pandas和Numpy来说相对简单,尽管在远程访问保存到lab服务器的文件夹时会有某种“手动”的感觉。我们有时也会遇到问题,因为我们经常需要同时从这些文件中提取数据。虽然这通常不是问题,但文件的大小可以在几MB到1000 MB之间。在后一种情况下,我们必须采取措施,不要将整个文件加载到内存中,或者至少不要一次加载多个文件,以避免内存问题

作为这次重新设计的一部分,我一直在阅读关于Pytables的内容,用于数据组织和访问可能太大而无法存储在内存中的数据集。所以我想我的两个主要问题是

如果内存不足问题并不严重,即该实用程序不会经常使用,那么使用Pytables之类的工具进行数据组织比简单地在服务器上或本地维护文件系统有什么显著的优势吗? 有什么理由不使用Pytables数据库路由吗?我们正在重新设计数据收集和存储,其中一个选项是直接将数据收集到Pandas数据帧中,并将文件保存为HDF5文件类型。我目前正在权衡在当前系统中这样做的成本/收益,该系统将数据存储到csv文件中,然后加载到Pandas中供以后分析。
我的想法是,通过创建一个数据库而不是我们现有的文件系统,我们可以1。通过hdf5和HDF2提供的压缩,可以在一定程度上减少磁盘上的文件大小。由于能够根据不同的参数进行查询,访问数据可能会变得更容易。但我对2的担心是,由于我们通常只是打开一个完整的文件,所以我们不会太多地利用这个功能——我们基本上会执行与打开文件系统中的一个文件或一系列文件相同的步骤。这让我想知道,就我们的总体工作流程而言,这需要的前期工作是否值得

首先,我非常喜欢Pytables,因为它帮助我管理每个文件20GB或更大的海量数据文件,我认为这就是Pytables发挥其优势的地方—快速访问、内置查询等。。如果系统还用于存档,HDF5的压缩功能将减少空间需求,并减少传输的网络负载。我不认为在HDF5文件中“复制”您的文件系统有好处,很高兴听到我在这方面错了。我建议采用一种混合方法:保持正常的文件系统结构,将实验数据和所有元数据放在hdf5容器中。通过这种方式,您可以保持正常文件系统访问权限、复制等的灵活性,并且如果您有内存问题的较大文件,仍然可以利用pytables的功能。将数据从HDF5拉入普通pandas或numpy非常便宜,因此您的“正常”工作流程应该不会受到影响。

我认为这是我这里的难题的基础-复制当前文件系统是否有任何实际好处,因为它存在于我们的服务器上,使用pytables数据库。我确实认为,无论我们是否追求某种类型的数据库,切换到HDF5并将元数据和原始数据结合起来是最好的途径。我会对这种说法说不。也许这个问题有助于你做出决定。