Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah Menggunakan Kamus untuk Menggantikan Nilai dalam Siri Panda Lambat, dan Bagaimana Anda Boleh Meningkatkan Prestasi?

Mengapakah Menggunakan Kamus untuk Menggantikan Nilai dalam Siri Panda Lambat, dan Bagaimana Anda Boleh Meningkatkan Prestasi?

Susan Sarandon
Lepaskan: 2024-11-13 05:46:02
asal
707 orang telah melayarinya

Why is Using Dictionaries to Replace Values in Pandas Series Slow, and How Can You Improve Performance?

Meningkatkan Prestasi Penggantian Nilai dalam Siri Pandas Menggunakan Kamus

Menggantikan nilai dalam siri Pandas menggunakan kamus adalah tugas biasa. Walaupun menggantikan nilai menggunakan s.replace(d) disyorkan, ia boleh menjadi lebih perlahan daripada menggunakan pemahaman senarai yang mudah.

Punca Prestasi Lambat

Prestasi yang perlahan daripada s.replace(d) berpunca daripada pengendalian kes tepi dan situasi yang jarang berlaku. Ia melibatkan:

  • Menukar kamus kepada senarai.
  • Membalas senarai dan menyemak kamus bersarang.
  • Memberi suap kepada pengulang kunci dan nilai ke dalam ganti fungsi.

Kaedah Alternatif

Untuk meningkatkan prestasi, pertimbangkan untuk menggunakan kaedah berikut:

  • Peta Penuh : Gunakan s.map(d) jika semua nilai dalam siri dipetakan oleh kamus. Kaedah ini cekap dan lebih pantas secara konsisten.
  • Peta Separa: Jika hanya sebahagian kecil (cth., kurang daripada 5%) nilai dipetakan oleh kamus, gunakan s.map(d ).fillna(s['A']).astype(int). Pendekatan ini menggabungkan pemetaan dengan pengisian, mengelakkan keperluan untuk lelaran yang mahal.

Penanda Aras

Tanda aras menunjukkan perbezaan prestasi antara s.replace(d), s .map(d) dan pemahaman senarai:

##### Full Map #####

d = {i: i+1 for i in range(1000)}

%timeit df['A'].replace(d)                          # Slow (1.98s)
%timeit df['A'].map(d)                              # Fast (84.3ms)

##### Partial Map #####

d = {i: i+1 for i in range(10)}

%timeit df['A'].replace(d)                          # Intermediate (20.1ms)
%timeit df['A'].map(d).fillna(df['A']).astype(int)  # Faster (111ms)
Salin selepas log masuk

Ini mendedahkan bahawa s.map(d) secara konsisten lebih pantas daripada s.replace(d) untuk pemetaan penuh atau separa.

Kesimpulan

Bergantung pada kesempurnaan liputan kamus, s.map(d) atau s.map(d).fillna(s['A']).astype(int) harus diutamakan daripada s.replace(d) untuk penggantian nilai yang cekap dalam siri Pandas.

Atas ialah kandungan terperinci Mengapakah Menggunakan Kamus untuk Menggantikan Nilai dalam Siri Panda Lambat, dan Bagaimana Anda Boleh Meningkatkan Prestasi?. 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