Jenis dan Bentuk Data

Data terstruktur dan tidak terstruktur, satuan pengukuran, serta granularitas baris.

Daftar isi

Data yang belum dipahami bentuknya hampir selalu diproses dengan cara yang keliru. Topik ini memperkenalkan tiga kacamata yang dipakai sepanjang jalur untuk memahami data, yaitu tingkat strukturnya, tipe variabelnya, dan granularitas barisnya beserta satuannya. Setelah membacanya, sebuah tabel dapat digambarkan secara ringkas dalam satu kalimat, misalnya “satu baris adalah satu jam pengukuran pada satu stasiun, dengan PM2.5 dalam mikrogram per meter kubik”.

Terstruktur, semi terstruktur, dan tidak terstruktur#

Tingkat struktur menentukan seberapa langsung data dapat dimuat ke dalam tabel. Data terstruktur memiliki baris dan kolom yang tetap, seperti tabel hasil pengukuran sensor. Data semi terstruktur membawa strukturnya di dalam isinya, seperti JSON yang kuncinya menyatakan arti setiap nilai, sehingga dapat diratakan menjadi tabel dengan sedikit keputusan tentang kolomnya. Data tidak terstruktur, seperti teks bebas atau gambar, tidak membawa tabel apa pun dan membutuhkan langkah ekstraksi tersendiri.

JenisContohJalur biasa menuju tabel
TerstrukturCSV hasil ekspor, tabel SQLLangsung dimuat
Semi terstrukturJSON dari API, log JSON LinesDiratakan dengan memilih kunci
Tidak terstrukturCatatan lapangan, foto, suaraDiekstrak lebih dahulu

Perbedaan ini menjelaskan mengapa modul akuisisi memperlakukan berkas, API, dan log secara terpisah, sebab tingkat strukturnya berbeda meski pertanyaan analisisnya sama. Data tidak terstruktur sengaja berada di luar lingkup jalur ini, karena ekstraksinya merupakan disiplin tersendiri.

Tipe variabel dan konsekuensinya#

Setiap kolom pada tabel membawa tipe variabel yang menentukan operasi yang sah dilakukan padanya. Empat kelompok yang dipakai sepanjang jalur ini adalah nominal, ordinal, interval, dan rasio. Kualitas udara yang diklasifikasikan menjadi Baik, Sedang, dan Tidak Sehat adalah ordinal karena ada urutan yang bermakna, sedangkan nama stasiun adalah nominal karena tidak ada urutan antarnya.

Skrip berikut memperlihatkan bagaimana pandas mencatat tipe tersebut pada tingkat teknis, sekaligus menjadi kebiasaan pemeriksaan pertama atas setiap tabel baru.

python bentuk_data.py
"""Mengenali tipe data kolom pada sebuah DataFrame."""
import pandas as pd

data = pd.DataFrame(
    {
        "stasiun": ["Stasiun A", "Stasiun B", "Stasiun A"],
        "waktu": pd.to_datetime(["2026-03-01", "2026-03-01", "2026-03-02"]),
        "pm25": [34.0, 41.5, 28.0],
        "jumlah_sensor": [4, 6, 4],
        "aktif": [True, True, False],
    }
)

print(data.dtypes)
print()
print(data.head(2).to_string(index=False))
text Keluaran
stasiun                  object
waktu            datetime64[ns]
pm25                    float64
jumlah_sensor             int64
aktif                      bool
dtype: object

  stasiun      waktu  pm25  jumlah_sensor  aktif
Stasiun A 2026-03-01  34.0              4   True
Stasiun B 2026-03-01  41.5              6   True

Keluaran tersebut memperlihatkan pemetaan yang perlu dihafalkan, yaitu teks menjadi object, waktu menjadi datetime64, bilangan pecahan menjadi float64, bilangan bulat menjadi int64, dan benar salah menjadi bool. Kolom pm25 yang tersimpan sebagai teks adalah temuan paling umum pada data nyata, dan mengubahnya menjadi numerik adalah pekerjaan pembersihan yang dibahas pada modul pembersihan.

Granularitas dan satuan#

Granularitas menyatakan apa yang diwakili satu baris, dan ini adalah pertanyaan pertama yang harus dijawab sebelum agregasi apa pun. Tabel pengukuran dengan satu baris per jam per stasiun tidak dapat dijumlahkan secara langsung dengan tabel yang satu barisnya per peristiwa pengukuran, meskipun kolomnya terlihat sama. Menjumlahkan nilai pada granularitas yang salah adalah kesalahan klasik yang menghasilkan angka tampak masuk akal tetapi tidak bermakna.

Satuan adalah pasangan dari granularitas. PM2.5 dilaporkan dalam mikrogram per meter kubik, suhu dalam derajat Celsius, dan kelembapan dalam persen, dan setiap pembanding antar tabel wajib menyatukan satuannya lebih dahulu. Kebiasaan yang baik adalah menaruh satuan pada nama kolom, misalnya suhu_c, sehingga salah baca satuan menjadi lebih sulit terjadi.

Granularitas juga menentukan level deduplikasi. Dua baris dengan nilai sama pada granularitas per jam per stasiun adalah duplikat yang mencurigakan, sedangkan pada granularitas per peristiwa keduanya dapat menjadi pengukuran yang sah. Pertanyaan “apa yang diwakili satu baris” selalu mendahului pertanyaan “apakah baris ini ganda”.

Kesalahan umum#

Kesalahan pertama adalah memperlakukan kolom teks yang berisi angka sebagai angka, sehingga pengurutan menjadi berdasarkan huruf dan perhitungan gagal. Pemeriksaan dtypes pada tabel baru menangkapnya dalam sepuluh detik.

Kesalahan kedua adalah mencampur granularitas dalam satu tabel, misalnya menambahkan baris ringkasan harian di bawah baris per jam. Ringkasan itu kelak ikut terhitung sebagai data, sehingga rata-ratanya jauh meleset. Ringkasan disimpan pada tabel lain, bukan pada tabel mentahnya.

Kesalahan ketiga adalah mengabaikan satuan saat menggabungkan sumber, misalnya menyatukan suhu Celsius dengan suhu Fahrenheit tanpa konversi. Rata-rata hasil gabungan tersebut masih terlihat wajar, dan itulah yang membuatnya berbahaya. Nama kolom yang membawa satuan adalah penangkalnya.

Ringkasan#

  • Tingkat struktur data, yaitu terstruktur, semi terstruktur, dan tidak terstruktur, menentukan jalur menuju tabel.
  • Tipe variabel, yaitu nominal, ordinal, interval, dan rasio, menentukan operasi yang sah, dan dtypes memeriksanya secara teknis.
  • Granularitas menyatakan apa yang diwakili satu baris dan selalu dijawab sebelum agregasi atau deduplikasi.
  • Satuan menyertai setiap ukuran, dan nama kolom seperti suhu_c menjadi penangkal salah baca.

Referensi#