Pandas et grandes requêtes SQL : une approche efficace en mémoire
Le traitement de requêtes SQL dépassant 5 millions d'enregistrements à l'aide de pandas.io.sql.read_frame()
peut entraîner des erreurs de mémoire. Cependant, Pandas offre une solution robuste pour gérer des ensembles de données aussi volumineux : les traiter en morceaux plus petits et gérables.
Depuis la version 0.15 de pandas, la fonction read_sql_query()
intègre un paramètre chunksize
. Cela vous permet de récupérer les résultats des requêtes de manière itérative, réduisant ainsi considérablement la consommation de mémoire. Vous spécifiez le nombre souhaité d'enregistrements par bloc, décomposant ainsi la requête volumineuse en éléments plus petits et plus faciles à gérer.
Par exemple, pour traiter une requête par blocs de 5 000 enregistrements :
<code class="language-python">sql = "SELECT * FROM MyTable" for chunk in pd.read_sql_query(sql, engine, chunksize=5000): # Process each chunk here (e.g., calculations, analysis, etc.) print(chunk) </code>
Cette approche itérative évite de charger simultanément l’intégralité de l’ensemble de données en mémoire. Chaque morceau est traité indépendamment, minimisant l'empreinte mémoire et permettant une manipulation efficace des données dans les DataFrames pandas, même avec des ensembles de données extrêmement volumineux. Le paramètre chunksize
est essentiel pour gérer efficacement les requêtes SQL importantes et éviter l'épuisement de la mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!