Prestasi Panda Apply vs. NumPy Vectorize dalam Penciptaan Lajur
Pengenalan
Sementara Panda ' df.apply() ialah fungsi serba boleh untuk beroperasi pada bingkai data, prestasinya boleh menjadi kebimbangan, terutamanya untuk set data yang besar. np.vectorize() NumPy menawarkan alternatif yang berpotensi untuk mencipta lajur baharu sebagai fungsi lajur sedia ada. Artikel ini menyiasat perbezaan kelajuan antara kedua-dua kaedah, menerangkan sebab np.vectorize() secara amnya lebih pantas.
Perbandingan Prestasi
Penanda aras yang meluas mendedahkan bahawa np.vectorize( ) secara konsisten mengatasi prestasi df.apply() dengan margin yang ketara. Contohnya, dalam set data dengan 1 juta baris, np.vectorize() adalah 25 kali lebih pantas pada MacBook Pro 2016. Perbezaan ini menjadi lebih ketara apabila saiz set data bertambah.
Mekanisme Asas
df.apply() beroperasi melalui satu siri gelung peringkat Python, yang memperkenalkan ketara atas kepala. Setiap lelaran melibatkan mencipta objek Siri Pandas baharu, menggunakan fungsi dan menambahkan hasil pada lajur baharu. Sebaliknya, np.vectorize() menggunakan peraturan penyiaran NumPy untuk menilai fungsi pada tatasusunan. Pendekatan ini memintas overhed gelung Python dan memanfaatkan kod C yang dioptimumkan, menghasilkan perlaksanaan yang lebih pantas.
Penvektoran Benar
Untuk pengiraan vektor benar, kedua-duanya tidak df.apply () mahupun np.vectorize() adalah optimum. Sebaliknya, operasi NumPy asli menawarkan prestasi unggul. Vectorized divide(), sebagai contoh, menunjukkan kelebihan prestasi dramatik berbanding df.apply() atau np.vectorize().
JIT Compilation with Numba
Untuk kecekapan yang lebih besar, penghias @njit Numba boleh digunakan untuk menyusun fungsi divid() ke dalam kod peringkat C yang cekap. Pendekatan ini mengurangkan lagi masa pelaksanaan, menghasilkan keputusan dalam mikrosaat dan bukannya saat.
Kesimpulan
Walaupun df.apply() menyediakan antara muka yang mudah untuk menggunakan fungsi pada bingkai data, had prestasinya menjadi jelas dengan set data yang besar. Untuk aplikasi kritikal prestasi, np.vectorize() NumPy dan rakan sejawatannya yang disusun JIT dalam Numba menawarkan kelajuan yang lebih baik untuk mencipta lajur baharu. Perlu diingat juga bahawa operasi bervektor sebenar menggunakan fungsi NumPy asli ialah pilihan paling cekap untuk manipulasi data berskala besar.
Atas ialah kandungan terperinci Pandas Apply vs. NumPy Vectorize: Mana Yang Lebih Cepat untuk Mencipta Lajur Baharu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!