Tabel ulasan pelanggan Toko Kopi Kita menyimpan dua kolom teks yang wajahnya mirip: menu favorit dan rating kepuasan. Keduanya berisi kata, tetapi hakikatnya berbeda — daftar menu tidak punya urutan, sedangkan rating berjenjang dari kecewa sampai sangat puas. Salah memperlakukan perbedaan tersebut, dan statistik kita mulai menghasilkan angka yang tampak meyakinkan padahal kosong makna. Chapter ini membedah dua keluarga besar data menurut sifatnya — kualitatif dan kuantitatif — beserta subjenisnya, lalu menunjukkan konsekuensi nyatanya pada operasi statistik yang sah.

Data Kualitatif: Kategori dan Label #

Data kualitatif (categorical) merekam kategori, bukan besaran. Keluarga ini terbagi dua subjenis:

SubjenisCiriContoh di Toko Kopi KitaContoh lain
Nominalkategori tanpa urutanmenu favorit, metode pembayaran, kota cabangwarna gelas, jenis kelamin pelanggan
Ordinalkategori berurutanrating: kecewa → cukup → puas → sangat puasukuran cup S/M/L, tingkat peringatan cuaca

Pembeda keduanya sederhana: coba ganti urutan kategorinya. Menu favorit yang diurutkan ulang tetap masuk akal karena memang tidak ada urutan bawaan; rating yang diurutkan “puas → kecewa → sangat puas” langsung terasa keliru karena urutannya menyimpan makna.

Data Kuantitatif: Hasil Menghitung dan Mengukur #

Data kuantitatif merekam besaran dalam bilangan dan terbagi dua subjenis:

SubjenisCiriContoh di Toko Kopi KitaContoh lain
Diskrithasil menghitung, bilangan bulatbanyak cangkir per transaksi, jumlah pelangganjumlah hari hujan per bulan
Kontinuhasil mengukur, bisa pecahanberat biji kopi (kg), volume minuman (ml)suhu kota (°C), tinggi badan (cm)

Ciri cepatnya: data diskrit lahir dari menghitung benda utuh sehingga nilai antaranya tidak ada (tidak ada 1,5 cangkir), sedangkan data kontinu lahir dari alat ukur yang selalu bisa lebih presisi (0,25 kg bisa diukur ulang menjadi 0,253 kg).

Konsekuensi Praktis: Operasi yang Sah #

Jenis data menentukan operasi statistik yang sah — bukan sekadar bisa dijalankan, tetapi memang bermakna. Tabel berikut menjadi rujukan cepat kita:

JenisOperasi sahOperasi tidak sahUkuran pemusatan
Nominalmenghitung frekuensi, menyamakan, membedakanurutan, selisih, rata-ratamodus
Ordinalsemuanya + mengurutkan, membandingkan urutanselisih antar jenjang dianggap seragammodus, median
Diskritsemuanya + menjumlah, rata-rata—modus, median, rata-rata
Kontinusemuanya—median, rata-rata

Perhatikan baris ordinal: median sah karena hanya memakai urutan, sedangkan rata-rata menuntut selisih antar jenjang yang seragam — asumsi yang tidak otomatis benar. Jarak “kecewa ke cukup” tidak dijamin sama panjang dengan “puas ke sangat puas”.

Praktik dengan pandas: Modus, Rata-rata, dan Jebakannya #

Kita rakit tabel ulasan lima pelanggan lengkap dengan kolom dari keempat subjenis, lalu terapkan operasi yang tepat dan satu operasi yang sengaja keliru:

python
import pandas as pd

ulasan = pd.DataFrame({
    "pelanggan": ["Budi", "Siti", "Dewi", "Rani", "Agus"],
    "menu_favorit": ["kopi susu", "teh tawar", "kopi susu", "matcha latte", "kopi susu"],
    "rating": ["puas", "cukup", "puas", "kecewa", "puas"],
    "kode_menu": [1, 3, 1, 2, 1],
    "cangkir": [2, 1, 3, 1, 2],
    "berat_biji_kg": [0.25, 0.10, 0.50, 0.05, 0.30],
})

print("Frekuensi menu favorit:")
print(ulasan["menu_favorit"].value_counts())
print()
print("Modus menu favorit :", ulasan["menu_favorit"].mode().tolist())
print("Rata-rata cangkir  :", ulasan["cangkir"].mean())
print("Rata-rata berat biji:", ulasan["berat_biji_kg"].mean(), "kg")
print("Rata-rata kode menu:", ulasan["kode_menu"].mean(), "(angka tanpa makna!)")

Output yang Dihasilkan:

text
Frekuensi menu favorit:
menu_favorit
kopi susu       3
teh tawar       1
matcha latte    1
Name: count, dtype: int64

Modus menu favorit : ['kopi susu']
Rata-rata cangkir  : 1.8
Rata-rata berat biji: 0.24 kg
Rata-rata kode menu: 1.6 (angka tanpa makna!)

Mari kita telaah hasil di atas baris demi baris:

  1. value_counts() menghitung frekuensi tiap kategori — operasi paling dasar yang sah untuk data nominal. Hasilnya diurutkan dari yang tersering: kopi susu tiga kali.
  2. mode() mengembalikan kategori tersering sebagai list (bisa seri), sehingga ['kopi susu'] adalah jawaban yang tepat untuk “menu apa yang paling digemari”.
  3. cangkir.mean() dan berat_biji_kg.mean() sah karena keduanya kuantitatif: 1,8 cangkir rata-rata per ulasan dan 0,24 kg rata-rata pembelian biji.
  4. kode_menu.mean() menghasilkan 1,6 — kode yang tidak merujuk menu apa pun. Angka ini sah secara komputasi, kosong secara makna, karena kode menu bersifat nominal.

Rangkuman #

  • Data kualitatif terbagi nominal (tanpa urutan) dan ordinal (berurutan); data kuantitatif terbagi diskrit (hasil menghitung) dan kontinu (hasil mengukur).
  • Setiap jenis memiliki operasi statistik yang sah: frekuensi dan modus untuk nominal, ditambah median untuk ordinal, ditambah rata-rata untuk kuantitatif.
  • Kolom angka belum tentu kuantitatif — kode angka pada kategori nominal adalah jebakan yang paling sering menjalar ke laporan keliru.

Subjenis nominal dan ordinal di atas sebenarnya adalah dua dari empat anak tangga yang lebih lengkap: nominal, ordinal, interval, dan rasio. Empat anak tangga itu — disebut skala pengukuran — menentukan dengan lebih presisi operasi apa saja yang boleh kita lakukan. Kita naiki satu per satu pada chapter berikutnya, Skala Pengukuran .

Referensi #

  1. pandas — User Guide
  2. Python Docs — Statistics