【发布时间】:2017-11-02 12:27:03
【问题描述】:
我想使用 Python、psycopg2 和 Pandas 对将从 Postgres 数据库中提取的一些数据进行回测。
将从 Postgres 中提取的数据非常大(超过 10 Gbs)——我的系统将无法在 RAM 中保存这些数据,即使 Pandas 数据帧能够存储这么多数据。
作为概述,我希望我的 Python 程序需要执行以下操作:
1:连接到远程(基于 LAN)Postgres 数据库服务器
2:对数据库表运行基本选择查询
3:将查询结果存储在 Pandas 数据框中
4:对Pandas数据框内的数据进行计算操作
5:将这些操作的结果写回数据库中的现有表。
我预计将在第 2 步中返回的数据会非常大。
是否可以将大型查询的结果流式传输到 Pandas 数据帧,以便我的 Python 脚本可以处理更小块的数据,例如 1gb?
您可以指出的任何想法、建议或资源,关于如何最好地做到这一点,或者如果我没有以正确的方式处理这个问题,将不胜感激,我相信这对其他人会很有用前进。
谢谢。
【问题讨论】:
-
这取决于...你打算在 Pandas 中对这些数据进行什么样的操作?所有这些操作都可以与块一起使用吗?或者您是否需要将它们全部在 RAM 中处理(例如排序、分组等)?在这种情况下,您可以考虑使用 Dask DataFrame 甚至 Apache Spark(在集群模式下)
-
感谢您的评论 - 操作将计算移动平均线和其他类似的计算,所以这些可以在夹盘中完成......但我需要了解如何从数据库中获取数据块 -我希望我能找到查询和流式传输前 10000 行,对其进行处理,然后接收并处理接下来的 10000 行等等......我将查看 Dask DataFrame 和 Apache Spark - 感谢您提及它们!跨度>
标签: python postgresql pandas dataframe bigdata