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
Patricia Arquetteasal
2024-11-15 20:01:02986semak imbas

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)})

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:

  • 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!

Kenyataan:
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