Speicherfehler beim Importieren großer SQL-Abfragen in Pandas DataFrames vermeiden
Die Arbeit mit riesigen SQL-Datenbanken stellt beim Abrufen großer Datensätze oft eine Herausforderung dar. Der Versuch, ganze Tabellen mit mehr als einer Million Zeilen direkt in einen Pandas DataFrame zu laden, kann leicht zu Speicherfehlern führen. Der folgende Code veranschaulicht dieses Problem:
<code class="language-python">import pandas.io.sql as psql sql = "SELECT TOP 2000000 * FROM MyTable" data = psql.read_frame(sql, cnxn)</code>
Diese Methode ist fehleranfällig und führt zu einem „MemoryError“, wenn der resultierende DataFrame den verfügbaren RAM überschreitet.
Pandas bietet seit Version 0.15 eine robuste Lösung: den Parameter chunksize
. Dadurch können Sie die SQL-Abfrage in kleineren, überschaubaren Teilen lesen und verarbeiten.
So implementieren Sie diese Lösung:
<code class="language-python">sql = "SELECT * FROM My_Table" for chunk in pd.read_sql_query(sql , engine, chunksize=5): print(chunk)</code>
Durch die Angabe von chunksize
ruft Pandas Daten in Inkrementen ab. Jeder Block wird einzeln verarbeitet, wodurch eine Speicherüberlastung verhindert wird. Das obige Beispiel gibt jeden Block aus; Sie können dies anpassen, um bei Bedarf andere Vorgänge für jeden Block auszuführen.
Diese Technik bietet eine praktische und speichereffiziente Möglichkeit, große SQL-Abfragen zu verarbeiten und gewährleistet eine reibungslose Datenverarbeitung auch bei umfangreichen Datensätzen.
Das obige ist der detaillierte Inhalt vonWie kann ich große SQL-Abfragen in Pandas DataFrames einlesen, ohne dass mir der Speicher ausgeht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!