2011-02-02 27 views
46

我做了很多统计工作,并使用Python作为我的主要语言。我使用的一些数据集可能需要20GB内存,这使得在numpy,scipy和PyIMSL中使用内存函数对它们进行操作几乎是不可能的。统计分析语言SAS在这方面具有很大的优势,因为它可以从硬盘上操作数据,而不是严格按照内存处理。但是,我想避免必须在SAS中编写大量代码(出于各种原因),因此我试图确定我有哪些Python选项(除了购买更多硬件和内存)。使用h5py在Python中对大数据进行分析工作的经验?

我要澄清的是方法,如地图,减少很多我的工作没有帮助,因为我需要在完整组数据(例如计算位数或拟合逻辑回归模型)进行操作。

最近我开始玩h5py,认为这是我发现的最好的选择,它允许Python像SAS一样工作,并通过磁盘(通过hdf5文件)操作数据,同时仍然能够利用numpy/scipy/matplotlib等我想听听是否有人在类似的环境中使用Python和h5py,以及他们发现了什么。有人能够在迄今为止由SAS主导的“大数据”设置中使用Python吗?编辑:购买更多的硬件/内存当然可以提供帮助,但从IT角度来看,我很难将Python卖给需要分析庞大数据集的组织,当Python(或R或MATLAB等)需要时将数据保存在内存中。 SAS在这里仍然有强大的卖点,因为虽然基于磁盘的分析可能会比较慢,但您可以自信地处理大量的数据集。所以,我希望Stackoverflower能够帮助我找出如何减少使用Python作为主要大数据分析语言的感知风险。

+2

这不是一个真正的编程问题,更多的是一个在线约会问题。显然有很多人使用H5和Python,因为h5py团队已经开发了多年。附: Python在科学中的使用正在突飞猛进地增长。 – 2011-02-02 09:44:48

+4

图书馆在开发过程中的时间量是否真的是我在询问的设置中的使用指标?清楚的是,我已经是一名Python粉丝,并将其用于商业分析工作以及一所大学的空气污染模拟。我在询问一个具体的用例:使用一种内存处理的语言来处理庞大的数据集,而不适合用map-reduce,传统上由SAS处理数十年。 – 2011-02-02 13:03:31

+0

不是一个笑话,但你有没有考虑过只使用硬件和足够的内存? – eat 2011-02-02 13:39:00

回答

49

我们使用Python与h5py,numpy/scipy和boost :: python一起进行数据分析。我们的典型数据集的大小高达几百GB。

HDF5优点:

  • 数据可以方便使用h5view应用,h5py/IPython中和H5 *命令行工具
  • API可用于不同的平台和语言使用组
  • 结构数据被检查
  • 使用属性注释数据
  • 无忧内置数据压缩
  • IO单数据集是快速

HDF5陷阱:

  • 性能发生故障,如果H5文件中包含了太多的数据集/组(> 1000),因为他们穿越是很慢的。另一方面,io对于一些大数据集来说很快。
  • 先进的数据查询(SQL等)是笨拙的实施和慢(考虑的SQLite在这种情况下)
  • HDF5是不是线程安全的在所有情况下:一是必须确保,该库是用正确的选项编译
  • 更改h5数据集(调整大小,删除等)炸毁的文件大小(在最好的情况下),或者是不可能的(在最坏情况下)(全H5文件必须复制到再次将其压平)
5

这是一个漫长的评论,不是答案到您有关h5py的实际问题。我不使用Python进行统计,并且倾向于处理相对较小的数据集,但是可能值得花一点时间检查R中的high-performance computing的CRAN任务视图,特别是“大内存和内存不足数据”部分。

理由三:

  • 你可以挖掘的任何这些包的源代码的想法,可以帮助你通常
  • 您可能会发现在搜索Python的等价物有用的包名;很多[R用户都是Python用户,也
  • 在某些情况下,它可能证明是方便的只是链接至R使用上述连接包中的一个特定的分析,然后得出结果返回到Python的

我再一次强调,这是我的联盟里的一切,当然你可能已经知道了所有这些。但是这也许对你或者有同样问题的人有用。

相关问题