Pertimbangan Prestasi untuk Menggantikan Nilai dalam Siri Panda dengan Kamus
Menggantikan nilai dalam siri Pandas dengan kamus telah menjadi kebimbangan berterusan dalam masyarakat. Walaupun kaedah yang disyorkan ialah s.replace(d) atau s.map(d), prestasi boleh berbeza-beza dengan ketara bergantung pada ciri set data.
Penanda Aras
Untuk menggambarkan perbezaan prestasi, mari kita pertimbangkan DataFrame df yang mengandungi integer rawak antara 0 dan 999.
import pandas as pd, numpy as np df = pd.DataFrame({'A': np.random.randint(0, 1000, 1000000)})
Kes Umum
Jika kita mencipta kamus d memetakan nilai kepada penggantinya (cth., d = {i: i 1 untuk i dalam julat (1000)}), kami perhatikan:
# Full-range dictionary %timeit df['A'].replace(d) # 1.98s %timeit df['A'].map(d) # 84.3ms # Partial-range dictionary d = {i: i+1 for i in range(10)} %timeit df['A'].replace(d) # 20.1ms %timeit df['A'].map(d).fillna(df['A']).astype(int) # 111ms
Kaedah Optimum Pemilihan
Berdasarkan penanda aras, terbukti bahawa s.map adalah unggul dalam kedua-dua senario:
Mengapa s.replace Lambat?
s.replace menjalankan operasi yang lebih meluas daripada s.peta. Ia melibatkan penukaran kamus kepada senarai, berulang melaluinya dan menyemak kamus bersarang sebelum melakukan penggantian.
Sebaliknya, s.map hanya menyemak sama ada hujah yang diberikan ialah kamus atau Siri dan menukarnya jika perlu. Ia secara cekap memetakan nilai berdasarkan indeks.
Pilihan Alternatif
Dalam kes tertentu di mana prestasi adalah penting:
Kesimpulan
Pilihan optimum untuk menggantikan nilai dalam siri Pandas dengan kamus bergantung pada faktor seperti saiz DataFrame, bilangan nilai unik dalam kamus dan kesempurnaan pemetaan. Dengan mempertimbangkan faktor-faktor ini dengan teliti, pembangun boleh memilih kaedah yang paling berkesan untuk situasi tertentu mereka.
Atas ialah kandungan terperinci Kaedah Pandas manakah yang Mengungguli Penggantian Nilai Berasaskan Kamus dalam Siri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!