Mengapa np.vectorize() Lebih cepat daripada df.apply() untuk Penciptaan Lajur Pandas?

Susan Sarandon
Lepaskan: 2024-10-27 04:34:30
asal
846 orang telah melayarinya

  Why is np.vectorize() Faster than df.apply() for Pandas Column Creation?

Perbandingan Prestasi Panda diguna pakai vs np.vectorize

Telah diperhatikan bahawa np.vectorize() boleh jauh lebih cepat daripada df. apply() apabila mencipta lajur baharu berdasarkan lajur sedia ada dalam Pandas DataFrame. Perbezaan prestasi yang diperhatikan berpunca daripada mekanisme asas yang digunakan oleh kedua-dua kaedah ini.

df.apply() vs Python-Level Loops

df.apply() pada asasnya mencipta gelung peringkat Python yang berulang pada setiap baris DataFrame. Seperti yang ditunjukkan dalam penanda aras yang disediakan, gelung peringkat Python seperti pemahaman senarai dan peta semuanya agak perlahan berbanding dengan pengiraan vektor sebenar.

np.vectorize() vs df.apply()

np.vectorize() menukar fungsi yang ditentukan pengguna kepada fungsi universal (ufunc). Ufuncs sangat dioptimumkan dan boleh melakukan operasi mengikut elemen pada tatasusunan NumPy, memanfaatkan kod berasaskan C dan algoritma yang dioptimumkan. Ini berbeza dengan df.apply(), yang beroperasi pada objek Siri Pandas dan menimbulkan overhed tambahan.

Vektorisasi Benar: Prestasi Optimum

Untuk penciptaan lajur yang benar-benar cekap , pengiraan vektor dalam NumPy amat disyorkan. Operasi seperti numpy.where dan pembahagian langsung mengikut unsur dengan df["A"] / df["B"] adalah sangat pantas dan mengelakkan overhed yang dikaitkan dengan gelung.

Pengoptimuman Numba

Untuk kecekapan yang lebih besar, adalah mungkin untuk mengoptimumkan lagi gelung menggunakan Numba, pengkompil yang menterjemahkan fungsi Python kepada kod C yang dioptimumkan. Numba boleh mengurangkan masa pelaksanaan kepada mikrosaat, dengan ketara mengatasi prestasi kedua-dua df.apply() dan np.vectorize().

Kesimpulan

Sementara np.vectorize() mungkin menawarkan sedikit penambahbaikan berbanding df.apply(), ia bukan pengganti sebenar untuk pengiraan vektor dalam NumPy. Untuk mencapai prestasi maksimum, gunakan pengoptimuman Numba atau operasi vektor langsung dalam NumPy untuk penciptaan lajur baharu dalam Pandas DataFrames.

Atas ialah kandungan terperinci Mengapa np.vectorize() Lebih cepat daripada df.apply() untuk Penciptaan Lajur Pandas?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!