Panduan Randomisasi Data Python: Library, Metode, dan Implementasi

Metode Utama Randomisasi Data di Python

Randomisasi data dalam Python umumnya dilakukan melalui dua pustaka utama: modul bawaan random untuk operasi dasar pada list, dan numpy.random untuk komputasi numerik serta array berskala besar. Pemilihan metode bergantung pada struktur data dan kebutuhan performa aplikasi Anda.

1. Pengacakan List dengan Modul random

Modul random adalah standar untuk mengacak elemen dalam list Python. Fungsi shuffle() mengubah urutan list secara in-place, sementara sample() menghasilkan list baru tanpa mengubah data asli.

import random

# Mengacak list secara in-place
data = [1, 2, 3, 4, 5]
random.shuffle(data)
print(f"Hasil shuffle: {data}")

# Mengambil sampel acak tanpa penggantian
sampel = random.sample(data, 3)
print(f"Hasil sample: {sampel}")

2. Randomisasi Array dengan NumPy

Untuk data saintifik atau dataset besar, numpy.random jauh lebih efisien. Penggunaan Generator (sejak NumPy 1.17) lebih direkomendasikan dibandingkan fungsi random.seed() global untuk menjaga konsistensi hasil (reproducibility).

import numpy as np

# Inisialisasi generator
rng = np.random.default_rng(seed=42)

# Mengacak array
arr = np.array([10, 20, 30, 40, 50])
rng.shuffle(arr)
print(f"Array acak: {arr}")

# Membuat array acak dengan distribusi normal
random_data = rng.standard_normal(5)
print(f"Data acak normal: {random_data}")
MetodeLibraryKegunaan UtamaPerforma
shuffle()randomList Python standarSedang
sample()randomMemilih subset acakSedang
rng.shuffle()numpyArray NumPy (Large Data)Sangat Cepat
rng.choice()numpySampling dengan probabilitasSangat Cepat

Tips Troubleshooting

  • Reproducibility: Selalu gunakan seed (misal: random.seed(42) atau np.random.default_rng(42)) jika Anda ingin hasil acak yang sama setiap kali kode dijalankan, terutama untuk keperluan debugging atau pengujian model machine learning.
  • Memory Usage: Untuk dataset yang sangat besar (melebihi RAM), hindari memuat seluruh data ke list. Gunakan generator atau library seperti Dask untuk melakukan sampling secara streaming.
  • Keamanan: Jangan gunakan modul random untuk keperluan kriptografi (seperti pembuatan token atau password). Gunakan modul secrets yang dirancang khusus untuk keamanan tingkat tinggi.