Model prakiraan churn yang hebat tidak akan pernah selesai bila datanya sendiri belum tersedia: catatan kasir tersimpan di satu sistem, data aplikasi di sistem lain, dan sebagian kolomnya tidak lengkap. Sebelum seorang data scientist menganalisis satu baris data pun, ada pekerjaan besar yang memastikan data sampai ke meja analisis dalam kondisi siap pakai. Pada chapter ini kita membedah pembagian kerja antara data engineering dan data science, lalu mencoba membangun mini pipeline serta melihat apa yang dilakukan data scientist terhadap hasilnya.
Pembagian Kerja: Merakit Aliran vs Menggali Makna #
Data engineering adalah bidang yang merancang, membangun, dan merawat sistem yang mengalirkan data dari sumber-sumbernya ke penyimpanan yang teratur — mulai dari pipeline harian, gudang data (data warehouse), sampai penjadwalan tugas. Data engineer menjawab pertanyaan seperti: bagaimana data dari 30 mesin kasir sampai ke gudang data setiap malam tanpa ada yang hilang atau tercatat dua kali? Ukuran keberhasilannya adalah keandalan: data hadir tepat waktu, utuh, dan konsisten setiap kali dibutuhkan.
Data science, di sisi lain, memakai data yang telah rapi tersebut untuk menggali jawaban dan membangun model. Posisi keduanya bisa kita bayangkan seperti hubungan pemasok dan pengolah di sebuah dapur: data engineer menyediakan bahan yang bersih dan terukur, sedangkan data scientist mengolahnya menjadi hidangan — analisis, model, dan rekomendasi. Batas analogi ini perlu kita pegang: di dapur sesungguhnya bahan bisa habis dimasak, sedangkan data tetap utuh dan justru bertambah nilainya setiap kali dianalisis ulang.
| Aspek | Data Engineering | Data Science |
|---|---|---|
| Fokus utama | Mengalirkan dan menata data dari sumber ke penyimpanan | Menggali jawaban dan membangun model dari data yang rapi |
| Pertanyaan khas | Bagaimana data dari banyak sistem sampai ke gudang data tanpa hilang? | Faktor apa yang paling memengaruhi penjualan bulan depan? |
| Alat utama | SQL lanjutan, orchestrator (mis. Airflow), dbt, penyimpanan awan, Spark | Python, pandas, scikit-learn, notebook, visualisasi |
| Keluaran khas | Pipeline terjadwal, tabel rapi, infrastruktur data | Analisis, model prediktif, rekomendasi keputusan |
| Ukuran sukses | Data hadir tepat waktu, utuh, dan konsisten | Pertanyaan bisnis terjawab dan keputusan membaik |
Mini Pipeline dengan Python Murni #
Apa yang dikerjakan data engineer paling mudah dipahami lewat mini pipeline. Kasusnya: catatan mentah dari mesin kasir Toko Kopi Kita berisi nama produk yang tidak seragam (“Kopi Arabika” vs “kopi arabika”), kota yang hurufnya berbeda-beda, dan beberapa jumlah yang tidak tercatat. Kode berikut menjalankan tiga tahap klasik — extract (data sudah kita sediakan dalam list), transform (merapikan), dan load (menghimpun menjadi tabel agregat).
# Catatan mentah dari mesin kasir: (produk, jumlah, kota)
catatan_mentah = [
("Kopi Arabika", 2, "Bandung"),
("Teh Melati", None, "Surabaya"),
("kopi arabika", 1, "bandung"),
("Teh Melati", 3, "Surabaya"),
("Kopi Arabika", None, "Bandung"),
("Teh Melati", 2, "Bandung"),
]
# Tahap transform: rapikan teks dan buang catatan tidak lengkap
bersih = []
for produk, jumlah, kota in catatan_mentah:
if jumlah is None:
continue
bersih.append((produk.title(), jumlah, kota.title()))
# Tahap load: himpun catatan bersih menjadi tabel agregat per produk
tabel = {}
for produk, jumlah, kota in bersih:
kunci = (produk, kota)
tabel[kunci] = tabel.get(kunci, 0) + jumlah
for (produk, kota), total in sorted(tabel.items()):
print(f"{produk} - {kota}: {total} unit")Output yang Dihasilkan:
Kopi Arabika - Bandung: 3 unit
Teh Melati - Bandung: 2 unit
Teh Melati - Surabaya: 3 unitMari kita telaah baris-baris kode di atas:
- Baris 2-9 (
catatan_mentah): enam catatan mentah dalam bentuk tuple tiga anggota. Dua catatan berisiNonepada kolom jumlah, dan dua catatan menuliskan produk serta kota dengan huruf yang tidak seragam — masalah khas data mentah. - Baris 12-16 (tahap transform): setiap catatan diperiksa; catatan dengan jumlah
Nonedibuang, sedangkantitle()merapikan kapitalisasi sehingga “kopi arabika” dan “Kopi Arabika” menjadi satu kesatuan. Enam catatan mentah menyusut menjadi empat catatan bersih. - Baris 19-22 (tahap load): dictionary
tabelmenghimpun jumlah per pasangan produk-kota. Methoddict.get(kunci, 0)mengembalikan 0 saat kunci belum ada, sehingga penjumlahan berjalan mulus. - Baris 24-25 (
sorted(...)): hasil dicetak berurutan abjad supaya stabil dan mudah diperiksa — kebiasaan kecil yang penting pada pipeline sesungguhnya.
Pipeline produksi tidak ditulis dengan list bercampur for seperti ini; data engineer memakai orchestrator, SQL terjadwal, dan peralatan khusus lainnya. Namun logika tiga tahapnya sama persis: ambil, rapikan, himpun.
Ketika Tabel Rapi Sampai ke Data Scientist #
Setelah tabel rapi tersedia, giliran data science bekerja. Pada contoh berikut, data agregat dari pipeline di atas dimuat ke DataFrame pandas, lalu dijumlahkan per produk untuk menjawab pertanyaan bisnis sederhana: berapa total unit terjual per produk lintas kota? Kita akan memakai pandas untuk pertama kalinya di Course ini — cukup perhatikan bentuknya, karena detailnya kita kuasai tuntas pada Section Python untuk Data Science.
import pandas as pd
penjualan = pd.DataFrame({
"produk": ["Kopi Arabika", "Teh Melati", "Teh Melati"],
"kota": ["Bandung", "Bandung", "Surabaya"],
"total_unit": [3, 2, 3],
})
total_per_produk = penjualan.groupby("produk")["total_unit"].sum()
print(total_per_produk)Output yang Dihasilkan:
produk
Kopi Arabika 3
Teh Melati 5
Name: total_unit, dtype: int64Tiga baris data mentah berubah menjadi ringkasan siap baca: Kopi Arabika terjual 3 unit, Teh Melati 5 unit. Operasi groupby()
mengelompokkan baris-baris menurut nilai kolom produk sebelum sum() menjumlahkan angkanya — pola yang akan kita pakai berulang kali sepanjang Course ini. Perhatikan juga betapa singkatnya kode tersebut: pekerjaan agregasi yang pada blok pertama memakan dua belas baris kini selesai dalam tiga baris, karena tabelnya sudah rapi sejak awal.
Kolaborasi dalam Satu Tim #
Garis pembagian di antara kedua peran tidak setegas tabel perbandingan. Pada banyak perusahaan modern ada peran penengah seperti analytics engineer yang mengelola transformasi data dengan dbt, dan pada tim kecil satu orang bisa merangkap semuanya. Prinsip yang tetap berlaku: semakin besar organisasinya, semakin penting jalur data dibangun sebagai sistem yang dikelola serius, bukan sebagai berkas-berkas lepas yang disalin manual.
Rangkuman #
- Data engineering membangun dan merawat jalur data — pipeline, gudang data, penjadwalan — agar data sampai dalam kondisi rapi dan andal.
- Data science memakai data rapi tersebut untuk analisis dan pemodelan; kualitas analisis tidak pernah melebihi kualitas datanya.
- Pola dasar pipeline: extract → transform → load — logikanya bisa kita tiru dengan Python murni meski alat produksinya berbeda.
- pandas
groupby()adalah contoh alat yang baru berguna penuh setelah data rapi tersedia.
Kini ketiga bidang pembanding telah selesai kita petakan. Kita tahu data science menjawab pertanyaan apa, dan siapa saja yang mengerjakannya. Pertanyaan besar terakhir pada Section ini adalah bagaimana satu proyek data science berjalan dari awal sampai akhir — dan jawabannya tidak berbentuk garis lurus. Kita bahas pada chapter Siklus Hidup Proyek Data Science .