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 sumberContoh di sekitar kitaBentuk data umum
Sistem internalAplikasi kasir (POS) dan basis data keanggotaan Toko Kopi KitaTabel pada database, dapat diekspor
File eksporLaporan penjualan mingguan berformat CSV atau ExcelBerkas tabular di komputer
API publikLayanan cuaca dan harga komoditas daringJSON yang diambil melalui internet
Dataset terbukaData statistik BPS dan portal data.go.idCSV, Excel, atau JSON siap unduh
SurveiFormulir kepuasan pelanggan yang kita sebar sendiriSatu baris jawaban per responden
SensorTermometer ruang tunggu dan pencatat kunjunganAngka 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:

python
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:

text
      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: int64

Mari kita bedah baris-baris pentingnya:

  1. Baris 5 dan 12 (...["sumber_data"] = ...): kolom penanda ditambahkan ke masing-masing DataFrame sebelum penggabungan. Nilainya berupa nama sumber yang mudah dibaca manusia.
  2. Baris 14 (pd.concat): kedua DataFrame ditumpuk menjadi satu tabel; ignore_index=True membuat indeks ditulis ulang dari nol agar rapi.
  3. 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_data yang 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.