Chapter sebelumnya menutup dengan keputusan mengumpulkan data primer, dan cara termurah untuk memulainya adalah secara manual: formulir kertas di meja kasir, lembar pengamatan di lapangan, atau tabel sederhana di aplikasi lembar kerja. Manual sering dipandang sebagai tahap yang harus segera ditinggalkan, padahal sebagian besar data primer di dunia nyata dimulai dari sana. Yang membedakan data manual yang layak analisis dari sekadar tumpukan catatan adalah tiga hal: formulir yang dirancang benar, pedoman entri yang konsisten, dan pemeriksaan kesalahan yang berjalan. Pada chapter ini kita membahas ketiganya, lalu menutup dengan skrip Python kecil yang memisahkan entri valid dari entri bermasalah.
Kapan Pencatatan Manual Masih Wajar #
Pencatatan manual wajar dipakai ketika volumenya kecil dan konteksnya menuntut kehadiran manusia. Tiga situasi berikut adalah contohnya di sekitar Toko Kopi Kita:
- Pengamatan lapangan — menghitung panjang antrean setiap jam sambil mencatat cuaca; sensor belum terpasang, tetapi pertanyaan sudah menunggu.
- Survei kecil — 30 sampai 50 responden yang mengisi formulir kepuasan; hasilnya cukup untuk memberi gambaran awal.
- Uji coba formulir — mencoba draf pertanyaan kepada beberapa pelanggan sebelum formulir disebarkan luas, supaya pertanyaan yang membingungkan sempat diperbaiki.
Pada volume seperti itu, biaya membangun sistem otomatis jauh melebihi biaya mencentangi kertas. Manual menjadi tidak wajar ketika pencatatan mencapai ratusan baris per hari atau ketika data harus tersedia seketika — pada titik itu kesalahan ketik menumpuk lebih cepat daripada kemampuan memeriksanya, dan otomatisasi mulai bernilai.
Merancang Formulir yang Ramah Analisis #
Aturan pertama merancang formulir: satu pertanyaan menyimpan satu data. Kolom seperti “Nama dan pesanan” memang hemat kertas, tetapi memaksa kita memecah isinya kembali sebelum bisa dianalisis. Pisahkan menjadi kolom nama dan kolom produk sejak awal, maka pekerjaan pembersihan berkurang drastis.
Aturan kedua: pilih antara pilihan terkunci dan isian bebas secara sadar, bukan karena kebiasaan.
| Sifat | Pilihan terkunci | Isian bebas |
|---|---|---|
| Wujud | Daftar pilihan atau drop-down | Kolom teks kosong |
| Kesalahan entri | Rendah — pengisi tinggal memilih | Tinggi — ejaan dan format bervariasi |
| Kesiapan analisis | Langsung dapat dikelompokkan | Perlu pembersihan teks lebih dulu |
| Cocok untuk | Jawaban yang sudah kita daftar | Jawaban yang belum terduga: saran, keluhan |
Praktik yang baik memakai keduanya: pertanyaan inti (produk, rating, frekuensi kunjungan) dikunci pilihannya, lalu satu kolom isian bebas diletakkan di akhir untuk hal-hal yang belum kita bayangkan. Formulir kepuasan Toko Kopi Kita, misalnya, memakai drop-down produk plus satu kolom “saran” — hasil kolom saran sering mengejutkan, dan itulah gunanya.
Pedoman Entri: Format Tanggal dan Satuan #
Formulir yang baik masih dapat dirusak oleh pengentri yang berbeda kebiasaan. Karena itu setiap kegiatan pencatatan perlu satu halaman pedoman singkat yang memuat tiga hal:
- Format tanggal — tetapkan satu format, paling aman
YYYY-MM-DD(misalnya2026-01-20), karena format ini terurut benar sebagai teks. - Satuan eksplisit — tulis satuan pada nama kolom:
jumlah_cangkir,berat_gram; jangan biarkan angka 2 berarti “gelas” bagi satu pengentri dan “liter” bagi pengentri lain. - Daftar nilai yang sah — nama produk ditulis persis seperti pada menu, sehingga “kopi susu” tidak menjadi “kopsus” di tangan pengentri berikutnya.
Mencegah Kesalahan Sejak Entrinya #
Pencegahan paling murah terjadi pada saat entri, bukan setelahnya. Tiga lapisannya berurut dari yang termurah:
- Kunci pilihan di alat entri — drop-down pada aplikasi formulir atau lembar kerja menghapus seluruh kelas kesalahan ejaan sejak awal.
- Validasi bentuk — kolom tanggal menolak teks selain format yang ditetapkan; kolom angka menolak huruf; kolom wajib menolak kosong.
- Double entry ringkas — untuk data yang benar-benar kritis, dua orang mengentri berkas yang sama, lalu program mencocokkan keduanya; baris yang berbeda diperiksa ulang bersama.
Ketiga lapis tersebut tetap membiarkan sebagian kesalahan lolos — salah pilih menu yang bukan maksud hati, misalnya, atau angka yang sah tetapi mustahil seperti 30 cangkir untuk satu pesanan. Lapis terakhir karena itu berjalan setelah data terkumpul, dan Python cocok mengerjakannya.
Memvalidasi Entri Manual dengan Python #
Contoh berikut memeriksa hasil pengamatan pesanan yang dientri manual sebagai list of dictionary — bentuk yang dibahas pada tutorial struktur data Python . Setiap baris diuji tiga hal: format tanggal, rentang jumlah, dan keanggotaan produk pada menu. Hasilnya dua kelompok: entri yang siap dianalisis dan entri yang perlu dikembalikan kepada pengentrinya.
from datetime import datetime
MENU = {"kopi susu", "americano", "matcha latte", "teh tawar"}
# Entri manual hasil pengamatan pesanan selama tiga hari.
entri = [
{"tanggal": "2026-01-20", "produk": "kopi susu", "jumlah": 3},
{"tanggal": "2026-01-20", "produk": "matcha latte", "jumlah": 2},
{"tanggal": "2026-21-01", "produk": "teh tawar", "jumlah": 1},
{"tanggal": "2026-01-21", "produk": "kopi susu", "jumlah": 30},
{"tanggal": "2026-01-21", "produk": "es kopi", "jumlah": 1},
{"tanggal": "2026-01-22", "produk": "americano", "jumlah": 2},
]
def periksa_entri(baris):
"""Kembalikan daftar masalah yang ditemukan pada satu baris entri."""
masalah = []
try:
datetime.strptime(baris["tanggal"], "%Y-%m-%d")
except ValueError:
masalah.append("tanggal tidak berformat YYYY-MM-DD")
if not 1 <= baris["jumlah"] <= 20:
masalah.append("jumlah di luar rentang wajar 1-20")
if baris["produk"] not in MENU:
masalah.append("produk tidak ada di daftar menu")
return masalah
valid, bermasalah = [], []
for baris in entri:
masalah = periksa_entri(baris)
if masalah:
bermasalah.append((baris, masalah))
else:
valid.append(baris)
print(f"Baris valid : {len(valid)}")
print(f"Baris bermasalah : {len(bermasalah)}")
print()
for baris, masalah in bermasalah:
print(f"- {baris}")
for satu_masalah in masalah:
print(f" masalah: {satu_masalah}")Output yang Dihasilkan:
Baris valid : 3
Baris bermasalah : 3
- {'tanggal': '2026-21-01', 'produk': 'teh tawar', 'jumlah': 1}
masalah: tanggal tidak berformat YYYY-MM-DD
- {'tanggal': '2026-01-21', 'produk': 'kopi susu', 'jumlah': 30}
masalah: jumlah di luar rentang wajar 1-20
- {'tanggal': '2026-01-21', 'produk': 'es kopi', 'jumlah': 1}
masalah: produk tidak ada di daftar menuMari kita telaah baris-baris pentingnya:
- Baris 3 (
MENU):setberisi nama produk resmi menjadi acuan keanggotaan — satu tempat yang harus diperbarui bila menu bertambah. - Baris 6-13 (
entri): setiap pengamatan menjadi satu dictionary dengan tiga kunci. Tiga baris di dalamnya sengaja memuat kesalahan yang paling sering terjadi di lapangan: tanggal terbalik, angka tidak wajar, dan produk di luar menu. - Baris 18-21 (
try/except):datetime.strptime()mencoba mengurai tanggal; ketika formatnya salah,ValueErrorditangkap dan diubah menjadi pesan yang bisa dibaca pengentri — bukan traceback mentah. - Baris 22-25 (dua pemeriksaan):
1 <= jumlah <= 20menguji rentang nilai yang masuk akal untuk satu pesanan, danproduk not in MENUmenguji keanggotaan pada daftar nilai sah. - Baris 28-34 (pemisahan kelompok): hasil pemeriksaan memilah baris ke
validdanbermasalah; hanya kelompok pertama yang lanjut ke analisis.
Perhatikan bahwa es kopi pada baris bermasalah mungkin bukan salah ketik — barangkali pelanggan sungguh memesan minuman yang belum tercatat di menu. Pemeriksaan seperti ini bukan hakim, melainkan penyaring: baris yang tertahan perlu ditanyakan balik kepada pengentri sebelum dihapus atau diperbaiki. Dengan begitu, kelompok valid benar-benar bersih tanpa kehilangan informasi.
Rangkuman #
- Pencatatan manual wajar untuk data kecil, pengamatan lapangan, dan uji coba formulir; otomatisasi mulai bernilai saat volume dan kecepatan naik.
- Formulir yang ramah analisis mengikuti dua aturan: satu pertanyaan satu data, serta pilihan terkunci untuk jawaban yang bisa didaftar dan isian bebas untuk yang belum terduga.
- Pedoman entri menjaga konsistensi format tanggal, satuan, dan daftar nilai sah di antara pengentri yang berbeda.
- Pencegahan kesalahan berlapis: drop-down, validasi bentuk, double entry, dan pemeriksaan akhir dengan kode — baris bermasalah dikembalikan ke pengentri, bukan dihapus diam-diam.
Data manual yang telah tervalidasi biasanya disimpan dan dibagikan sebagai berkas — dan format pertukaran paling umum untuk data tabular adalah CSV. Pada chapter berikutnya, Membaca File CSV , kita memuat berkas semacam itu ke pandas dan menangani jebakan pemisah, nilai kosong, hingga encoding.