Suatu hari sebuah berkas bernama penjualan_v3_final_bener.csv muncul di obrolan tim Toko Kopi Kita. Tidak ada keterangan: siapa pembuatnya, kapan diambil, kolom nilai itu rupiah atau ribu rupiah, dan apakah angkanya sudah termasuk pembatalan pesanan. Angka 42 yang kita bahas di chapter pertama kembali menghantui: data tanpa keterangan hanya setengah berharga. Keterangan yang menempel pada data tersebut — judul, sumber, tanggal, definisi kolom — adalah metadata: data tentang data. Chapter ini memetakan jenis-jenisnya dan melatih kita menyusun kamus data, dokumen kecil yang menyelamatkan setiap analis yang mewarisi dataset.

Data tentang Data #

Metadata menjawab pertanyaan-pertanyaan yang tidak bisa dijawab oleh data itu sendiri: dari mana data berasal, siapa penanggung jawabnya, kapan direkam, bagaimana kolomnya didefinisikan, dan siapa boleh mengaksesnya. Setiap dataset nyata selalu membawa metadata — sadar atau tidak. Berkas CSV membawa nama berkas dan waktu modifikasi; respons API membawa pembungkus JSON berisi created_at; tabel basis data menyimpan definisi kolom. Tugas kita bukan menciptakan metadata, melainkan merawatnya secara sengaja agar tidak tercecer.

Tiga Jenis Metadata #

Metadata lazim dikelompokkan menjadi tiga jenis sesuai perannya:

JenisIsiContoh pada Toko Kopi Kita
Deskriptifidentitas dan asal-usul datasetjudul “Penjualan cabang Bandung Januari 2026”, sumber “aplikasi kasir”, tanggal ekspor 2026-02-01, pembuat “Siti”
Strukturalbentuk dan definisi isilima kolom, kolom jumlah bertipe bilangan bulat, satuan cangkir
Administratifpengelolaan dan hak akseshanya manajer boleh membuka, disimpan 5 tahun, boleh dibagikan tanpa nama pelanggan

Ketiganya bekerja bersama: metadata deskriptif membuat dataset bisa ditemukan kembali, metadata struktural membuatnya bisa dibaca dengan benar, dan metadata administratif membuatnya dipakai secara sah. Dataset yang hanya punya metadata struktural (misalnya definisi kolom) tetap berbahaya diwariskan — pewaris tidak tahu boleh atau tidak data itu dibagikan ke mitra.

Kamus Data #

Jenis metadata struktural yang paling sering kita tulis sebagai dokumen tersendiri adalah kamus data (data dictionary): tabel yang mendefinisikan setiap kolom — nama, tipe, satuan, dan maknanya. Kamus data untuk tabel transaksi Toko Kopi Kita tampak seperti ini:

KolomTipeSatuanDeskripsi
id_transaksiteks—nomor unik dari aplikasi kasir
tanggaltanggal—tanggal transaksi berlangsung
produkteks—nama menu persis seperti di menu
jumlahbilangan bulatcangkirbanyaknya menu yang dibeli
total_rupiahbilangan bulatrupiahnilai akhir setelah pajak

Dua kolom terakhir mencontohkan aturan emasnya: satuan ditulis eksplisit. Nama kolom total_rupiah yang kita pakai berulang di sepanjang Course adalah bentuk paling ringkas dari kamus data — satuan menempel langsung pada nama kolom sehingga tidak ada ruang salah tafsir.

Membangun Kamus Data Otomatis #

Tiga komponen kamus data — nama kolom, tipe, dan contoh nilai — bisa dirakit otomatis dari DataFrame. Dua komponen sisanya, satuan dan makna, adalah tulisan tangan manusia. Kita gabungkan keduanya:

python
import pandas as pd

transaksi = pd.DataFrame({
    "id_transaksi": ["T001", "T002", "T003"],
    "tanggal": pd.to_datetime(["2026-01-15", "2026-01-15", "2026-01-16"]),
    "produk": ["kopi susu", "teh tawar", "matcha latte"],
    "jumlah": [2, 1, 3],
    "total_rupiah": [48000, 20000, 84000],
})

deskripsi = {
    "id_transaksi": "nomor unik dari aplikasi kasir",
    "tanggal": "tanggal transaksi berlangsung",
    "produk": "nama menu persis seperti di menu",
    "jumlah": "banyaknya menu yang dibeli (cangkir)",
    "total_rupiah": "nilai akhir setelah pajak (rupiah)",
}

print("Kamus data otomatis:")
for kolom in transaksi.columns:
    tipe = str(transaksi[kolom].dtype)
    contoh = transaksi[kolom].astype(str).iloc[0]
    print(f"- {kolom:14} | {tipe:14} | contoh: {contoh:10} | {deskripsi[kolom]}")

Output yang Dihasilkan:

text
Kamus data otomatis:
- id_transaksi   | object         | contoh: T001       | nomor unik dari aplikasi kasir
- tanggal        | datetime64[ns] | contoh: 2026-01-15 | tanggal transaksi berlangsung
- produk         | object         | contoh: kopi susu  | nama menu persis seperti di menu
- jumlah         | int64          | contoh: 2          | banyaknya menu yang dibeli (cangkir)
- total_rupiah   | int64          | contoh: 48000      | nilai akhir setelah pajak (rupiah)

Mari kita telaah baris-baris kode di atas:

  1. transaksi.dtypes (diakses lewat transaksi[kolom].dtype) menyumbang tipe teknis tiap kolom — keluaran ini jujur tetapi terbatas: pandas tahu jumlah bertipe int64, tidak tahu bahwa satuannya cangkir.
  2. .astype(str).iloc[0] mengambil satu nilai pertama sebagai contoh. Contoh nilai sering kali lebih cepat dipahami pembaca daripada definisi — lihat 2026-01-15 dan bentuk tanggalnya langsung jelas.
  3. Kamus deskripsi adalah kontribusi manusia: asal nilai, satuan, dan aturan mainnya. Bagian inilah yang membuat kamus data bernilai bagi orang yang mewarisi dataset tiga bulan kemudian.

Rangkuman #

  • Metadata adalah data tentang data: identitas, asal-usul, struktur, dan ketentuan aksesnya.
  • Tiga jenisnya — deskriptif, struktural, administratif — menjawab “apa dan dari mana”, “bagaimana isinya”, dan “siapa boleh memakainya”.
  • Kamus data mendokumentasikan setiap kolom: nama, tipe, satuan, dan makna; nama, tipe, dan contoh bisa dirakit otomatis, makna tetap tulisan tangan manusia.
  • Satuan yang menempel pada nama kolom adalah bentuk kamus data paling ringkas dan paling sering kita pakai.

Metadata yang lengkap membuat dataset bisa dibaca dengan benar — tetapi dibaca benar saja belum cukup untuk dipercaya. Isinya sendiri masih harus diuji: apakah akurat, lengkap, konsisten, dan bebas duplikat. Pengujian itulah pokok chapter penutup section ini, Kualitas Data .

Referensi #

  1. pandas — User Guide
  2. pandas — Intro Tutorials