Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Mengoptimumkan Penggabungan DataFrame dengan Kekangan Tarikh Menggunakan SQL?

Bagaimanakah Saya Boleh Mengoptimumkan Penggabungan DataFrame dengan Kekangan Tarikh Menggunakan SQL?

Susan Sarandon
Susan Sarandonasal
2024-10-31 11:13:021006semak imbas

How Can I Optimize DataFrame Merging with Date Constraints Using SQL?

Menggabungkan Bingkai Data dengan Kekangan Tarikh

Pengenalan:

Menggabungkan bingkai data berdasarkan syarat gabungan dan kekangan tarikh boleh menjadi tugas biasa dalam analisis data. Walaupun panda menyediakan pelbagai pilihan penggabungan, mengoptimumkan prestasi dengan menapis semasa proses penggabungan boleh berfaedah untuk mengelakkan pengendalian bingkai data perantaraan yang besar. Artikel ini membincangkan pendekatan alternatif menggunakan SQL untuk mencapai kecekapan ini.

Penggabungan dengan Penapisan:

Coretan kod yang disediakan menunjukkan penggabungan dua bingkai data A dan B menggunakan pd. fungsi merge() dan kemudiannya menapis keputusan berdasarkan keadaan tarikh. Walau bagaimanapun, pendekatan ini boleh menjadi suboptimum apabila bekerja dengan bingkai data yang besar disebabkan oleh bingkai data perantaraan yang dibuat sebelum penapisan.

SQL sebagai Alternatif:

SQL menyediakan cara yang lebih cekap untuk melaksanakan gabungan ini dengan penapisan dalam pertanyaan itu sendiri. Dengan menyambung ke pangkalan data dalam memori, kami boleh menulis pertanyaan yang melaksanakan penapisan sertaan dan tarikh dalam satu langkah.

Contoh Kod:

Kod berikut menunjukkan pendekatan SQL:

<code class="python">import pandas as pd
import sqlite3

# Connect to in-memory database
conn = sqlite3.connect(':memory:')

# Write dataframes to tables
terms.to_sql('terms', conn, index=False)
presidents.to_sql('presidents', conn, index=False)
war_declarations.to_sql('wars', conn, index=False)

# SQL query
qry = '''
    select  
        start_date PresTermStart,
        end_date PresTermEnd,
        wars.date WarStart,
        presidents.name Pres
    from
        terms join wars on
        date between start_date and end_date join presidents on
        terms.president_id = presidents.president_id
    '''

# Read SQL query results into dataframe
df = pd.read_sql_query(qry, conn)</code>

Keputusan:

Dfframe data yang terhasil mengandungi baris di mana tarikh dalam A sepadan dengan keadaan tarikh dalam B. Dalam contoh khusus ini , ia mengembalikan presiden dan terma semasa dua peperangan diisytiharkan.

Kelebihan:

Pendekatan ini menawarkan kelebihan berikut:

  • Kecekapan: Melaksanakan gabungan dan penapisan dalam satu pertanyaan, menghapuskan keperluan untuk kerangka data perantaraan.
  • Fleksibiliti: Membenarkan keadaan penapisan yang lebih kompleks dalam pertanyaan SQL .
  • Tiada Bingkai Data Perantaraan: Mengelakkan menyimpan bingkai data perantaraan yang berpotensi besar sebelum menapis.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Penggabungan DataFrame dengan Kekangan Tarikh Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn