Python pandas groupby agregat pada beberapa kolom, lalu pivot
Dalam Python, saya memiliki DataFrame pandas yang mirip dengan berikut ini:
Item | shop1 | shop2 | shop3 | Category
------------------------------------
Shoes| 45 | 50 | 53 | Clothes
TV | 200 | 300 | 250 | Technology
Book | 20 | 17 | 21 | Books
phone| 300 | 350 | 400 | Technology
Di mana shop1, shop2 dan shop3 adalah biaya setiap item di toko yang berbeda. Sekarang, saya perlu mengembalikan DataFrame, setelah beberapa pembersihan data, seperti ini:
Category (index)| size| sum| mean | std
----------------------------------------
di mana ukuran adalah jumlah item di setiap Kategori dan jumlah, rata-rata dan std terkait dengan fungsi yang sama yang diterapkan pada 3 toko. Bagaimana saya bisa melakukan operasi ini dengan pola split-apply-combine (groupby, aggregate, apply,...) ?
Dapatkah seseorang membantu saya? Saya akan gila dengan yang satu ini...terima kasih!
23
3
Diedit untuk Pandas 0.22+ dengan mempertimbangkan tidak digunakannya lagi penggunaan kamus dalam grup dengan agregasi.
Kami menyiapkan kamus yang sangat mirip di mana kami menggunakan kunci kamus untuk menentukan fungsi kami dan kamus itu sendiri untuk mengganti nama kolom.
opsi 1 gunakan
agg
← tautan ke dokumenpilihan 2 lebih banyak untuk lebih sedikit pakai
describe
← tautan ke dokumenAtau jika Anda menginginkannya di semua toko:
Jika saya mengerti dengan benar, Anda ingin menghitung metrik agregat untuk semua toko, bukan untuk masing-masing toko secara individual. Untuk melakukan itu, pertama-tama Anda dapat
stack
dataframe Anda dan kemudian mengelompokkan berdasarkanKategori
:Yang menghasilkan