将大型 SQL 查询导入 Pandas DataFrame 时避免内存错误
在检索大型数据集时,使用大型 SQL 数据库通常会带来挑战。 尝试将超过一百万行的整个表直接加载到 Pandas DataFrame 中很容易导致内存错误。 下面的代码说明了这个问题:
<code class="language-python">import pandas.io.sql as psql sql = "SELECT TOP 2000000 * FROM MyTable" data = psql.read_frame(sql, cnxn)</code>
此方法很容易失败,如果生成的 DataFrame 超出可用 RAM,则会导致“MemoryError”。
Pandas 从 0.15 版本开始,提供了一个强大的解决方案:chunksize
参数。这允许您以更小的、可管理的部分读取和处理 SQL 查询。
以下是实施此解决方案的方法:
<code class="language-python">sql = "SELECT * FROM My_Table" for chunk in pd.read_sql_query(sql , engine, chunksize=5): print(chunk)</code>
通过指定chunksize
,Pandas 会增量检索数据。 每个块都单独处理,防止内存过载。上面的例子打印每个块; 您可以根据需要调整它以对每个块执行其他操作。
该技术提供了一种实用且节省内存的方法来处理大型 SQL 查询,即使对于大量数据集也能确保数据处理顺利。
以上是如何在不耗尽内存的情况下将大型 SQL 查询读取到 Pandas DataFrame 中?的详细内容。更多信息请关注PHP中文网其他相关文章!