Menyajikan Data dengan Rapi di Python: zip, f-string, dan tabulate

Python untuk Sains


Anda sudah bisa menghitung banyak data dengan for loop dan fungsi. Pertanyaan berikutnya yang sering muncul di praktikum: bagaimana menampilkan hasilnya sebagai tabel yang rapi? Artikel ini menjawabnya secara bertahap — mulai dari fitur bawaan Python, lalu (opsional) library tabulate — sekaligus mengupas satu pesan error yang sangat sering dijumpai pemula.

Masalah: Dua List, Ingin Jadi Tabel

Misalkan kita punya daftar suhu dalam Celsius dan hasil konversinya ke Kelvin:

suhu_c = [25, 100, 250, 350]
suhu_k = [t + 273.15 for t in suhu_c]

print(suhu_k)
# [298.15, 373.15, 523.15, 623.15]

Keduanya adalah dua list terpisah — seperti dua kolom. Tujuan kita: menampilkannya berdampingan sebagai baris-baris tabel. Bagaimana memasangkan elemen yang bersesuaian?

zip(): Memasangkan Elemen

Fungsi zip() memasangkan elemen ke-1 dari tiap list, lalu ke-2, dan seterusnya.

data = list(zip(suhu_c, suhu_k))
print(data)
# [(25, 298.15), (100, 373.15), (250, 523.15), (350, 623.15)]

Hasilnya sebuah list berisi tuple. Kini setiap tuple mewakili satu baris tabel: (Celsius, Kelvin). Data ini siap ditampilkan baris demi baris.

Cara Bawaan: for + zip + f-string

Untuk pemula, cara terbaik menampilkan tabel adalah dengan fitur bawaan Python saja — tanpa memasang apa pun. Gabungkan for, zip, dan f-string dengan pengaturan lebar kolom.

print(f"{'Suhu (°C)':<12}{'Suhu (K)':<12}")

for c, k in zip(suhu_c, suhu_k):
    print(f"{c:<12}{k:<12.2f}")

Keluarannya berupa kolom yang lurus:

Suhu (°C)   Suhu (K)
25          298.15
100         373.15
250         523.15
350         623.15

Bagian {c:<12} memberi lebar kolom 12 karakter dengan perataan kiri, sehingga kolom tersusun rapi. Sementara {k:<12.2f} sekaligus membulatkan ke 2 angka desimal. Sekali jalan, teknik ini melatih empat konsep dasar: for, zip, f-string, dan string formatting.

String Formatting: Perataan & Lebar

Pola umum format di dalam f-string adalah {nilai:[perataan][lebar][.presisi][tipe]}. Berikut yang paling sering dipakai:

FormatArtiContoh hasil
{x:<8}rata kiri, lebar 8[42      ]
{x:>8}rata kanan, lebar 8[      42]
{x:^8}rata tengah, lebar 8[   42   ]
{x:.2f}2 angka desimal3.14

Memasang Library dengan pip

Kadang kita ingin memakai library pihak ketiga (di luar Python bawaan). Library seperti itu harus dipasang lebih dulu memakai pip.

# di terminal / Anaconda Prompt:
pip install tabulate

# alternatif dengan conda:
conda install -c conda-forge tabulate

# di dalam sel Jupyter, pakai tanda seru:
!pip install tabulate

pip install <nama> mengunduh paket dari PyPI (gudang paket Python) dan cukup dijalankan sekali per environment. Perhatikan: perintah pip dijalankan di terminal/Anaconda Prompt, bukan di dalam berkas .py biasa.

tabulate: Tabel Instan

Setelah terpasang, tabulate membuat tabel rapi secara otomatis. Kuncinya: data yang diberikan harus berupa baris (list of tuple) — dan di sinilah zip() berguna.

from tabulate import tabulate

data = list(zip(suhu_c, suhu_k))
headers = ["Suhu (°C)", "Suhu (K)"]

print(tabulate(data, headers=headers, tablefmt="fancy_grid"))

Keluarannya:

╒═════════════╤════════════╕
│   Suhu (°C) │   Suhu (K) │
╞═════════════╪════════════╡
│          25 │     298.15 │
├─────────────┼────────────┤
│         100 │     373.15 │
├─────────────┼────────────┤
│         250 │     523.15 │
├─────────────┼────────────┤
│         350 │     623.15 │
╘═════════════╧════════════╛

Parameter tablefmt mengatur gaya bingkai — selain fancy_grid, ada grid, github, plain, dan lainnya.

Debugging: 'int' object is not iterable

Ini kesalahan yang hampir semua pemula temui. Perhatikan versi yang salah dan yang benar:

# SALAH: melewatkan suhu_c (isinya bilangan int)
print(tabulate(suhu_c, headers=headers, tablefmt="fancy_grid"))

TypeError: 'int' object is not iterable

# BENAR: melewatkan data (hasil zip)
print(tabulate(data, headers=headers, tablefmt="fancy_grid"))

Mengapa error muncul? tabulate() mengharap setiap baris berupa iterable (list atau tuple). Namun suhu_c berisi bilangan int seperti 25 dan 100 — dan sebuah int bukan iterable. Solusinya: lewatkan data (hasil zip yang berupa list of tuple), bukan suhu_c.

Biasakan membaca pesan error sampai selesai. Python biasanya menyebutkan jenis error (TypeError) dan penyebabnya ('int' object is not iterable) secara cukup gamblang — itu petunjuk paling cepat untuk memperbaiki kode.

Bawaan Dulu, Library Kemudian

Karena ini kursus Python untuk mahasiswa sains dan teknik, sebaiknya tabulate (dan pandas) tidak diperkenalkan di minggu-minggu awal — keduanya menambah dependensi yang harus dipasang.

Prinsipnya: kuasai dulu fitur bawaan Python (for, zip, f-string, string formatting) untuk menyajikan data. Setelah mahasiswa nyaman dengan konsep dasar ini, barulah perkenalkan library seperti tabulate atau pandas sebagai alat yang mempermudah — bukan pengganti pemahaman.

Penutup

Menyajikan data dengan rapi ternyata bisa dilakukan hanya dengan fitur bawaan Python. Ketika kebutuhan meningkat, library seperti tabulate siap membantu — asalkan kita paham cara menyiapkan datanya (ingat zip!) dan cara membaca pesan error.

Ingin mengulang dasar-dasar loop dan fungsinya? Baca artikel pendamping: Fungsi, For Loop, dan Kondisional di Python untuk Sains. Untuk soal format angka & satuan, lihat pula: Angka Penting di Python: Menampilkan Hasil Hitung dengan f-string.

Catatan: seluruh contoh kode ditulis untuk Python 3 seperti spyder di Anaconda Navigator. Contoh tabulate memerlukan pemasangan paket terlebih dahulu; contoh lainnya berjalan tanpa library tambahan.

Ditulis untuk InspiraSains — belajar sains dan pemrograman secara gratis dan terbuka.

File Download: --File Download PDF--

Posting Komentar

Lebih baru Lebih lama

Formulir Kontak