如何在Python中快速加载大型数据集?

时间:2013-01-16 23:21:31

标签: python performance data-mining pdb large-data

我进行数据挖掘研究,并且经常使用Python脚本从SQLite数据库,CSV文件,pickle文件等加载大型数据集。在开发过程中,我的脚本经常需要更改,我发现自己等待20到30秒等待数据加载。

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

到目前为止,我最好的解决方案是对数据进行二次采样,直到我对我的最终脚本感到满意为止。有没有人有更好的解决方案/设计实践?

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

3 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是将加载和操作脚本保存在单独的文件X和Y中,并使X.py读取

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

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

答案 1 :(得分:0)

编写一个脚本来执行选择,对象关系转换,然后将数据pickle到本地文件。 您的开发脚本将首先取消数据并继续进行。

如果数据明显小于物理RAM,则可以对两个进程之间共享的文件进行内存映射,并将pickle数据写入内存。

答案 2 :(得分:0)

Jupyter笔记本允许您将大型数据集加载到内存驻留数据结构中,例如一个单元中的Pandas数据帧。然后,您可以在后续单元中对该数据结构进行操作,而不必重新加载数据。