- Great Tables adalah paket pembuatan tabel yang berupaya menghidupkan kembali daya ekspresif yang cermat dari tabel cetak pertengahan abad ke-20, sambil tetap menjaga alur analisis data di dalam kode Python
- Tabel bukan sekadar kisi baris dan kolom, melainkan format penyajian informasi yang memudahkan pencarian dan perbandingan nilai melalui urutan kolom, label, dan garis pemisah
- Dari lempeng tanah liat Sumeria kuno hingga Manual of Tabular Presentation, tabel berkembang bersama dalam hal kepadatan informasi dan format, tetapi spreadsheet awal kurang ekspresif dibandingkan kemudahan perhitungannya
- Great Tables membagi tabel menjadi 6 komponen dan memisahkan struktur, pemformatan, serta styling melalui rangkaian API
tab_*,fmt_*, danopt_*() - Paket ini berfokus pada peningkatan kualitas publikasi dan presentasi tabel ringkasan statis untuk makalah, buku, dan laporan, bukan eksplorasi interaktif berskala besar
Dilema pembuatan tabel yang ingin dipecahkan Great Tables
- Tabel penting pada tahap akhir penyajian informasi seperti plot, dan perancangan tabel yang efektif memiliki ketelitian dan nuansa yang lebih besar daripada yang diperkirakan
- Saat ini, pekerja data biasanya harus berkompromi di antara dua pilihan
- Menyalin data ke alat seperti Excel lalu membuat ulang tabel
- Menampilkan tabel yang belum dipoles apa adanya
- Great Tables adalah paket yang berupaya memecahkan dilema ini dengan antarmuka berbasis kode Python
- Tujuannya adalah membuat tabel yang ekspresif sambil menangani pengumpulan data, analisis, hingga pembuatan tabel ringkasan di dalam Python
Definisi dasar tabel dan elemen keterbacaan
- Tabel dapat diringkas dengan dua aturan dasar
- Data direpresentasikan dalam kolom dan baris
- Data terutama direpresentasikan sebagai teks
- Tabel contoh menempatkan orang sebagai baris, dan karakteristik seperti nama, alamat, kota, kode pos, tanggal lahir, tinggi badan, dan berat badan sebagai kolom
- Susunan seperti ini memudahkan pencarian nilai individual atau perbandingan lintas baris dan kolom
- Garis horizontal di antara baris bukan syarat wajib, tetapi berfungsi sebagai penguat untuk membedakan setiap baris secara visual
- Urutan kolom juga berdampak langsung pada keterbacaan
- Jika kolom
Nameberada di ujung kanan, subjek setiap rekaman tidak segera terlihat sehingga pembaca bisa lebih bingung - Label kolom memberi tahu data apa yang ada di tiap kolom, dan dalam kebanyakan kasus mengurangi tebakan
- Jika kolom
Sejarah tabel kuno
- Tabel bermula dari kisi persegi sebagai wadah yang dapat memuat informasi
- Di dinding gua Lascaux dan Niaux di Prancis terdapat representasi kisi dari sekitar 25.000 tahun lalu
- Pada abad ke-2 SM, Hipparchus merepresentasikan benda langit dan lokasi di permukaan bumi dengan lintang dan bujur, dan sekitar tahun 150 M, Geographia karya Ptolemy memuat metode pembuatan peta dengan memanfaatkan kisi
- Centuriation Romawi adalah sistem survei tanah yang membentuk kisi persegi melalui jalan, kanal, dan lahan pertanian
- Setelah pertanian menyebar luas sekitar 10.000 tahun lalu, kebutuhan untuk mencatat dan mengelola transaksi ekonomi terkait pertanian, ternak, dan pembagian kerja meningkat
Struktur tabel di Sumeria dan Mesopotamia
- Kota-kota Mesopotamia pada milenium ke-4 SM berdagang dengan kerajaan-kerajaan jauh dan perlu menyimpan catatan; lempeng tanah liat yang ditemukan di Uruk menyimpan tabel yang awal tetapi canggih
- Lempeng tanah liat Uruk sekitar 3200–3000 SM mencatat jumlah pengiriman jelai dan malt untuk produksi bir
- Strukturnya dibaca dari kanan ke kiri
- Setiap sel berisi ideogram yang mewakili kata atau konsep dan angka yang mewakili kuantitas
- Sekitar dua baris masing-masing berkorespondensi dengan satu orang
- Dua kolom di kanan memuat kuantitas malt dan jelai
- Kolom ketiga menampilkan subtotal per individu, sedangkan kolom paling kiri menampilkan total keseluruhan
- Baris paling bawah memuat nama pejabat yang bertanggung jawab, sehingga berfungsi seperti footer
- Lempeng tanah liat dari Kuil Enlil di Nippur sekitar seribu tahun kemudian memuat sumber pemasukan dan pengeluaran bulanan untuk 50 personel kuil
- Terlihat kisi yang lebih teratur
- Ada judul kolom berupa nama bulan dan judul baris berupa nama individu serta pekerjaan
- Termasuk sel kosong tanpa informasi, nilai numerik, subtotal per enam bulan, total, dan catatan penjelas
- Setelah itu, media tabel berubah dari tanah liat menjadi tablet lilin, papirus, dan kertas, sementara teknik penulisan dan desain tabel juga ikut berubah
Puncak desain tabel pada pertengahan abad ke-20
- Pertengahan abad ke-20 dipandang sebagai periode ketika desain tabel sangat kuat
- Teknologi pembuatan dokumen seperti cetak offset, mesin tik, dan varitype berkembang hingga mampu menyusun elemen tabel secara presisi
- Walaupun ada keterbatasan ruang halaman, tersedia berbagai solusi untuk menyesuaikan tabel ke dalam satu halaman atau membaginya ke beberapa halaman
- Ketika teknologi cetak yang maju berpadu dengan pengetahuan desain tabel, tabel yang indah dapat dibuat
- Manual of Tabular Presentation dari Biro Sensus Amerika Serikat adalah karya yang membahas secara rinci desain ideal untuk tabel dengan kepadatan informasi tinggi
- Menamai dan menjelaskan berbagai bagian tabel secara ketat
- Memberikan anjuran kuat tentang hal-hal yang harus dan tidak boleh dilakukan dalam berbagai situasi pembuatan tabel
- Menunjukkan bahwa tabel bisa terlihat baik sekaligus memuat banyak informasi
- Great Tables banyak meminjam prinsip desain tabel dari dokumen ini, dan berangkat dari asumsi bahwa prinsip-prinsip tersebut masih berlaku hingga kini
Kemunduran dan keterbatasan setelah spreadsheet
- Ketika teknologi komputasi menjadi lebih mudah diakses pada 1970–1980-an, orang dapat membuat tabel dalam bentuk elektronik maupun cetak
- Popularisasi tabel yang dapat dihitung bisa dianggap dimulai pada 1979 dengan VisiCalc
- VisiCalc dapat menghitung nilai dengan cepat, tetapi daya ekspresifnya terbatas untuk membuat tabel presentasi
- Tidak bisa memberi gaya border presentasi pada sel kisi
- Tidak bisa memformat nilai
- Tidak bisa mencetak tabel
- Selama 10–15 tahun berikutnya, tabel spreadsheet menjadi lebih enak dilihat
- Pada awal 1990-an, Excel dapat memberi border pada tabel
- Dukungan tipografi membaik
- Fitur pemformatan nilai juga menjadi lebih lengkap
- Meski demikian, tabel Excel selama 30 tahun terakhir dinilai sulit mencapai level Manual of Tabular Presentation
- Ketika analisis data juga dilakukan di luar Excel, muncul tiga skenario yang tidak efisien
- Menangani analisis dan pembuatan tabel seluruhnya di Python, tetapi kualitas tabel rendah
- Menangani analisis dan pembuatan tabel seluruhnya di Excel, tetapi fleksibilitas analisis rendah
- Menganalisis di Python lalu menyalin ke Excel untuk membuat tabel, tetapi tidak reproducible
Model tabel Great Tables
- Great Tables adalah paket Python yang berupaya memadukan keanggunan tabel pertengahan abad ke-20 dengan kekuatan antarmuka kode
- Tabel direpresentasikan sebagai kombinasi 6 komponen independen
- Table Header: ruang untuk memasukkan judul dan subjudul guna menjelaskan isi tabel secara ringkas
- Column Labels: mendefinisikan isi setiap kolom; spanner adalah judul yang ditempatkan di atas beberapa grup kolom
- Stub Head: posisi kiri atas, tempat berbagai jenis label dapat ditempatkan
- Row Stub: area untuk informasi baris dan label grup baris
- Table Body: area yang berisi sel dan tempat data berada
- Table Footer: ruang untuk informasi tambahan terkait isi tabel
- Great Tables digunakan dengan cara membuat badan tabel lewat kode, lalu menambahkan styling, pemformatan, dan komponen lain secara iteratif
- Kode contoh dimulai dari
GT(simple_table, rowname_col="Name"), lalu menambahkan judul, stub head, column spanner, source note, pemformatan tanggal dan bilangan bulat, serta opsi styling - Pada tabel contoh, row stub berwarna biru memisahkan label baris dari badan tabel
- Karena setiap orang adalah observasi unik, subjek baris ditekankan
- Judul menjelaskan isi tabel
- Spanner
LocationdanPersonal Characteristicsmengelompokkan kolom ke dalam grup yang bermakna - Penggunaan garis biru dan latar sel yang konsisten menciptakan tampilan profesional
- Metode yang menambahkan komponen tabel diawali dengan
tab_- Contoh:
tab_header()membuat Table Header
- Contoh:
Pemformatan dan nanoplots
- Menstrukturkan tabel saja tidak cukup; tiap bidang memiliki kebutuhan berbeda untuk menampilkan nilai
- Bahkan satu angka dapat ditampilkan dengan berbagai cara sesuai norma dan ekspektasi komunitas
- Jika tanggal, waktu, dan mata uang juga dimasukkan, cakupan pemformatan menjadi lebih luas
- Nilai mentah
134,000dapat direpresentasikan berbeda sesuai kebutuhanfmt_scientific(): notasi ilmiah1.34 × 10^5fmt_number(): angka locale Jerman134.000,00fmt_integer(): bilangan bulat ringkas134K
- Ketika nilai harus disampaikan sebagai gambar atau plot, masalah pemformatan menjadi lebih besar
- Jika seorang analis medis perlu menyampaikan tren perbaikan atau perburukan hasil tes pasien, membaca rangkaian angka sepanjang baris dapat memperlambat interpretasi
fmt_nanoplot()menyediakan visualisasi tren kecil di dalam tabel melalui nanoplots- Saat mengarahkan mouse ke titik data, nilai pada tiap tanggal dapat dilihat
- Nanoplots bertujuan menyeimbangkan interpretasi visual plot yang cepat dengan kekompakan tabel
- Metode pemformatan Great Tables diawali dengan
fmt_- Contoh:
fmt_date(),fmt_integer(),fmt_nanoplot()
- Contoh:
- Paket ini berupaya menyediakan banyak metode pemformatan dan opsi yang berguna agar sesuai dengan kebutuhan beragam pengguna
Fokus pada tabel ringkasan statis untuk publikasi dan presentasi
- Great Tables berfokus pada tampilan untuk publikasi dan presentasi di antara berbagai cara berinteraksi dengan tabel
- Dalam analisis basis data, tampilan tabel sederhana untuk menelusuri dan memfilter ratusan, ribuan, atau lebih banyak rekaman bisa jadi cocok
- Publikasi hasil adalah pekerjaan yang berbeda; di sini, struktur, pemformatan, dan styling menjadi pusat perhatian
- Tampilan tabel yang indah harus memenuhi hal berikut
- Membuat informasi lebih mudah dicerna
- Menyediakan konteks tambahan di tempat yang diperlukan
- Mengikuti gaya dokumen atau organisasi
- Use case yang dituju adalah penyajian data seperti yang terlihat dalam artikel jurnal, buku, dan laporan
- Great Tables memandang tabel ringkasan statis sebagai area yang layak mendapat fokus tersendiri, dan melalui metode
opt_*()berupaya memudahkan penyediaan tabel yang lebih baik bagi pembaca - Kriteria keberhasilan paket ini adalah kualitas tabel yang dapat dibuat, dan pekerjaan untuk memperbaiki API akan terus berlanjut
- Untuk umpan balik komunitas, Discord Server tetap dibuka
1 komentar
Opini di Hacker News
Akan bagus jika lebih banyak proyek menjelaskan filosofi dan tujuannya seperti ini
Saya membuat pustaka tabel lain untuk Jupyter bernama Buckaroo, tetapi pendekatannya berbeda
Buckaroo bertujuan membantu pengguna bekerja secara interaktif, dengan cepat mencoba berbagai format dan fungsi pascaproses, agar mendapatkan insight penting dari tabel
Saat melakukan exploratory data analysis dasar, kita sering mengetik perintah yang sama berulang-ulang, jadi saya merasa perintah dan insight semacam itu seharusnya masuk ke dalam tabel
Great Tables tampaknya lebih dekat ke alat yang dibuat untuk memformat tabel presentasi secara manual
https://github.com/paddymul/buckaroo
https://youtu.be/GPl6_9n31NE
print()di Jupyter dandisplay()IPython punya keterbatasan sebagai output statis yang mati, terasa seperti debuggingprintfzaman dulu, dan sejauh yang saya tahu Buckaroo dibuat untuk mengatasi ituSaya penasaran bagaimana kamu melihat shortcut dan cara operasi Visidata
Dulu saya memakai Visidata, dan selalu bertanya-tanya mengapa pada akhirnya ia tidak bisa masuk ke dalam Jupyter untuk eksplorasi dataframe
Saya setuju bahwa Great Tables terlihat seperti upaya lain untuk memformalkan grammar of tables, dan mengingat kekuatan format tabel serta penyebaran konsep dataframe lewat ekosistem R/pandas/Arrow/polars, pendekatan seperti ini patut disambut
Namun setahu saya istilah ini awalnya dipakai dalam bahasa statistik S pada era 90-an
[1] https://towardsdatascience.com/preventing-the-death-of-the-d...
Dengan sedikit ruang kosong di bagian bawah dan memakai font tebal, sepertinya bisa memberi hierarki visual tanpa noise
Latar label baris terlalu gelap dan sulit dibaca karena ketebalan font, jadi biru yang sangat muda akan lebih baik
Saya juga tidak suka label grup baris “Name” dibuat miring
Label kolom tingkat atas yang mengambang di tengah membuat tabel sulit dipindai, dan menurut saya rata kiri akan jauh lebih baik
Terakhir, saya benar-benar tidak suka font-nya, meski ini mungkin karena browser
Saya membuat mockup dengan beberapa perubahan, dan menurut saya ini tabel yang jauh lebih mudah dibaca
https://i.imgur.com/iMMf5vo.png
Buku itu membahas hal-hal yang baru saja disebutkan, seperti keterbacaan dan elemen yang mengganggu pesan atau inti data
Jika pernah melihat sparkline, Tufte juga orang yang menciptakan istilah itu
Setiap kali melakukan review UI, saya membolak-balik buku ini untuk melihat apakah ada yang kami lewatkan, dan buku ini menarik dibaca dari halaman mana pun
Selain itu, ada juga esai panjang tentang mengapa PowerPoint buruk
[1] https://www.edwardtufte.com/tufte/books_be
[2] https://en.wikipedia.org/wiki/Sparkline
Jika dirata kiri di atas suatu kolom, judul itu cenderung terlihat seperti level tertinggi dalam hierarki informasi tabel dengan cara yang umumnya tidak benar atau tidak dimaksudkan
Dalam revisi modernis di atas, judulnya berbunyi “names, addresses, characteristics”, tetapi dari penyelarasannya tampak seperti mengecualikan nama, dan itu langsung terasa mengganggu
Sebaliknya, manual sensus hampir selalu meratakan tengah semua label di dalam kotaknya masing-masing, dan ketika tidak demikian pun kebanyakan karena indentasi
Selain itu, lebar kolom ditentukan berdasarkan data, bukan label, dan tidak ragu menyesuaikan indentasi serta pemenggalan dengan tanda hubung
Hasilnya, tabel menjadi padat secara horizontal tetapi tetap intuitif dipahami
Setelah dipikir lagi, judulnya sendiri juga kurang bagus
Judul dan caption harus menyampaikan konteks, cakupan, dan tujuan; jika tidak, boleh saja dihilangkan sama sekali sebagai dosa editorial karena gagal membenarkan keberadaannya
Judul saat ini bisa diganti menjadi “Table 1” tanpa kehilangan informasi atau generalitas
Untuk tulisan yang mencoba membahas dan merekonstruksi representasi tabel dari prinsip pertama, ini agak mengecewakan
Karena judul tabel membentuk lapisan penting dalam katalog informasi, tidak mengherankan manual sensus mencurahkan satu bab penuh untuk penyusunan judul
Walau cukup spesifik domain dan bergaya agak kuno, tetap sangat layak dibaca
Penekanan biru juga kini redundan dengan judul, jadi hapus semuanya; pemisahan “personal characteristics” dan “location” juga tidak benar-benar membantu organisasi, jadi sebaiknya dihapus
Untuk sejarah yang lebih baru, ada pembuatan tabel CALS: https://en.wikipedia.org/wiki/CALS_Table_Model
Datalogics https://en.wikipedia.org/wiki/Datalogics sangat terlibat dalam perumusan tabel CALS
Staf Datalogics ikut serta dalam komite ISO yang membuat SGML, dan melatih banyak orang tentang SGML, termasuk staf Departemen Pertahanan AS serta kontraktor yang terlibat dalam dokumentasi
Mereka ikut dalam tim yang membuat editor dokumen berbasis SGML; salah satu fiturnya adalah memformat elemen sesuai konteks SGML elemen tersebut
Ini terjadi sebelum XSLT dan turunannya muncul
Orang-orang dari Datalogics membantu Microsoft memahami XML. Misalnya, “Tidak, Anda tidak bisa sembarangan mengubah huruf besar-kecil pada tag elemen XML”
Pengguna TeX juga punya pemikiran yang cukup canggih soal pemformatan tabel
Sebagai cabang cerita yang unik, saya pernah belajar bahwa jika seluruh dokumentasi sebuah jet tempur pada masa itu dicetak, bobotnya lebih berat daripada pesawatnya sendiri dan akan memenuhi deretan lemari arsip seukuran lapangan sepak bola
Dan meski sekarang banyak orang tidak menyukai XML, dari sudut pandang dunia SGML, XML adalah berkah besar
Seingat saya, bahkan versi pertama pun punya dukungan pemformatan, meski terbatas
Menurut http://www.bricklin.com/history/refcard3.htm, perintah
/Fbisa digunakan untuk menentukan perataan dan mengatur format angka, misalnya dolar dan senDokumen ini berdasarkan versi 1.35, tetapi saya rasa versi rilis pertama setidaknya juga mendukung tampilan dolar dan sen
Misalnya jika biayanya $1500, $130, $110, $210, teks di tiga baris terakhir tampak kira-kira 4/5 ukuran teks baris pertama
Padahal jika ketiganya dijumlahkan pun hanya sepertiga dari jumlah teratas
Orang melihat digit angka secara visual, dan ini kira-kira mirip log10
Masalah seperti ini muncul terlalu sering, sehingga di spreadsheet terkait keuangan saya mulai selalu memasukkan grafik batang di dalam sel
Kalau tidak, rapat bisa melenceng karena memperdebatkan item yang benar-benar sepele dibanding biaya terbesar secara nilai absolut
Saya benar-benar pernah menghabiskan beberapa rapat membahas biaya $15 per bulan untuk pengumpulan log server cloud, pada VM yang menjalankan mesin basis data dengan biaya lisensi bulanan saja $15K
Saya mengelolanya bersama Rich Iannone
Rich adalah satu-satunya pengembang perangkat lunak yang saya kenal yang, ketika diminta menjelaskan filosofi sebuah paket, akan menceritakan 5.000 tahun sejarah penyajian tabel
Saya heran representasi tabel data yang makin memburuk dibiarkan begitu lama
Tabel-tabel modern pertengahan abad ke-20 yang ditunjukkan dalam tulisan itu benar-benar terlihat sebagai contoh yang gemilang
Saya jadi ingin mencoba lagi analisis data dengan Python, dan terpikir beberapa peningkatan serta perluasan API yang ingin saya buat
Bagus sekali untuk membuat tabel HTML, tetapi keluaran PDF dan DOCX masih terasa sedikit kurang halus
Saya agak khawatir karena belakangan arah pengembangan tampaknya bergeser untuk mengejar agar versi Python setara dengan versi R, sehingga laju pengembangan R melambat
Meski begitu, paket ini layak dicoba, apa pun bahasa yang Anda gunakan
Selain SAS, alat utama kami adalah bahasa lama bernama Table Producing Language, disingkat TPL
Akarnya kembali hingga tahun 1970-an, tetapi setelah memahami sintaksnya, TPL luar biasa fleksibel, ekspresif, dan efisien
Para perancang Great Tables sebaiknya melihat TPL
Ia menangani semua yang menjadi tujuan Great Tables, dan mungkin punya beberapa kemampuan tambahan
https://www.ojp.gov/pdffiles1/Digitization/68013NCJRS.pdf
Bagaimanapun, terima kasih sudah membuat Great Tables
Ini sangat membantu meningkatkan kualitas pembuatan tabel di Python
Orang-orang yang memposting di Show HN perlu melihat dan belajar
Sebagai cabang cerita menarik, model AI yang dilatih dengan spreadsheet membutuhkan “tabel yang baik” seperti nama kolom dan header agar bisa memahami konteks
Fortap adalah salah satu contohnya: https://arxiv.org/abs/2109.07323