Statistik · Pelajaran 5 dari 9

Mengelompokkan dan meringkas

9 menit baca · BelajarCode

Pertanyaan analisis sering berbentuk "per kelompok": rata-rata nilai per kelas, total penjualan per produk, jumlah siswa per jenis kelamin. Polanya selalu sama: kelompokkan, lalu ringkas.

Kelompokkan dengan dictionary berisi list

Python
1penjualan = [2    ("Senin", "Kopi", 12), ("Senin", "Teh", 8), ("Selasa", "Kopi", 15),3    ("Selasa", "Roti", 6), ("Rabu", "Kopi", 9), ("Rabu", "Teh", 11),4    ("Rabu", "Roti", 4),5]67per_produk = {}8for hari, produk, jumlah in penjualan:9    per_produk.setdefault(produk, []).append(jumlah)1011print(f"{'Produk':<6} {'Total':>5} {'Rata':>5} {'Hari':>4}")12for produk, daftar in sorted(per_produk.items(), key=lambda p: sum(p[1]), reverse=True):13    print(f"{produk:<6} {sum(daftar):>5} {sum(daftar) / len(daftar):>5.1f} {len(daftar):>4}")
Keluaran
Produk Total  Rata Hari
Kopi      36  12.0    3
Teh       19   9.5    2
Roti      10   5.0    2

Tabel silang

Tabel silang (pivot table) meringkas data menurut dua kelompok sekaligus, misalnya hari dan produk.

Python
1penjualan = [2    ("Senin", "Kopi", 12), ("Senin", "Teh", 8), ("Selasa", "Kopi", 15),3    ("Selasa", "Roti", 6), ("Rabu", "Kopi", 9), ("Rabu", "Teh", 11),4    ("Rabu", "Roti", 4),5]6hari_list = ["Senin", "Selasa", "Rabu"]7produk_list = ["Kopi", "Teh", "Roti"]89silang = {}10for hari, produk, jumlah in penjualan:11    silang[(hari, produk)] = silang.get((hari, produk), 0) + jumlah1213print(f"{'':<7}" + "".join(f"{p:>6}" for p in produk_list) + f"{'Total':>7}")14for hari in hari_list:15    isi = [silang.get((hari, p), 0) for p in produk_list]16    print(f"{hari:<7}" + "".join(f"{x:>6}" for x in isi) + f"{sum(isi):>7}")
Keluaran
         Kopi   Teh  Roti  Total
Senin      12     8     0     20
Selasa     15     0     6     21
Rabu        9    11     4     24

Kunci dictionary berupa tuple (hari, produk) sehingga setiap sel tabel punya tempatnya sendiri.

Pustaka pandas

Analis data profesional biasanya memakai pustaka pandas, yang punya perintah groupby dan pivot_table untuk pekerjaan seperti ini. Memahami cara kerjanya dengan dictionary seperti di atas membuatmu lebih mudah memahami pandas nanti.

Cek pemahaman

Kamu punya data transaksi berisi kolom kota dan nilai belanja. Untuk mencari rata-rata belanja per kota, apa langkah pertamanya?

Latihan

Rata-rata per kelas

Dari data berikut, hitung banyak siswa, rata-rata, dan nilai tertinggi untuk setiap kelas.

[("XI-1", 80), ("XI-2", 92), ("XI-1", 70), ("XI-2", 65), ("XI-3", 88), ("XI-1", 85)]

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi