Sebelum satu baris kode dijalankan, proyek data science sudah ditentukan oleh satu keputusan awal: dari mana datanya berasal. Di sekitar Toko Kopi Kita — dunia contoh yang kita pakai sepanjang section ini — data tersebar di banyak tempat: aplikasi kasir mencatat transaksi, pelanggan mengisi formulir kepuasan, portal pemerintah menerbitkan harga komoditas, dan asosiasi kafe merilis laporan tren minuman. Memilih sumber dengan tepat menghemat waktu pembersihan data dan menentukan seberapa jauh kesimpulan kita dapat dipercaya. Chapter ini memetakan sumber data yang paling umum, membahas pertimbangan saat memilihnya, dan menutup dengan satu kebiasaan kecil yang menjaga asal-usul data tetap tercatat.
Peta Sumber Data yang Umum #
Sumber data dapat dikelompokkan menjadi enam keluarga berikut:
| Kelompok sumber | Contoh di sekitar kita | Bentuk data umum |
|---|---|---|
| Sistem internal | Aplikasi kasir (POS) dan basis data keanggotaan Toko Kopi Kita | Tabel pada database, dapat diekspor |
| File ekspor | Laporan penjualan mingguan berformat CSV atau Excel | Berkas tabular di komputer |
| API publik | Layanan cuaca dan harga komoditas daring | JSON yang diambil melalui internet |
| Dataset terbuka | Data statistik BPS dan portal data.go.id | CSV, Excel, atau JSON siap unduh |
| Survei | Formulir kepuasan pelanggan yang kita sebar sendiri | Satu baris jawaban per responden |
| Sensor | Termometer ruang tunggu dan pencatat kunjungan | Angka berseri waktu (time series) |
Setiap keluarga menuntut perlakuan berbeda. File ekspor paling ringan: unduh, simpan di folder data/, lalu baca. Sistem internal biasanya menuntut izin akses dan bantuan tim yang mengelolanya. API publik memberi data termutakhir tetapi memerlukan koneksi internet serta penanganan galat — kita bahas pada chapter Pengambilan Data dari API. Survei dan pencatatan manual memberi kendali penuh atas pertanyaan, tetapi menghabiskan waktu orang, bukan mesin.
Untuk latihan di luar dunia toko, galeri dataset terbuka menyediakan bahan melimpah: Kaggle Datasets , UCI Machine Learning Repository , serta kumpulan datasets di GitHub . Berkas-berkas tersebut berasal dari keluarga “dataset terbuka” — siap unduh tanpa survei dan tanpa izin khusus.
Pertimbangan Memilih Sumber #
Lima pertimbangan berikut memisahkan sumber yang tepat dari sumber yang sekadar tersedia:
- Akses — Apakah kita punya izin membaca? Data kasir mungkin hanya bisa diakses lewat akun admin, sementara dataset terbuka dapat diunduh siapa saja.
- Biaya — Survei dan laporan industri berbayar memakan anggaran; file ekspor dan dataset terbuka umumnya gratis, tetapi menuntut waktu pembersihan.
- Kebaruan — Seberapa baru datanya? Laporan asosiasi setahun lalu tidak dapat dipakai menilai tren minuman musim ini; API dan sensor memberi data termutakhir.
- Kualitas — Apakah definisi tiap kolom jelas dan pengisiannya disiplin? Data yang dientri manual tanpa pedoman biasanya paling banyak lubangnya.
- Lisensi — Boleh dipakai untuk keperluan apa saja? Data terbuka pun membawa ketentuan pemakaian yang perlu kita patuhi.
Menandai Asal Data pada DataFrame #
Begitu data dari beberapa sumber bergabung dalam satu tabel, asal tiap baris mudah hilang — padahal baris dari kasir dan baris dari rekap pusat tidak tentu sama kualitasnya. Kebiasaan sederhana untuk mengatasinya: beri kolom penanda seperti sumber_data sebelum menggabungkan, sehingga setiap angka dapat ditelusuri balik ke sumbernya. Pelacakan asal-usul semacam ini disebut provenance.
Misalkan penjualan Toko Kopi Kita datang dari dua jalur: file ekspor aplikasi kasir untuk tanggal 12-13 Januari, dan rekap dari kantor pusat untuk tanggal 14 Januari:
import pandas as pd
# Sumber A: file ekspor aplikasi kasir (12-13 Januari)
ekspor_kasir = pd.DataFrame({
"tanggal": ["2026-01-12", "2026-01-12", "2026-01-13", "2026-01-13"],
"produk": ["kopi susu", "teh tawar", "matcha latte", "kopi susu"],
"jumlah": [12, 5, 8, 9],
})
ekspor_kasir["sumber_data"] = "ekspor kasir"
# Sumber B: laporan rekap kantor pusat (14 Januari)
rekap_pusat = pd.DataFrame({
"tanggal": ["2026-01-14", "2026-01-14"],
"produk": ["kopi susu", "matcha latte"],
"jumlah": [15, 6],
})
rekap_pusat["sumber_data"] = "rekap pusat"
penjualan = pd.concat([ekspor_kasir, rekap_pusat], ignore_index=True)
print(penjualan)
print()
print(penjualan.groupby("sumber_data")["jumlah"].sum())Output yang Dihasilkan:
tanggal produk jumlah sumber_data
0 2026-01-12 kopi susu 12 ekspor kasir
1 2026-01-12 teh tawar 5 ekspor kasir
2 2026-01-13 matcha latte 8 ekspor kasir
3 2026-01-13 kopi susu 9 ekspor kasir
4 2026-01-14 kopi susu 15 rekap pusat
5 2026-01-14 matcha latte 6 rekap pusat
sumber_data
ekspor kasir 34
rekap pusat 21
Name: jumlah, dtype: int64Mari kita bedah baris-baris pentingnya:
- Baris 5 dan 12 (
...["sumber_data"] = ...): kolom penanda ditambahkan ke masing-masing DataFrame sebelum penggabungan. Nilainya berupa nama sumber yang mudah dibaca manusia. - Baris 14 (
pd.concat): kedua DataFrame ditumpuk menjadi satu tabel;ignore_index=Truemembuat indeks ditulis ulang dari nol agar rapi. - Baris 17 (
groupby): berkat kolom penanda, kita bisa menghitung kontribusi tiap sumber — 34 cangkir dari ekspor kasir dan 21 cangkir dari rekap pusat. Saat satu sumber terbukai bermasalah, barisnya mudah disaring dan diperiksa.
Rangkuman #
- Sumber data terbagi enam keluarga umum: sistem internal, file ekspor, API publik, dataset terbuka, survei, dan sensor.
- Pemilihan sumber mempertimbangkan akses, biaya, kebaruan, kualitas, dan lisensi — bukan sekadar mana yang lebih dekat.
- Kolom penanda
sumber_datayang dipasang sebelum penggabungan menjaga asal-usul data (provenance) tetap dapat ditelusuri.
Peta sumber yang baru kita susun menyimpan satu perbedaan mendasar: ada data yang kita kumpulkan sendiri dari nol, dan ada data yang disediakan pihak lain. Perbedaan itulah yang memisahkan data primer dari data sekunder — beserta konsekuensi biaya, kendali, dan kebaruan yang mengikutinya — dan menjadi bahasan chapter berikutnya.