Hampir semua rumus data science — rata-rata, varians, tingkat akurasi, hingga rumus regresi — ditulis dengan bahasa aljabar: huruf yang mewakili angka, tanda sama dengan, dan operasi memindahkan suku dari satu sisi ke sisi lain. Jika bahasa tersebut terasa asing, rumus-rumus itu hanya akan menjadi hafalan tanpa makna, dan kita menjadi sulit memeriksa apakah hasil perhitungan masuk akal. Pada chapter ini kita memperlakukan aljabar sebagai alat kerja seorang analis: substitusi nilai, menyeimbangkan persamaan, rasio dan persentase, hingga membalik sebuah rumus untuk menemukan besaran yang tidak diketahui. Semua contoh dihitung dengan Python murni terlebih dahulu, lalu kita tutup dengan cara cepatnya memakai NumPy.

Variabel dan Substitusi Nilai #

Dalam aljabar, variabel adalah simbol yang menampung sebuah nilai. Rumus menjadi berguna justru karena variabel: satu rumus margin keuntungan bisa dipakai untuk semua produk toko, bukan hanya satu gelas kopi. Membaca rumus lalu mengganti variabel dengan angka disebut substitusi — keahlian yang kita lakukan setiap kali menerjemahkan pertanyaan bisnis menjadi perhitungan.

Rumus margin keuntungan ditulis ringkas sebagai berikut:

text
laba    = harga_jual - harga_pokok
margin  = laba / harga_jual x 100%

Kita terapkan pada satu gelas kopi susu di Toko Kopi Kita:

python
harga_jual = 24000    # harga satu gelas kopi susu (Rp)
harga_pokok = 15000   # biaya bahan baku per gelas (Rp)

laba = harga_jual - harga_pokok
margin = laba / harga_jual * 100

print(f"Laba per gelas : Rp{laba}")
print(f"Margin laba    : {margin}%")

Output yang Dihasilkan:

text
Laba per gelas : Rp9000
Margin laba    : 37.5%

Mari kita telaah baris-baris kode di atas:

  1. Baris 1-2 (harga_jual, harga_pokok): dua variabel menyimpan angka dari dunia nyata. Nama variabel yang deskriptif membuat kode bisa dibaca seperti kalimat.
  2. Baris 4 (laba = ...): rumus pertama disubstitusi — laba adalah selisih harga jual dan harga pokok.
  3. Baris 5 (margin = ...): rumus kedua menyatakan laba sebagai rasio terhadap harga jual, dikali 100 agar tampil sebagai persentase.

Menyeimbangkan Persamaan dengan Memindah Suku #

Persoalan sehari-hari seorang analis sering terbalik dari rumus: nilai target sudah diketahui, justru salah satu variabel yang dicari. Kunci menyelesaikannya adalah satu aturan: persamaan tetap seimbang selama operasi yang sama diberikan kepada kedua sisi. Menambah, mengurangi, mengalikan, atau membagi kedua sisi dengan bilangan yang sama tidak mengubah solusinya.

Sebagai contoh, pemilik Toko Kopi Kita ingin margin 40% dengan harga pokok tetap 15000 rupiah. Kita mulai dari persamaan margin, lalu memindahkan suku selangkah demi selangkah hingga harga jual berdiri sendiri:

python
harga_pokok = 15000     # biaya bahan baku per gelas (Rp)
target_margin = 0.40    # ingin laba 40% dari harga jual

# Mulai dari persamaan margin: (jual - pokok) / jual = 0.40
# jual - pokok       = 0.40 * jual    (kedua sisi dikali jual)
# jual - 0.40 * jual = pokok          (suku dipindah ke sisi berlawanan)
# jual * (1 - 0.40)  = pokok          # faktor bersama dikeluarkan
# jual = pokok / (1 - 0.40)           (kedua sisi dibagi 0.60)
harga_jual = harga_pokok / (1 - target_margin)

print(f"Harga jual yang perlu ditetapkan: Rp{harga_jual}")
laba = harga_jual - harga_pokok
print(f"Cek ulang margin: {laba / harga_jual * 100}%")

Output yang Dihasilkan:

text
Harga jual yang perlu ditetapkan: Rp25000.0
Cek ulang margin: 40.0%

Hasil 25000 rupiah memenuhi target, dan pemeriksaan ulang dengan substitusi mengonfirmasi margin 40%. Perhatikan bahwa langkah terakhir membagi dengan 1 - target_margin, bukan mengalikan harga pokok dengan 1.40. Menaikkan harga pokok sebesar 40% hanya menghasilkan margin sekitar 28,6% — pemahaman aljabar seperti inilah yang membedakan perhitungan yang benar dari yang sekadar terasa benar.

Rasio, Persentase, dan Konversi Satuan #

