2013-01-16 41 views
3

我做数据挖掘的研究,经常有从SQLite数据库,CSV文件,咸菜文件等加载大型数据集在发展过程中,常常需要改变我的脚本的Python脚本,我发现自己在等待20到30秒的等待为数据加载。如何在Python中快速加载大型数据集?

加载数据流(例如来自SQLite数据库)有时可以工作,但不是在所有情况下 - 如果我经常需要返回数据集,我宁愿支付加载数据的前期时间成本。

我最好的解决方案至今被欠采样数据,直到我很高兴我最终脚本。有没有人有更好的解决方案/设计实践?

我的“理想”的解决方案将涉及使用Python调试器(PDB)巧妙地使数据保持在内存中加载,我可以编辑我的脚本,然后从给定的点恢复。要做到这一点

+0

您可以使用RAM驱动器(和复制数据库文件存在),或者是数据量望而却步? – nvlass

回答

3

的一种方法是,让您的加载和处理脚本在单独的文件X和Y,并有X.py阅读

import Y 
data = Y.load() 
.... your code .... 

当你编码X.py,你从文件中省略此部分,在交互式shell中手动运行它。然后,您可以修改X.py并在shell中执行import X以测试您的代码。

+0

谢谢!但是如果我的'X.py'在'if __name ___ =='__ main':'中有代码,那么我该如何让'X.py'中的代码“看见”变量'data'? – williampli

+0

它应该仍然能够看到变量,除非您调用其他函数,在这种情况下,您也会将数据传递给这些函数 – dfb

+0

谢谢。我做你上面描述的,然后运行'execfile('X.py')',它工作。 – williampli

0

写,做了选择,对象关系的转换脚本,然后将数据咸菜本地文件。 您的开发脚本将首先取消数据并继续。

如果数据不是物理RAM显著较小,则可以存储映射两个进程之间共享的文件,并且酸洗数据写入存储器。