將大型 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中文網其他相關文章!