Ketika pip memasang pandas pada Chapter sebelumnya, salah satu paket yang ikut terunduh bernama numpy. NumPy bukan paket pelengkap semata: NumPy adalah fondasi numerik yang dipakai pandas untuk menyimpan dan menghitung data di balik layar. Memahami posisi NumPy membantu kita membaca pesan error, memahami dtype, dan menulis kode pandas yang lebih efisien. Chapter ini membahas cara memasang NumPy secara eksplisit, memverifikasinya, dan menetapkan batas antara pekerjaan yang cocok untuk NumPy versus pandas.

Hubungan Pandas dan NumPy #

pandas 3.0.6 mendeklarasikan numpy>=1.26.0 sebagai dependensi wajib, sehingga NumPy selalu terpasang bersama pandas. Sebuah DataFrame pada dasarnya membungkus kumpulan array NumPy: kolom numerik disimpan sebagai ndarray, dan operasi seperti penjumlahan antar kolom dikerjakan oleh mesin komputasi NumPy yang vectorized. Halaman resmi pengenalan struktur data pandas menjelaskan hubungan ini lebih jauh, dan dokumentasi NumPy menjadi rujukan untuk konsep array dan dtype.

Tabel berikut merangkum apa yang disumbangkan NumPy kepada pandas:

Kontribusi NumPyWujudnya di pandas
Penyimpanan data numerik kontinuKolom DataFrame tersimpan sebagai ndarray
Operasi vectorizeddf["a"] + df["b"] berjalan tanpa loop eksplisit
Sistem dtype (int64, float64, bool)Kolom pandas mewarisi dtype dari array penyimpanannya
Fungsi matematis (sum, mean, min)Method agregasi pandas memanggil implementasi NumPy

Walaupun saling terikat, keduanya punya wilayah masing-masing, dan itulah yang dibahas di akhir chapter ini.

Memasang NumPy #

Jika Anda mengikuti Course ini berurutan, NumPy sudah ada di virtual environment Anda karena ikut terpasang bersama pandas. Untuk proyek yang memakai NumPy tanpa pandas (misalnya komputasi murni), pemasangan eksplisitnya memakai pip seperti biasa:

bash
python3 -m pip install numpy

Pada lingkungan penulisan Course ini, NumPy sudah terpasang sebagai dependensi pandas, sehingga pip melaporkannya tanpa mengunduh ulang:

Output yang Dihasilkan:

text
Requirement already satisfied: numpy in /home/z/.venv/lib/python3.12/site-packages (2.1.3)

[notice] A new release of pip is available: 25.0.1 -> 26.2.1
[notice] To update, run: pip3 install --upgrade pip

Pesan Requirement already satisfied berarti pip menemukan NumPy di site-packages environment aktif dan tidak melakukan apa pun. Versi 2.1.3 adalah versi yang dipakai seluruh contoh Course ini; jika di komputer Anda muncul versi lain, perilaku dasar NumPy yang kita bahas tetap sama. Halaman paket numpy di PyPI mencantumkan syarat versi Python untuk setiap rilisnya.

Memverifikasi Instalasi NumPy #

Sama seperti pandas, verifikasi paling tulus adalah menjalankan kodenya. Skrip berikut menghitung total penjualan dengan array NumPy, lalu membuktikan bahwa kolom DataFrame pandas memang berdiri di atas ndarray:

python
import numpy as np
import pandas as pd

print("Versi numpy :", np.__version__)
harga = np.array([85000, 32000, 24000])
jumlah = np.array([12, 30, 25])
total = harga * jumlah
print("Total per item :", total)
print("Tipe objek     :", type(total).__name__)
print("Dtype total    :", total.dtype)
print("Jumlah total   :", total.sum())

df = pd.DataFrame({"produk": ["Kopi Gayo", "Teh Melati", "Gula Aren"], "total": total})
print("Kolom total di DataFrame ->", type(df["total"].to_numpy()).__name__)

Output yang Dihasilkan:

text
Versi numpy : 2.1.3
Total per item : [1020000  960000  600000]
Tipe objek     : ndarray
Dtype total    : int64
Jumlah total   : 2580000
Kolom total di DataFrame -> ndarray

Mari kita bedah bagian pentingnya:

  1. Baris 5-6 (np.array([...])): dua array satu dimensi dibuat dari list harga dan jumlah barang; array NumPy menyimpan nilai bertipe seragam, bukan campuran.
  2. Baris 7 (total = harga * jumlah): perkalian terjadi elemen per elemen (vectorized) tanpa loop; hasilnya ndarray berisi 1020000, 960000, dan 600000.
  3. Baris 9-11: type(total).__name__ mengonfirmasi tipe ndarray, total.dtype menunjukkan int64 karena semua elemennya bilangan bulat, dan total.sum() mengagregasi seluruh elemen menjadi 2580000.
  4. Baris 13-14: array total dipakai sebagai kolom DataFrame; method to_numpy() mengembalikan isi kolom tersebut dalam bentuk ndarray, tanda bahwa pandas menyimpan kolom numeriknya di atas array NumPy.

Batas Antara NumPy dan Pandas #

Karena saling terhubung, pemula sering bertanya kapan memakai yang mana. Aturan praktisnya: NumPy bekerja pada array berlabel angka 0, 1, 2, sedangkan pandas menambahkan label baris dan kolom yang bermakna serta alat pemrosesan tabel:

Aspekndarray NumPySeries/DataFrame pandas
Label elemenPosisi bilangan bulat (0, 1, 2)Index dan nama kolom yang bisa dinamai
Tipe dataSatu dtype per array, sangat ketatDtype per kolom plus tipe khusus seperti str bawaan pandas 3.0
Nilai kosongDitangani lewat NaN dan kehati-hatian manualMethod dropna, fillna, dan deteksi otomatis
Wilayah terbaikKomputasi numerik murni dan array besarData tabel dari file, SQL, atau Excel dengan pembersihan dan agregasi

Pada praktiknya kita tidak memilih salah satu: data biasanya masuk lewat pandas, diolah sebagai tabel, dan sesekali dikonversi ke NumPy saat dibutuhkan komputasi mentah. Setelah fondasi numerik terpasang lengkap, bagian akhir Section ini menyiapkan dua lingkungan kerja sehari-hari: interpreter Python untuk uji cepat, lalu Jupyter Notebook untuk eksplorasi interaktif.