Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengira Kejadian Istilah dengan Cekap dalam Kumpulan dalam Pandas DataFrame?

Bagaimana untuk Mengira Kejadian Istilah dengan Cekap dalam Kumpulan dalam Pandas DataFrame?

Linda Hamilton
Linda Hamiltonasal
2024-12-12 17:11:14626semak imbas

How to Efficiently Count Term Occurrences within Groups in a Pandas DataFrame?

Mengumpulkan Mengikut Kiraan Penggal dalam Bingkai Data Pandas

Masalah:

Diberikan bingkai data dengan lajur berikut: id, kumpulan dan istilah. Matlamatnya adalah untuk menentukan bilangan kejadian setiap istilah dalam setiap gabungan unik id dan kumpulan.

Penyelesaian:

Untuk mengelak daripada menggunakan gelung, gunakan groupby dan fungsi saiz dalam Panda:

df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)

Fungsi kumpulan mengikut mengumpulkan bingkai data mengikut lajur yang ditentukan (id, kumpulan dan jangka), manakala fungsi saiz mengira kejadian setiap gabungan. Fungsi nyahtindan menghasilkan jadual yang lebih menarik secara visual dengan kiraan disusun dalam matriks.

Hasilnya ialah jadual dengan lajur berbilang indeks di mana dua peringkat pertama mewakili gabungan id dan kumpulan, dan tahap ketiga bersesuaian dengan istilah. Setiap sel dalam jadual menunjukkan bilangan kali istilah tertentu muncul untuk id dan kumpulan yang sepadan.

Masa:

Untuk set data yang besar (cth., 1,000,000 baris) , prestasinya sangat baik:

df = pd.DataFrame(dict(id=np.random.choice(100, 1000000),
                       group=np.random.choice(20, 1000000),
                       term=np.random.choice(10, 1000000)))

Menggunakan pendekatan yang disebutkan di atas, yang telah berlalu masa adalah lebih kurang 1 saat.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Kejadian Istilah dengan Cekap dalam Kumpulan dalam 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