Perubahan absolut jarang bercerita banyak. Kenaikan penjualan 42 juta rupiah berarti luar biasa jika bulan lalu hanya 210 juta, tetapi biasa saja jika bulan lalu sudah 2100 juta. Karena itu analis hampir selalu melaporkan perubahan relatif — rasio terhadap nilai sebelumnya. Konversi satuan sering menyertai perhitungan ini karena data mentah datang dalam satuan yang berbeda-beda: rupiah per kilogram berhadapan dengan rupiah per gram, juta rupiah berhadapan dengan rupiah penuh.

python
penjualan_lalu = 210    # penjualan bulan lalu (juta rupiah)
penjualan_ini = 252     # penjualan bulan ini (juta rupiah)

# Rasio perubahan: (nilai baru - nilai lama) / nilai lama
perubahan = (penjualan_ini - penjualan_lalu) / penjualan_lalu
print(f"Rasio perubahan      : {perubahan}")
print(f"Persentase perubahan : {perubahan * 100}%")

# Konversi satuan: dari harga per kilogram ke harga per gram
harga_per_kg = 14400    # harga beras (Rp per kilogram)
harga_per_gram = harga_per_kg / 1000
print(f"Harga 250 gram beras : Rp{harga_per_gram * 250:.0f}")

Output yang Dihasilkan:

text
Rasio perubahan      : 0.2
Persentase perubahan : 20.0%
Harga 250 gram beras : Rp3600

Tiga baris terakhir memperlihatkan konversi satuan yang bekerja seperti memindahkan suku: karena 1 kilogram sama dengan 1000 gram, harga per gram diperoleh dengan membagi 1000. Rasio perubahan bernilai 0.2 atau 20% — tumbuh positif; jika nilainya negatif, kita sedang melihat penurunan.

Kasus Analis: Membalik Rumus Rata-rata #

Manipulasi persamaan yang paling sering dipakai analis justru tampak sepele: membalik rumus rata-rata. Laporan manajemen sering hanya menyajikan angka ringkas — “rata-rata 32 transaksi per hari” — padahal kita butuh totalnya, misalnya untuk menaksir kebutuhan stok. Rumus rata-rata adalah total / n; memindahkan n ke sisi lain memberi total = rata-rata x n.

python
transaksi_harian = [30, 41, 27, 35, 38, 25, 28]   # transaksi per hari, Senin-Minggu

total = 0
for nilai in transaksi_harian:
    total = total + nilai
rata_rata = total / len(transaksi_harian)

print(f"Total transaksi minggu ini : {total}")
print(f"Rata-rata transaksi harian : {rata_rata}")

# Membalik rumus: jika laporan hanya menampilkan rata-rata,
# total = rata-rata x jumlah hari.
total_dari_rata = rata_rata * len(transaksi_harian)
print(f"Total dari rata-rata       : {total_dari_rata}")

Output yang Dihasilkan:

text
Total transaksi minggu ini : 224
Rata-rata transaksi harian : 32.0
Total dari rata-rata       : 224.0

Kode di atas sengaja menghitung jumlah dengan for loop secara manual — akumulator total bertambah satu suku setiap putaran. Cara ini memperlihatkan cara kerja penjumlahan berulang dari dalam, persis seperti yang akan kita tulis dengan notasi sigma pada chapter berikutnya. Untuk pekerjaan sehari-hari, NumPy menyediakan cara cepatnya:

python
import numpy as np

transaksi = np.array([30, 41, 27, 35, 38, 25, 28])

rata_rata = transaksi.mean()
total = rata_rata * transaksi.size

print(f"Rata-rata (NumPy)    : {rata_rata}")
print(f"Total dari rata-rata : {total}")

Output yang Dihasilkan:

text
Rata-rata (NumPy)    : 32.0
Total dari rata-rata : 224.0

Method .mean() milik array NumPy menggantikan loop manual, dan .size menggantikan len(). NumPy akan kita bahas tuntas pada chapter Dasar NumPy ; di sini kita cukup melihat pola yang berulang: konsep matematisnya tetap aljabar, Python hanya membuat hitungannya cepat.

Rangkuman #

  • Variabel adalah wadah nilai; substitusi menerjemahkan rumus menjadi angka konkret.
  • Persamaan tetap seimbang jika kedua sisi menerima operasi yang sama — dasar semua pemindahan suku.
  • Margin dibagi harga jual, markup dibagi harga pokok; keduanya tidak saling menggantikan.
  • Rasio perubahan membagi selisih dengan nilai lama; konversi satuan mengikuti aturan kali-bagi yang sama.
  • Membalik rumus (total = rata-rata x n) adalah manipulasi persamaan yang dipakai analis setiap pekan.

Aljabar memberi kita kemampuan memanipulasi rumus satu baris. Namun hubungan antar besaran di dunia nyata jarang berhenti pada satu baris — kita butuh cara berpikir tentang masukan yang berubah-ubah dan keluaran yang mengikutinya. Bahasa untuk itulah yang kita bangun pada chapter berikutnya, Fungsi dan Grafik .

Referensi #

  1. Python Docs — More on Lists
  2. NumPy — The Absolute Basics for Beginners