在学习大熊猫的过程中,我试图解决这个问题的答案已有好几个月了.我使用SAS进行日常工作,这非常适合它的核心支持.然而,由于其他许多原因,SAS作为一款软件非常糟糕.
有一天,我希望用python和pandas替换我对SAS的使用,但我目前缺乏大型数据集的核心工作流程.我不是在谈论需要分布式网络的"大数据",而是说文件太大而无法容纳在内存中,但又足够小以适应硬盘驱动器.
我的第一个想法是用于HDFStore在磁盘上保存大型数据集,并仅将我需要的部分拉入数据帧进行分析.其他人提到MongoDB是一种更容易使用的替代品.我的问题是:
有哪些最佳实践工作流程可用于完成以下任务:
真实世界的例子将非常受欢迎,尤其是那些在"大数据"上使用熊猫的人.
编辑 - 我希望如何工作的示例:
我正在尝试找到执行这些步骤的最佳实践方法.阅读关于pandas和pytables的链接似乎附加一个新列可能是个问题.
编辑 - 特别回应杰夫的问题:
if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'.这些操作的结果是我的数据集中每条记录的新列.我很少会在数据集中添加行.我几乎总是会创建新的列(统计/机器学习用语中的变量或特征).
我试图ptrepack一个用pandas HDFStore pytables接口创建的HDF文件.数据帧的主要索引是时间,但我做了一些列,data_columns以便我可以通过这些data_columns过滤磁盘上的数据.
现在我想通过其中一个列对HDF文件进行排序(因为选择对我来说太慢了,84 GB文件),使用带有如下sortby选项的ptrepack :
()[maye@luna4 .../nominal]$ ptrepack --chunkshape=auto --propindexes --complevel=9 --complib=blosc --sortby=clat C9.h5 C9_sorted.h5
Run Code Online (Sandbox Code Playgroud)
我收到错误信息:
()[maye @ luna4 .../nominal] $从'C9.h5:/'复制到'C9_sorted.h5:'的问题错误是 - >:字段
clat必须关联一个'完整'索引桌子/df/table (Table(390557601,)) ''.目标文件如下所示:C9_sorted.h5(File)''Last modif.:'Fri Jul 26 18:17:56 2013'Object Tree:/(RootGroup)''/ df(Group)''/ df/table(表(0,),shuffle,blosc(9))''回溯(最近一次调用最后一次):在sys.exit(main())文件"/usr/local/epd/lib/python2.7/site -packages/tables/scripts/ptrepack.py",第480行,主要升级flavors = upgradeflavors)文件"/usr/local/epd/lib/python2.7/site-packages/tables/scripts/ptrepack.py",行225,在copyChildren引发RuntimeError("请检查节点名称是不是"RuntimeError:请检查节点名称是否在目标中没有重复,如果是,请添加--overwrite-nodes标志,如果需要.特别是支付注意rootUEP并不是在欺骗你.
这是否意味着,我无法通过索引列对HDF文件进行排序,因为它们不是"完整"索引?