3

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

加载数据流(例如从 SQLite 数据库)有时可行,但并非在所有情况下都有效——如果我需要经常返回数据集,我宁愿支付加载数据的前期时间成本。

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

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

4

3 回答 3

3

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

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

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

于 2013-01-16T23:34:06.020 回答
0

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

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

于 2013-01-16T23:35:24.713 回答
0

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

于 2020-08-07T10:52:47.523 回答