Operator aritmatika bawaan cukup untuk penjumlahan dan perkalian sehari-hari, tetapi program nyata sering butuh lebih: pembulatan ke atas, akar kuadrat, faktorial, atau rata-rata sekumpulan data penjualan. Daripada menulis rumus sendiri, Python menyediakan dua module siap pakai: math untuk matematika klasik dan statistics untuk statistik deskriptif. Keduanya bagian dari standard library, jadi tidak perlu menginstal apa pun.

Module math: Pembulatan dan Nilai Dasar #

Module math berisi function yang menerima dan mengembalikan angka. Kita mulai dari yang paling sering dipakai:

python
import math

print(math.ceil(7.2), math.floor(7.8))
print(math.sqrt(144))
print(math.fabs(-15.75))

Output yang Dihasilkan:

text
8 7
12.0
15.75

Mari kita bedah kode di atas:

  1. Baris 3 (math.ceil(7.2)): function ceil() membulatkan angka ke atas menjadi 8, sedangkan math.floor(7.8) membulatkan ke bawah menjadi 7.
  2. Baris 4 (math.sqrt(144)): function sqrt() mengembalikan akar kuadrat sebagai float, yaitu 12.0.
  3. Baris 5 (math.fabs(-15.75)): function fabs() mengambil nilai absolut dan selalu mengembalikan float (15.75), berbeda dengan built-in abs() yang mengembalikan integer saat inputnya integer.

Berikut ringkasan function math yang paling sering dipakai:

FunctionTugasContoh
math.ceil(x)Bulatkan ke atasceil(7.2) → 8
math.floor(x)Bulatkan ke bawahfloor(7.8) → 7
math.sqrt(x)Akar kuadratsqrt(144) → 12.0
math.fabs(x)Nilai absolut (float)fabs(-15.75) → 15.75
math.factorial(n)Faktorial n!factorial(6) → 720
math.gcd(a, b)Faktor persekutuan terbesargcd(48, 60) → 12
math.log(x, base)Logaritmalog(8, 2) → 3.0
math.pow(x, y)Pangkat sebagai floatpow(2, 10) → 1024.0

Satu hal yang menarik: math.pow() hampir selalu lebih baik diganti operator **. Keduanya menghitung pangkat, tetapi hasilnya berbeda tipe:

python
import math

print(math.factorial(6))
print(math.gcd(48, 60))
print(math.log(8, 2))
print(math.pow(2, 10), 2 ** 10)

Output yang Dihasilkan:

text
720
12
3.0
1024.0 1024

Perhatikan baris terakhir: math.pow(2, 10) mengembalikan 1024.0 (float), sedangkan 2 ** 10 mengembalikan 1024 (integer). Gunakan operator ** untuk bilangan bulat agar hasil tetap presisi, dan gunakan math.pow() hanya saat kita memang bekerja di ranah float.

Nilai Khusus: inf dan nan #

Module math juga menyediakan alat untuk menangani dua nilai khusus: infinity (inf) dan not a number (nan). Nilai nan muncul dari operasi matematika yang tidak terdefinisi, misalnya inf - inf:

python
import math

tak_terhingga = float("inf")
selisih = tak_terhingga - tak_terhingga

print(selisih == selisih)
print(math.isnan(selisih))

Output yang Dihasilkan:

text
False
True

Nilai nan punya sifat unik: nan tidak pernah sama dengan nilai apa pun, termasuk dirinya sendiri. Karena itu, membandingkan dengan == menghasilkan False, dan satu-satunya cara yang benar untuk mendeteksinya adalah math.isnan().

Module statistics untuk Data Nyata #

Module statistics menghitung ukuran statistik dasar dari sekumpulan data. Sebagai contoh, kita pakai data jumlah unit terjual selama delapan hari:

python
import statistics

unit_terjual = [120, 135, 150, 150, 160, 175, 190, 210]

print(statistics.mean(unit_terjual))
print(statistics.median(unit_terjual))
print(statistics.mode(unit_terjual))
print(statistics.stdev(unit_terjual))
print(statistics.variance(unit_terjual))

Output yang Dihasilkan:

text
161.25
155.0
150
29.368350311176826
862.5

Mari kita bedah peran setiap function:

  1. Baris 5 (statistics.mean(...)): menghitung rata-rata, yaitu 1290 / 8 = 161.25.
  2. Baris 6 (statistics.median(...)): mengambil nilai tengah. Karena jumlah data genap, function median() mengambil rata-rata dua nilai tengah: (150 + 160) / 2 = 155.0.
  3. Baris 7 (statistics.mode(...)): mengembalikan nilai yang paling sering muncul, yaitu 150 (muncul dua kali).
  4. Baris 8 (statistics.stdev(...)): menghitung standard deviation (simpangan baku) sampel yang mengukur seberapa menyebar data terhadap rata-rata.
  5. Baris 9 (statistics.variance(...)): menghitung variansi sampel, yaitu kuadrat dari standard deviation (29.36...² ≈ 862.5).
FunctionPertanyaan yang dijawab
mean(data)Berapa rata-rata datanya?
median(data)Mana nilai tengahnya?
mode(data)Nilai apa yang paling sering muncul?
stdev(data)Seberapa menyebar datanya (sampel)?
variance(data)Berapa variansi sampelnya?

Untuk analisis angka yang jauh lebih berat, ekosistem Python menyediakan pandas dan NumPy. Namun untuk rata-rata, median, dan simpangan baku satu list, module statistics lebih dari cukup dan tidak menambah dependensi apa pun.