Produk Cartesian Berprestasi (CROSS JOIN) dengan Panda
Pengenalan
Mengira produk Cartesian , juga dikenali sebagai CROSS JOIN, daripada dua atau lebih DataFrames boleh menjadi operasi penting dalam data analisis. Walau bagaimanapun, mencari kaedah yang paling berprestasi untuk mengira hasil ini boleh menjadi mencabar. Artikel ini akan meneroka pelbagai teknik dan menyediakan perbandingan prestasi untuk menentukan penyelesaian optimum.
Kaedah
1. Banyak-ke-Ramai SERTAI dengan Lajur "Kunci" Sementara:
Pendekatan yang paling mudah adalah untuk menetapkan lajur "kunci" sementara kepada kedua-dua DataFrames dengan nilai yang sama (mis., 1) dan melaksanakan banyak-ke-banyak SERTAI pada lajur "kunci" menggunakan gabungan. Walau bagaimanapun, kaedah ini mungkin mempunyai had prestasi untuk DataFrames yang besar.
2. Produk NumPy Cartesian:
NumPy menawarkan pelaksanaan produk Cartesian 1D yang cekap. Beberapa daripada pelaksanaan ini boleh digunakan untuk membina penyelesaian produk Cartesian yang berprestasi untuk DataFrames. Satu contoh yang ketara ialah pelaksanaan @senderle.
3. Produk Cartesian pada Indeks Bukan Campuran:
Kaedah ini digeneralisasikan untuk berfungsi pada DataFrames dengan sebarang jenis skalar dtype. Ia melibatkan pengiraan hasil Cartesian bagi indeks berangka DataFrames dan menggunakan ini untuk mengindeks semula DataFrames.
4. Penyederhanaan Selanjutnya untuk Dua DataFrames:
Apabila berurusan dengan hanya dua DataFrames, np.broadcast_arrays boleh digunakan untuk mencapai prestasi yang serupa dengan penyelesaian produk NumPy Cartesian.
Penilaian Prestasi
Tanda aras pada DataFrames sintetik dengan indeks unik menunjukkan bahawa menggunakan fungsi cartesian_product @senderle menghasilkan prestasi keseluruhan yang terbaik. Walau bagaimanapun, fungsi cartesian_product_simplified yang dipermudahkan menyediakan tahap prestasi yang hampir sama apabila bekerja dengan hanya dua DataFrames.
Kesimpulan
Kaedah optimum untuk mengira produk Cartesian DataFrames bergantung atas pelbagai faktor, termasuk saiz dan jenis data dan sama ada indeks mempunyai djenis bercampur atau unik. Berdasarkan penanda aras prestasi, menggunakan fungsi cartesian_product @senderle disyorkan untuk prestasi terbaik, terutamanya untuk DataFrames yang besar atau apabila bekerja dengan berbilang DataFrames. Untuk kes yang melibatkan hanya dua DataFrames dengan jenis skalar bukan campuran, fungsi cartesian_product_simplified yang dipermudahkan memberikan prestasi cemerlang.
Atas ialah kandungan terperinci Apakah Cara Terpantas untuk Melakukan Produk Cartesian (CROSS JOIN) dengan Pandas DataFrames?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!