Dalam analisis data, selalunya perlu untuk mengumpulkan data dan mengira kejadian nilai atau istilah tertentu. Pengagregatan jenis ini boleh dicapai dengan mudah menggunakan fungsi kumpulan mengikut dan saiz dalam Panda.
Masalah:
Andaikan anda mempunyai DataFrame df dengan lajur berikut: id, kumpulan, dan istilah. Matlamatnya adalah untuk mengira bilangan kejadian setiap istilah unik bagi setiap gabungan id dan kumpulan, tanpa menggunakan gelung.
Penyelesaian:
Untuk mencapai matlamat ini, kami boleh menggunakan langkah berikut:
DataFrame yang terhasil akan menyerupai reka letak ini:
Contoh Kod:
df = pd.DataFrame([ (1, 1, 'term1'), (1, 2, 'term2'), (1, 1, 'term1'), (1, 1, 'term2'), (2, 2, 'term3'), (2, 3, 'term1'), (2, 2, 'term1') ], columns=['id', 'group', 'term']) result = df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0) print(result)
Output:
term1 term2 term3 id group 1 1 2 1 2 2 2 1 3 1 0
Prestasi:
Untuk set data yang besar, operasi kumpulan mengikut saiz dan boleh jadi mahal dari segi pengiraan. Kod berikut menyediakan statistik masa untuk mengumpulkan dan mengira pada DataFrame dengan 1,000,000 baris:
df = pd.DataFrame(dict(id=np.random.choice(100, 1000000), group=np.random.choice(20, 1000000), term=np.random.choice(10, 1000000))) %timeit df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengumpulkan dan mengira kejadian istilah dengan cekap dalam Pandas DataFrames mengikut ID dan kumpulan tanpa menggunakan gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!