Data Toko Kopi Kita tidak hanya berwujud satu tabel transaksi. Ada rekap cangkir terjual per hari, ada susunan menu bertingkat dari kategori sampai harga, ada pola pembelian yang menghubungkan pelanggan dengan produk, dan ada sebaran penjualan antar wilayah kota. Wujud-wujud tersebut adalah struktur data — dan struktur menentukan alat: pandas mengelola tabel, analisis deret waktu menuntut index tanggal, dan pola relasi antar pembeli-produk dianalisis sebagai jaringan. Chapter ini memetakan lima struktur yang paling sering dijumpai, masing-masing dengan contoh operasional Toko Kopi Kita.
Mengapa Struktur Menentukan Alat #
Struktur data adalah cara nilai-nilai tersusun dan saling berhubungan. Pilih struktur yang tepat, dan operasi analisis tersedia langsung; pilih yang keliru, dan kita terpaksa melipat-lipat data setiap kali butuh menjawab pertanyaan baru. Lima struktur berikut mencakup mayoritas kebutuhan:
| Struktur | Wujud | Contoh di Toko Kopi Kita | Ciri khas pertanyaannya |
|---|---|---|---|
| Tabular | baris × kolom | tabel transaksi | “berapa rata-rata nilai transaksi?” |
| Deret waktu | nilai per titik waktu | cangkir terjual per hari | “bagaimana tren pekan ini?” |
| Hierarkis | induk → anak | kategori menu → menu → harga | “berapa total omzet kategori minuman panas?” |
| Jaringan | simpul dan sisi | pelanggan ↔ produk yang dibeli | “produk mana sering dibeli bersama kopi susu?” |
| Spasial | titik atau wilayah | penjualan per kecamatan | “wilayah mana yang paling sepi?” |
Struktur Tabular dan Deret Waktu #
Dua struktur pertama adalah pasangan paling akrab sehari-hari. Kita bangun keduanya sekaligus supaya bedanya terlihat — tabel transaksi mencatat peristiwa satu per satu, sedangkan deret waktu meringkas menjadi satu nilai per titik waktu:
import pandas as pd
# Struktur tabular: setiap baris satu observasi
transaksi = pd.DataFrame({
"waktu": ["2026-01-15 08:12", "2026-01-15 09:41", "2026-01-15 10:05"],
"produk": ["kopi susu", "teh tawar", "kopi susu"],
"jumlah": [2, 1, 1],
})
print("Tabular:")
print(transaksi)
print()
# Struktur deret waktu: satu pengukuran per titik waktu
harian = pd.DataFrame({
"tanggal": pd.to_datetime(["2026-01-12", "2026-01-13", "2026-01-14", "2026-01-15"]),
"cangkir_terjual": [38, 45, 41, 52],
})
print("Deret waktu:")
print(harian)
print()
print(harian.dtypes)Output yang Dihasilkan:
Tabular:
waktu produk jumlah
0 2026-01-15 08:12 kopi susu 2
1 2026-01-15 09:41 teh tawar 1
2 2026-01-15 10:05 kopi susu 1
Deret waktu:
tanggal cangkir_terjual
0 2026-01-12 38
1 2026-01-13 45
2 2026-01-14 41
3 2026-01-15 52
tanggal datetime64[ns]
cangkir_terjual int64
dtype: objectDua hal patut dicermati dari keluaran di atas. Pertama, wujud deret waktu di memori tetap sebuah DataFrame — bedanya pada makna: satu baris mewakili satu titik waktu berurutan, sehingga analisis seperti pembandingan hari-ke-hari dan tren jadi wajar. Kedua, pd.to_datetime() mengubah teks menjadi tipe datetime64[ns]; tanpa langkah ini, kolom tanggal hanya teks yang tidak bisa diurutkan secara kronologis dengan benar.
Struktur Hierarkis dan Jaringan #
Menu Toko Kopi Kita tersusun bertingkat: kategori menampung menu, menu memiliki harga. Struktur hierarkis seperti ini paling alami direkam sebagai dictionary bertingkat. Sementara itu, relasi “pelanggan membeli produk” membentuk struktur jaringan (graph): pelanggan dan produk adalah simpul, pembelian adalah sisi penghubung — biasanya disimpan sebagai edge list, tabel sederhana berisi pasangan yang terhubung:
import pandas as pd
# Struktur hierarkis: kategori -> menu -> harga
menu = {
"minuman panas": {"kopi susu": 24000, "teh tawar": 20000},
"minuman dingin": {"matcha latte": 28000},
}
for kategori, isi in menu.items():
for nama, harga in isi.items():
print(f"{kategori:16} -> {nama:14} Rp{harga}")
print()
# Struktur jaringan sebagai daftar sisi: pelanggan <-> produk
sisi = pd.DataFrame({
"pelanggan": ["Budi", "Budi", "Siti", "Dewi"],
"produk": ["kopi susu", "roti bakar", "teh tawar", "kopi susu"],
"frekuensi": [3, 1, 2, 2],
})
print(sisi)
print()
peminat = sisi.loc[sisi["produk"] == "kopi susu", "pelanggan"].tolist()
print("Pelanggan yang membeli kopi susu:", peminat)Output yang Dihasilkan:
minuman panas -> kopi susu Rp24000
minuman panas -> teh tawar Rp20000
minuman dingin -> matcha latte Rp28000
pelanggan produk frekuensi
0 Budi kopi susu 3
1 Budi roti bakar 1
2 Siti teh tawar 2
3 Dewi kopi susu 2
Pelanggan yang membeli kopi susu: ['Budi', 'Dewi']Perhatikan bahwa daftar sisi tetap berupa tabel — jaringan tidak menuntut perangkat baru untuk menyimpannya, hanya cara pandang yang berbeda: satu baris menyimpan satu hubungan, bukan satu objek. Dari empat hubungan di atas kita bisa menjawab pertanyaan rekomendasi sederhana seperti “pelanggan mana yang berpotensi tertarik promo kopi susu”, dan pada tingkat lanjut pola seperti ini dianalisis dengan alat khusus jaringan maupun market basket analysis.
Struktur Spasial #
Struktur kelima menautkan data dengan lokasi: penjualan per kecamatan Bandung, titik koordinat kurir pesanan antar, atau cuaca per kota untuk memodelkan permintaan minuman dingin. Analisis spasial menuntut perhatian tambahan seperti sistem proyeksi peta dan tingkat ketelitian wilayah (kecamatan, kota, provinsi), dan di Python ditangani pustaka khusus seperti GeoPandas. Untuk Course ini cukup kita kenali bentuknya: tabel spasial pada dasarnya tabel biasa ditambah kolom lokasi — misalnya kota — yang menjadi kunci penggabungan dengan data geografis.
Rangkuman #
- Lima struktur utama: tabular, deret waktu, hierarkis, jaringan, dan spasial; masing-masing menjawab jenis pertanyaan yang berbeda.
- Struktur menentukan alat dan operasi: pandas untuk tabel, tipe
datetime64untuk deret waktu,dictionarybertingkat untuk hierarki, dan edge list untuk jaringan. - Struktur adalah cara pandang: satu data mentah bisa diproyeksikan menjadi beberapa struktur sesuai kebutuhan analisis.
Dari kelima struktur tersebut, tabular adalah yang paling sering kita jumpai sekaligus fondasi hampir seluruh alat analisis. Chapter berikutnya membedah anatominya sampai ke istilah setiap bagiannya: Data Tabular .