Rumah > pembangunan bahagian belakang > Tutorial Python > Pandas Apply vs. NumPy Vectorize: Mana Yang Lebih Cepat untuk Mencipta Lajur Baharu?

Pandas Apply vs. NumPy Vectorize: Mana Yang Lebih Cepat untuk Mencipta Lajur Baharu?

Linda Hamilton
Lepaskan: 2024-10-27 08:28:31
asal
509 orang telah melayarinya

  Pandas Apply vs. NumPy Vectorize: Which is Faster for Creating New Columns?

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan