Learn
← Previous Next →

Hari 27: Pengenalan NumPy & Pandas

65 min Last updated 26 Mar 2026

NumPy — Komputasi Numerik

NumPy menyediakan array N-dimensi yang jauh lebih cepat dari list Python untuk operasi matematika.

import numpy as np

# Membuat array
a = np.array([1, 2, 3, 4, 5])
b = np.array([[1,2,3],[4,5,6],[7,8,9]])   # 2D

print(a.shape)    # (5,)
print(b.shape)    # (3, 3)
print(a.dtype)    # int64

# Array khusus
np.zeros((3, 4))           # matriks nol
np.ones((2, 3))            # matriks satu
np.eye(3)                  # matriks identitas
np.arange(0, 10, 2)        # [0, 2, 4, 6, 8]
np.linspace(0, 1, 5)       # [0, .25, .5, .75, 1]
np.random.rand(3, 3)       # acak 0-1

Operasi NumPy

import numpy as np

a = np.array([1, 2, 3, 4, 5])
b = np.array([10, 20, 30, 40, 50])

# Operasi elemen-per-elemen (broadcasting)
print(a + b)      # [11 22 33 44 55]
print(a * 2)      # [2 4 6 8 10]
print(a ** 2)     # [1 4 9 16 25]
print(np.sqrt(a)) # [1. 1.41 1.73 2. 2.24]

# Statistik
print(a.sum())    # 15
print(a.mean())   # 3.0
print(a.std())    # 1.41...
print(a.max())    # 5

# Indexing & slicing (seperti list tapi lebih powerful)
m = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(m[1, 2])     # 6 — baris 1, kolom 2
print(m[:, 1])     # [2 5 8] — semua baris, kolom 1
print(m[m > 5])    # [6 7 8 9] — boolean indexing

Pandas — Manipulasi Data

import pandas as pd

# DataFrame — tabel 2D
data = {
    "nama"  : ["Budi", "Ani", "Citra", "Doni"],
    "nilai" : [88, 75, 92, 68],
    "kelas" : ["A", "B", "A", "B"],
}
df = pd.DataFrame(data)
print(df)
print(df.dtypes)
print(df.describe())   # statistik deskriptif

Operasi DataFrame

import pandas as pd

df = pd.DataFrame({
    "nama" : ["Budi","Ani","Citra","Doni","Eva"],
    "nilai": [88, 75, 92, 68, 85],
    "kelas": ["A","B","A","B","A"],
})

# Seleksi kolom
print(df["nama"])             # Series satu kolom
print(df[["nama","nilai"]])   # DataFrame multi kolom

# Filter baris
print(df[df["nilai"] >= 80])
print(df[df["kelas"] == "A"])

# Tambah kolom
df["grade"] = df["nilai"].apply(lambda n: "A" if n>=90 else "B" if n>=80 else "C")

# Agregasi
print(df.groupby("kelas")["nilai"].mean())

# Sort
print(df.sort_values("nilai", ascending=False))

# Baca/tulis CSV
# df.to_csv("output.csv", index=False)
# df2 = pd.read_csv("output.csv")

Assignment

Gunakan Pandas untuk menganalisis data penjualan: buat DataFrame dari data yang diberikan, hitung total revenue per produk, tampilkan produk terlaris, dan buat ringkasan statistik.

Expected output:

=== DATA PENJUALAN ===
...
=== REVENUE PER PRODUK ===
Laptop : Rp 25,500,000
Mouse : Rp 1,950,000
Keyboard : Rp 1,050,000
Total revenue keseluruhan: Rp 28,500,000
Produk terlaris (qty) : Mouse
PY main.py
Solution
Output