Rumah > pembangunan bahagian belakang > Tutorial Python > Kaedah Pandas manakah yang Mengungguli Penggantian Nilai Berasaskan Kamus dalam Siri?

Kaedah Pandas manakah yang Mengungguli Penggantian Nilai Berasaskan Kamus dalam Siri?

Patricia Arquette
Lepaskan: 2024-11-15 20:01:02
asal
980 orang telah melayarinya

Which Pandas Method Outperforms for Dictionary-Based Value Replacement in Series?

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)})
Salin selepas log masuk

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
Salin selepas log masuk

Kaedah Optimum Pemilihan

Berdasarkan penanda aras, terbukti bahawa s.map adalah unggul dalam kedua-dua senario:

  • Peta Penuh: Gunakan s.map(d ) untuk liputan lengkap.
  • Peta Separa (cth., < 5% nilai): Gunakan s.map(d).fillna(s['A']).astype(int) untuk mengisi sebarang nilai yang tiada.

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:

  • Pemahaman Senarai: Melakukan operasi gantian menggunakan pemahaman senarai mungkin lebih pantas sedikit daripada s.map.
  • s.apply(pd.to_numeric): Kaedah ini boleh meningkatkan prestasi dengan ketara apabila menggantikan nilai dengan data yang tiada atau bukan angka.

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!

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