Penciptaan Bingkai Data Panda daripada Pertanyaan SQL Besar: Strategi Pengurusan Memori
Memproses jadual SQL besar-besaran selalunya membawa kepada ralat ingatan semasa mencipta Pandas DataFrames. Artikel ini meneroka kaedah berkesan untuk mengendalikan set data yang besar, mencegah keletihan memori sambil mengekalkan integriti data.
Memanfaatkan Parameter chunksize
Panda
Panda (versi 0.15 dan lebih baru) menawarkan penyelesaian yang mantap: parameter chunksize
dalam fungsi read_sql
. Ini membolehkan pengambilan dan pemprosesan data tambahan, mengelakkan beban memori yang berlebihan.
Begini cara menggunakannya:
<code class="language-python">sql = "SELECT * FROM My_Table" for chunk in pd.read_sql_query(sql, engine, chunksize=5): # Process each chunk (e.g., append to a list, perform calculations, etc.) print(chunk) </code>
Kod ini mengambil data dalam kenaikan 5 baris. Gantikan 5
dengan saiz bongkah yang sesuai berdasarkan kapasiti memori sistem anda. Setiap chunk
ialah DataFrame, membolehkan pemprosesan dalam bahagian yang boleh diurus.
Pendekatan Alternatif
Walaupun chunksize
selalunya mencukupi, teknik lain menawarkan lebih kawalan:
API Pangkalan Data: Interaksi langsung dengan API pangkalan data (cth., psycopg2 untuk PostgreSQL) menyediakan kawalan terperinci ke atas pengambilan data, membolehkan anda mengambil julat data tertentu menggunakan teknik penomboran.
Penjana: Penjana menghasilkan data baris demi baris, dengan ketara mengurangkan jejak memori. Ini amat berguna untuk meja yang sangat besar di mana chunksize
mungkin terbukti tidak mencukupi.
Interaksi Pangkalan Data Peringkat Rendah: Untuk kawalan dan pengoptimuman muktamad, manfaatkan ciri pangkalan data peringkat rendah untuk mencipta mekanisme pengambilan data tersuai yang disesuaikan dengan keperluan khusus anda dan sistem pangkalan data.
Pendekatan optimum bergantung pada faktor seperti spesifikasi projek, permintaan prestasi dan kebiasaan pembangun. Penilaian yang teliti terhadap kekuatan dan batasan setiap kaedah adalah penting untuk memilih penyelesaian yang paling cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Pertanyaan SQL Besar dengan Cekap untuk Mengelakkan Ralat Memori Semasa Mencipta Pandas DataFrames?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!