Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Cekap Mencari Nilai Paling Biasa dalam Kumpulan Pandas DataFrame?

Bagaimana untuk Cekap Mencari Nilai Paling Biasa dalam Kumpulan Pandas DataFrame?

Linda Hamilton
Linda Hamiltonasal
2024-11-29 11:32:15336semak imbas

How to Efficiently Find the Most Common Value in a Pandas DataFrame Group?

GroupBy panda DataFrame dan Pilih Nilai Paling Sama

Masalah


>

< Katakan anda mempunyai bingkai data dengan berbilang rentetan lajur. Setiap gabungan dua lajur pertama hendaklah hanya mempunyai satu nilai yang sah dalam lajur ketiga. Anda perlu membersihkan data secara konsisten dengan mengumpulkan bingkai data dengan dua lajur pertama dan memilih nilai paling biasa lajur ketiga untuk setiap gabungan.


Kod berikut menunjukkan percubaan untuk mencapai ini:


import panda sebagai pd

dari import scipy statistik

sumber = pd.DataFrame({
'Country': ['USA', 'USA', 'Russia', 'USA'], 
'City': ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'],
'Short name': ['NY', 'New', 'Spb', 'NY']})


source.groupby(['Negara','Bandar']).agg(lambda x: stats.mode(x[' pendek name'])[0])

Walau bagaimanapun, baris terakhir kod gagal dengan KeyError. Bagaimana anda boleh membetulkannya isu?


Penyelesaian


Panda >= 0.16


<.1s>0. dan kemudian, gunakan yang berikut kod:


source.groupby(['Negara','Bandar'])['Nama pendek'].agg(pd.Siri.mod)

Kod ini menggunakan fungsi pd.Series.mode, yang diperkenalkan dalam Pandas 0.16, untuk mencari nilai paling biasa dalam setiap kumpulan.


Alternatif untuk menangani Mod Berbilang


Fungsi mod Siri. kes dengan pelbagai mod dengan berkesan:



  • Jika terdapat berbilang mod, ia mengembalikan Siri mengandungi semua mod.

  • Jika anda memerlukan baris berasingan untuk setiap mod, gunakan GroupBy.apply(pd.Series.mode).< /li>
  • Jika anda memerlukan mana-mana satu mod, gunakan GroupBy.agg(lambda x: pd.Series.mode(x)[0]).


< h4>Alternatif kepada Pertimbangkan

Walaupun anda boleh menggunakan mod statistics. daripada Python, ia tidak mengendalikan berbilang mod dengan baik dan mungkin menimbulkan StatisticsError. Oleh itu, ia tidak disyorkan.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Nilai Paling Biasa dalam Kumpulan Pandas DataFrame?. 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