Questions tagged «hdf5»

16
使用熊猫的“大数据”工作流程
在学习熊猫的过程中,我试图迷惑了这个问题很多月。我在日常工作中使用SAS,这非常有用,因为它提供了核心支持。但是,由于许多其他原因,SAS作为一个软件也是很糟糕的。 有一天,我希望用python和pandas取代我对SAS的使用,但是我目前缺少大型数据集的核心工作流程。我不是在谈论需要分布式网络的“大数据”,而是文件太大而无法容纳在内存中,但文件又足够小而无法容纳在硬盘上。 我的第一个想法是用来HDFStore将大型数据集保存在磁盘上,然后仅将需要的部分拉入数据帧中进行分析。其他人提到MongoDB是更易于使用的替代方案。我的问题是这样的: 什么是实现以下目标的最佳实践工作流: 将平面文件加载到永久的磁盘数据库结构中 查询该数据库以检索要输入到熊猫数据结构中的数据 处理熊猫中的片段后更新数据库 现实世界中的示例将不胜感激,尤其是那些从“大数据”中使用熊猫的人。 编辑-我希望如何工作的示例: 迭代地导入一个大的平面文件,并将其存储在永久的磁盘数据库结构中。这些文件通常太大而无法容纳在内存中。 为了使用Pandas,我想读取这些数据的子集(通常一次只读取几列),使其适合内存。 我将通过对所选列执行各种操作来创建新列。 然后,我将不得不将这些新列添加到数据库结构中。 我正在尝试找到执行这些步骤的最佳实践方法。阅读有关熊猫和pytables的链接,似乎添加一个新列可能是个问题。 编辑-专门回答杰夫的问题: 我正在建立消费者信用风险模型。数据类型包括电话,SSN和地址特征;财产价值;犯罪记录,破产等贬义信息。我每天使用的数据集平均有近1,000到2,000个字段,这些字段是混合数据类型:数字和字符数据的连续,名义和有序变量。我很少追加行,但是我确实执行许多创建新列的操作。 典型的操作涉及使用条件逻辑将几个列合并到一个新的复合列中。例如,if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'。这些操作的结果是数据集中每个记录的新列。 最后,我想将这些新列添加到磁盘数据结构中。我将重复步骤2,使用交叉表和描述性统计数据探索数据,以寻找有趣的直观关系进行建模。 一个典型的项目文件通常约为1GB。文件组织成这样的方式,其中一行包含消费者数据记录。每条记录的每一行都有相同的列数。情况总是如此。 创建新列时,我会按行进行子集化是非常罕见的。但是,在创建报告或生成描述性统计信息时,对行进行子集化是很常见的。例如,我可能想为特定业务创建一个简单的频率,例如零售信用卡。为此,除了我要报告的任何列之外,我将只选择那些业务线=零售的记录。但是,在创建新列时,我将拉出所有数据行,而仅提取操作所需的列。 建模过程要求我分析每一列,寻找与某些结果变量有关的有趣关系,并创建描述这些关系的新复合列。我探索的列通常以小集合形式完成。例如,我将集中讨论一组20个仅涉及属性值的列,并观察它们与贷款违约的关系。一旦探索了这些列并创建了新的列,我便转到另一组列,例如大学学历,并重复该过程。我正在做的是创建候选变量,这些变量解释我的数据和某些结果之间的关系。在此过程的最后,我应用了一些学习技术,这些技术可以根据这些复合列创建方程。 我很少向数据集添加行。我几乎总是会创建新列(统计/机器学习术语中的变量或功能)。

1
将HDF5用于大型阵列存储(而不是平面二进制文件)是否具有分析速度或内存使用优势?
我正在处理大型3D阵列,通常需要以各种方式对其进行切片以进行各种数据分析。一个典型的“立方体”可以达到〜100GB(将来可能会更大) 似乎对于python中的大型数据集,通常推荐的文件格式是使用HDF5(h5py或pytables)。我的问题是:使用HDF5来存储和分析这些多维数据集,而不是将它们存储在简单的平面二进制文件中,对速度或内存使用有好处吗?HDF5是否更适合表格数据,而不是像我正在使用的大型数组?我看到HDF5可以提供很好的压缩,但是我对处理速度和处理内存溢出更感兴趣。 我经常只想分析多维数据集的一个大子集。pytables和h5py的一个缺点似乎是,当我对数组进行切片时,我总是得到一个numpy数组,占用了内存。但是,如果我对平面二进制文件的numpy内存映射进行切片,则可以获得一个视图,该视图将数据保留在磁盘上。因此,看来我可以更轻松地分析数据的特定扇区,而不会耗尽内存。 我已经浏览了pytables和h5py,到目前为止,还没有看到两者对我的好处。
96 python  numpy  hdf5  pytables  h5py 

10
如何在Python中读取HDF5文件
我正在尝试从Python中的hdf5文件读取数据。我可以使用读取hdf5文件h5py,但无法弄清楚如何访问文件中的数据。 我的密码 import h5py import numpy as np f1 = h5py.File(file_name,'r+') 这可以正常工作并读取文件。但是,如何访问文件对象内部的数据f1?
79 python  hdf5 

7
关于NetCDF和HDF5用于存储科学数据的看法?
有人在NetCDF和HDF5方面有足够的经验,可以为它们提供一些优点/缺点,作为存储科学数据的方法吗? 我使用过HDF5,并且想通过Java进行读写,但是该接口实际上是C库的包装,这使我感到困惑,因此NetCDF似乎很吸引人,但我对此一无所知。 编辑:我的应用程序仅用于数据记录,因此我得到的文件具有自描述格式。对我而言,重要的功能是能够添加任意元数据,具有快速写入访问权限以附加到字节数组以及具有单写入器/多读取器并发性(强烈建议但并非必须并发。NetCDF文档说它们具有SWMR,但没有没有说他们是否支持任何机制来确保两个编写者无法一次打开同一个文件而导致灾难性的结果)。我喜欢HDF5的层次结构(特别是我喜欢有向无环图的层次结构,比像“常规”文件系统的层次结构更灵活),现在正在阅读NetCDF文档...如果它只允许每个文件,那么它可能对我不起作用。:( 更新-看起来NetCDF-Java从netCDF-4文件读取,但仅从不支持层次组的netCDF-3文件写入。该死的 2009年7月14日更新:我开始对Java中的HDF5感到非常沮丧。可用的库不是很好,它有一些主要的绊脚石,它们与Java的抽象层(复合数据类型)有关。C的一种很好的文件格式,但看起来好像丢了。> :(
68 hdf5  netcdf 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.