Pertanyaan analisis adalah jembatan antara masalah bisnis dan pekerjaan teknis. Pada bagian ini kita menerjemahkan keluhan-keluhan Bu Rina — “sepertinya kopi susu paling laku” atau “Sabtu itu memang ramai” — menjadi pertanyaan yang bisa dijawab langsung oleh data penjualannya. Teknik menerjemahkan bahasa bisnis menjadi pertanyaan data sudah kita bahas pada chapter Merumuskan Pertanyaan Analisis ; sekarang kita praktikkan penuh untuk kasus Toko Kopi Kita.
Dari Keluhan ke Pertanyaan Terukur #
Keluhan mentah tidak bisa langsung dihitung. “Sepertinya kopi susu paling laku” mengandung klaim yang bisa diuji, tetapi kata “laku” perlu didefinisikan: laku dalam gelas terjual, atau laku dalam rupiah yang masuk? Keduanya bisa berbeda untuk menu dengan harga berbeda. Karena itu tiap keluhan kita olah melalui tiga saringan:
- Terukur — jawabannya berupa angka yang bisa dihitung dari kolom data (
gelas,pendapatan_ribu,tanggal,menu). - Terikat keputusan — jawabannya mengubah tindakan nyata: belanja bahan, jadwal pegawai, atau strategi hari sepi.
- Seukuran data — 12 hari data cukup untuk menghitung total dan rata-rata, tetapi tidak cukup untuk menyimpulkan musiman setahun.
Hasil saringannya adalah lima pertanyaan analisis, masing-masing dengan metrik pendukung dan keputusan bisnis yang menunggu jawabannya:
| Pertanyaan analisis | Data pendukung | Metrik yang dihitung |
|---|---|---|
| P1: Menu mana penopang pendapatan terbesar dan berapa kontribusinya? | menu, pendapatan_ribu | total pendapatan per menu + persen kontribusi |
| P2: Hari apa yang paling ramai dan hari apa yang paling sepi? | tanggal, pendapatan_ribu | total pendapatan per hari (maksimum/minimum) |
| P3: Seberapa jauh akhir pekan lebih ramai daripada hari kerja? | tanggal, pendapatan_ribu | rata-rata pendapatan akhir pekan vs hari kerja |
| P4: Adakah hari dengan penurunan tajam di luar pola normal? | tanggal, pendapatan_ribu | selisih persen tiap hari terhadap rata-rata |
| P5: Berapa gelas terjual tiap menu untuk dasar rencana stok? | menu, gelas | total gelas per menu + rata-rata harian |
Perhatikan bahwa keempat kolom data kita terpakai habis; tidak ada pertanyaan yang menuntut data yang tidak dimiliki.
Membuat Daftar Pertanyaan dalam Kode #
Daftar pertanyaan ini akan dirujuk berulang kali — pada Bagian 7 tiap pertanyaan harus dijawab, dan pada Bagian 9 laporan disusun per temuan. Supaya tidak ada yang tertinggal, kita simpan sebagai DataFrame dan cetak dalam bentuk yang mudah dibaca:
import pandas as pd
pertanyaan = pd.DataFrame({
"kode": ["P1", "P2", "P3", "P4", "P5"],
"pertanyaan": [
"Menu mana penopang pendapatan terbesar dan berapa kontribusinya?",
"Hari apa yang paling ramai dan hari apa yang paling sepi?",
"Seberapa jauh akhir pekan lebih ramai daripada hari kerja?",
"Adakah hari dengan penurunan tajam di luar pola normal?",
"Berapa gelas terjual tiap menu untuk dasar rencana stok?",
],
"metrik": [
"total pendapatan per menu + persen kontribusi",
"total pendapatan per hari (nilai maksimum dan minimum)",
"rata-rata pendapatan akhir pekan vs hari kerja",
"selisih persen tiap hari terhadap rata-rata harian",
"total gelas terjual per menu",
],
"keputusan": [
"prioritas belanja bahan baku",
"penjadwalan pegawai harian",
"penyesuaian stok jelang akhir pekan",
"strategi menjaga penjualan saat cuaca buruk",
"kontrak belanja mingguan dengan pemasok",
],
})
for tanya in pertanyaan.itertuples():
print(f"{tanya.kode}: {tanya.pertanyaan}")
print(f" metrik : {tanya.metrik}")
print(f" keputusan: {tanya.keputusan}")Output yang Dihasilkan:
P1: Menu mana penopang pendapatan terbesar dan berapa kontribusinya?
metrik : total pendapatan per menu + persen kontribusi
keputusan: prioritas belanja bahan baku
P2: Hari apa yang paling ramai dan hari apa yang paling sepi?
metrik : total pendapatan per hari (nilai maksimum dan minimum)
keputusan: penjadwalan pegawai harian
P3: Seberapa jauh akhir pekan lebih ramai daripada hari kerja?
metrik : rata-rata pendapatan akhir pekan vs hari kerja
keputusan: penyesuaian stok jelang akhir pekan
P4: Adakah hari dengan penurunan tajam di luar pola normal?
metrik : selisih persen tiap hari terhadap rata-rata harian
keputusan: strategi menjaga penjualan saat cuaca buruk
P5: Berapa gelas terjual tiap menu untuk dasar rencana stok?
metrik : total gelas terjual per menu
keputusan: kontrak belanja mingguan dengan pemasokMari kita bedah kode di atas:
- DataFrame tiga kolom:
kode,pertanyaan,metrik, dankeputusandisimpan sejajar dalam satu tabel. Satu baris mewakili satu paket lengkap: tanya apa, ukur dengan apa, dan untuk keputusan apa. itertuples(): mengiterasi baris DataFrame sebagai named tuple sehingga tiap kolom bisa dipanggil dengan nama (tanya.kode), lebih ringkas dibanding mengakses.ilocberulang.- Cetak vertikal: tabel lebar dengan empat kolom teks akan sulit dibaca di terminal, jadi tiap pertanyaan dicetak sebagai satu blok kecil tiga baris. Format ini juga memudahkan Bu Rina membacanya tanpa perlu tabel.
Pertanyaan yang Sengaja Tidak Ditanyakan #
Ada satu keluhan Bu Rina yang tidak masuk daftar: “Sepertinya perlu menambah menu baru, tetapi belum yakin.” Pertanyaan itu penting, tetapi data 12 hari dari empat menu yang ada tidak bisa menjawabnya — kita tidak punya data preferensi pelanggan, biaya pengembangan resep, maupun harga bahan baru. Mempaksanya ke dalam analisis hanya akan menghasilkan jawaban yang terkesan presisi padahal dugaan. Pertanyaan seperti ini kita catat sebagai keterbatasan di laporan akhir, bukan dipaksa dijawab.
Kelima pertanyaan kini siap diuji terhadap data. Sebelum bisa menjawabnya, kita perlu memastikan data yang dimiliki benar-benar bisa dipercaya — dimulai dari memahami dari mana datanya berasal. Kita lakukan pada Bagian 3: Mengumpulkan Data .