Setiap eksperimen kini meninggalkan jejak, tetapi jejak itu bertumpu pada satu benda yang paling sering luput dari dokumentasi: dataset itu sendiri. Berkas transaksi.csv terbuka dengan rapi di layar kita hari ini karena kita yang membangunnya; enam bulan dari sekarang, rekan yang mengambil alih proyek akan menatap kolom yang sama dengan pertanyaan — satuan total rupiah atau ribuan rupiah? Kenapa ada nilai nonmember? Sejak kapan pencatatannya rapi? Dokumentasi dataset menjawab semua itu lebih dulu. Bab ini membangun dua artefaknya: kamus data yang memetakan setiap kolom, dan README yang menjelaskan dataset sebagai satu kesatuan — pengantar, isi, dan cara memakainya.
Kamus Data: Peta Setiap Kolom #
Kamus data (data dictionary) adalah tabel kecil dengan satu baris per kolom, memuat setidaknya empat hal: nama kolom, tipe datanya, artinya, dan satu contoh nilainya. Empat informasi itu menjawab pertanyaan yang pasti muncul saat orang lain (atau kita sendiri, lusa) membuka berkas: kolom apa saja yang ada, bagaimana cara membacanya, dan seperti wujud isinya. Untuk dataset transaksi kita, kamusnya terlihat seperti ini:
| Kolom | Tipe | Deskripsi | Contoh |
|---|---|---|---|
tanggal | object | tanggal transaksi, format YYYY-MM-DD | 2026-01-05 |
pelanggan | object | nama panggilan anggota; nonmember bila bukan anggota | Budi |
menu | object | menu yang dipesan | kopi susu |
total | int64 | nilai transaksi dalam rupiah penuh | 24000 |
Perhatikan bahwa deskripsi terbaik menyebut satuan dan nilai khusus — “rupiah penuh” (bukan ribuan), “nonmember bila bukan anggota” (bukan sekadar “nama pelanggan”). Kamus yang menulis “nama pelanggan” saja akan meninggalkan pertanyaan terbesar justru tak terjawab: kenapa ada baris yang bukan nama.
Generator Kamus Data Otomatis #
Menulis kamus dengan tangan terasa ringan pada empat kolom, tetapi dataset nyata punya puluhan kolom dan rawan usang begitu data berubah. Kebiasaan yang lebih sehat: menghasilkan kerangka kamus langsung dari DataFrame, lalu menambahkan deskripsi yang hanya bisa ditulis manusia. Tiga dari empat kolom kamus — nama, tipe, dan contoh nilai — adalah fakta yang bisa dibaca mesin; hanya deskripsi yang benar-benar pekerjaan kita.
import pandas as pd
transaksi = pd.DataFrame({
"tanggal": ["2026-01-05", "2026-01-05", "2026-01-06", "2026-01-06",
"2026-01-07", "2026-01-07", "2026-01-07", "2026-01-08"],
"pelanggan": ["Budi", "Siti", "Dewi", "Siti", "Budi", "Dewi", "nonmember", "Agus"],
"menu": ["kopi susu", "americano", "matcha", "teh melati",
"kopi susu", "matcha", "americano", "kopi susu"],
"total": [24000, 18000, 28000, 18000, 24000, 28000, 22000, 32000],
})
deskripsi = {
"tanggal": "tanggal transaksi (YYYY-MM-DD)",
"pelanggan": "nama panggilan anggota; nonmember bila bukan anggota",
"menu": "menu yang dipesan",
"total": "nilai transaksi dalam rupiah penuh",
}
kamus = pd.DataFrame({
"kolom": list(transaksi.columns),
"tipe": [str(t) for t in transaksi.dtypes],
"hilang": [int(transaksi[k].isna().sum()) for k in transaksi],
"contoh": [transaksi[k].iloc[0] for k in transaksi],
})
kamus["deskripsi"] = [deskripsi[k] for k in transaksi.columns]
print(kamus.to_string(index=False))Output yang Dihasilkan:
kolom tipe hilang contoh deskripsi
tanggal object 0 2026-01-05 tanggal transaksi (YYYY-MM-DD)
pelanggan object 0 Budi nama panggilan anggota; nonmember bila bukan anggota
menu object 0 kopi susu menu yang dipesan
total int64 0 24000 nilai transaksi dalam rupiah penuhMari kita bedah cara kerjanya:
transaksi.dtypesdanisna().sum()membaca fakta langsung dari data — tipe kolom dan jumlah nilai hilang — sehingga kamus tidak pernah berbeda dengan kondisi data. Begitu kolom baru muncul atau tipe berubah, generator ikut berubah tanpa perlu diingatkan.deskripsitetap ditulis tangan karena hanya manusia yang tahu makna: kenapanonmemberada, dan bahwatotalberdenar rupiah penuh. Pemisahan fakta-mesin dan makna-manusia inilah pola yang tepat: otomatis yang bisa diotomatisasi, tulis yang memang harus ditulis.- Kolom
contohdiambil dariiloc[0]— baris pertama memadai untuk gambaran; untuk dataset nyata, contoh bisa diambil dariunique()yang sudah disaring nilainya sensitif. - Kamus berupa DataFrame berarti bisa ikut mengalir dalam pipeline: disimpan ke CSV bersama dataset, dibuka di notebook, atau diperiksa otomatis — misalnya membandingkan
tipekamus dengan tipe data hari ini sebagai alarm perubahan.
README Dataset: Dokumen Sambutan #
Kamus menjelaskan kolom; README menjelaskan dataset sebagai satu benda. Isinya menjawab pertanyaan yang muncul sebelum kolom pertama dibaca: dari mana data ini, periode kapan, bagaimana memuatnya, dan boleh dibagikan ke siapa. Satu halaman pendek sudah memadai bila setiap barisnya informatif:
# Dataset Transaksi Toko Kopi Kita
Asal : ekspor sistem kasir kedai, diambil 9 Januari 2026
Periode : 5-8 Januari 2026 (uji coba pencatatan keanggotaan)
Cara memuat : pd.read_csv("transaksi.csv") - koma pemisah, UTF-8
Bentuk : satu baris = satu transaksi; 8 baris, 4 kolom
Catatan : kolom total dalam rupiah penuh; "nonmember" menandai
pelanggan tanpa keanggotaan; tanggal sebelum Oktober 2025
tidak dipakai (pencatatan belum rapi)
Lisensi : internal kedai - tidak dibagikan ke luar tanpa izinPerhatikan bahwa README jujur pada keterbatasan — “tanggal sebelum Oktober 2025 tidak dipakui” adalah informasi yang menyelamatkan analisis orang lain dari kekeliruan yang pernah kita hindari. Dokumentasi yang baik bukan brosur; dokumentasi adalah hasil profil data yang ditulis ulang untuk pembaca berikutnya.
Metafora yang Tepat: Metadata #
Kamus data adalah anggota paling konkret dari keluarga yang lebih luas: metadata, yaitu data tentang data. Konsep ini sudah kita kenal pada chapter Metadata — di sana kita membedakan metadata deskriptif (judul, asal, periode), struktural (format, tipe), dan administratif (lisensi, akses). README dan kamus kita memuat ketiganya: baris “Asal” dan “Periode” adalah metadata deskriptif, tabel tipe kolom adalah metadata struktural, dan baris “Lisensi” adalah metadata administratif. Menyebut istilahnya memberi kita bahasa bersama saat berdiskusi dengan pustakawan data atau tim tata kelola.
Rangkuman #
- Dokumentasi dataset adalah jembatan kepada pengguna berikutnya; tanpanya, hanya pembuat yang bisa membaca — dan hanya selama ia ingat.
- Kamus data memetakan setiap kolom: nama, tipe, deskripsi, dan contoh nilai; deskripsi terbaik menyebut satuan dan nilai khusus seperti
nonmember. - Generator otomatis mengambil fakta (tipe, nilai hilang, contoh) langsung dari DataFrame, sementara deskripsi tetap ditulis manusia — pemisahan yang menjaga kamus tidak usang.
- README menjawab pertanyaan sebelum kolom dibaca: asal, periode, cara memuat, catatan penting, dan lisensi — termasuk kejujuran soal keterbatasan data.
- Kamus dan README adalah metadata deskriptif, struktural, dan administratif dalam wujud paling praktis, dan disimpan satu folder bersama datanya.
Dataset kita kini bisa dipahami orang lain. Satu syarat reproduksi masih menggantung: orang itu juga harus bisa menjalankan kodenya di komputernya sendiri — dengan versi pustaka yang sama seperti saat analisis dibuat. Menutup celah itu adalah pekerjaan chapter berikutnya: Pengelolaan Dependensi .