Lewati ke konten utama

Tqdm Python: Panduan dengan Contoh Praktis

tqdm adalah pustaka Python yang menyediakan bilah progres yang cepat dan dapat diperluas untuk loop dan iterable, sehingga memudahkan visualisasi progres kode Anda.
Diperbarui 5 Jun 2026  · 11 mnt baca

Pernahkah Anda berada dalam situasi ketika sebuah skrip Python yang berjalan lama membuat Anda bertanya-tanya apakah ada sesuatu yang sedang terjadi di balik layar?

Ketidakpastian tentang progres bisa membuat Anda membatalkan proses yang sebenarnya hampir selesai atau menunggu tanpa akhir untuk skrip yang sudah terhenti.

tqdm pustaka Python mengatasi masalah ini dengan menyediakan indikator progres untuk skrip Anda.

contoh bilah progres tqdm

Apa itu tqdm?

Tqdm adalah pustaka Python yang menyediakan bilah progres yang cepat dan dapat diperluas untuk loop dan iterable. Ini adalah cara sederhana untuk melacak kemajuan tugas yang memakan waktu.

Nama pustaka ini berarti "kemajuan" dalam bahasa Arab (taqadum, تقدّم), dan merupakan singkatan untuk "aku sangat mencintaimu" dalam bahasa Spanyol (te quiero demasiado).

Tdqm melacak progres dan memperbarui tampilan bilah progres dengan menghitung iterasi, menghitung waktu berlalu serta waktu tersisa, dan memvisualisasikan progres keseluruhan dalam isian bilah.

Ini menggunakan algoritme cerdas untuk memprediksi waktu tersisa, dan melewatkan tampilan iterasi yang tidak perlu guna meminimalkan overhead. Menggunakan tqdm menawarkan beberapa manfaat, termasuk:

  • Umpan balik visual: Bilah progres memungkinkan pengguna melihat seberapa banyak tugas yang telah selesai dan memperkirakan berapa lama sisa bagian akan memakan waktu.
  • Bekerja di mana saja: Pustaka tqdm bekerja di platform mana pun (Linux, Windows, Mac, FreeBSD, NetBSD, SunOS), di konsol mana pun atau dalam GUI.
  • Integrasi mudah: Tqdm terintegrasi mulus dengan Jupyter notebook, pustaka umum seperti Pandas, dan konstruksi Python umum seperti loop.
  • Kustomisasi: Ini menawarkan beberapa opsi untuk menyesuaikan tampilan dan perilaku bilah progres, yang akan kita bahas nanti.
  • Performa: Sementara paket serupa seperti ProgressBar memiliki overhead 800ns/iterasi, overhead tdqm sebesar 60ns/iterasi bekerja jauh lebih cepat.

Cara Menginstal Tqdm 

Seperti kebanyakan pustaka Python, cara termudah untuk menginstal tqdm adalah menggunakan manajer paket pip.

pip install tqdm

Tqdm: Contoh Sederhana

Untuk membuat bilah progres, kita bungkus iterable dengan fungsi tqdm() (yang kita impor dari modul tqdm). Mari lihat contoh sederhana. Fungsi time.sleep(0.01) berfungsi sebagai placeholder untuk kode yang seharusnya dijalankan di setiap iterasi.

from tqdm import tqdm
    for i in tqdm(range(1000)):
    time.sleep(0.01)
    # …

gif yang menunjukkan penyelesaian bilah progres dari kode contoh dalam 10 detik.

Sebagai pintasan untuk tdqm(range(n)) Anda juga dapat menggunakan trange(n). Kode berikut akan menghasilkan keluaran yang persis sama seperti sebelumnya:

from tqdm import tqdm
    for i in trange(1000):
	time.sleep(0.01)
	# …

Kedua contoh akan menghasilkan bilah progres yang terlihat seperti di atas.

Perhatikan lebih dekat bilah progres untuk melihat informasi apa yang disediakannya. Mari kita uraikan detail yang disajikan oleh tqdm:

  • Indikator Progres:
    • Persentase Iterasi
    • Isian Bilah
    • Fraksi dari Total Iterasi
  • Metrik:
    • Waktu Berlalu
    • Perkiraan Waktu Tersisa
    • Performa (Iterasi per Detik)

Kustomisasi Tqdm: Membuat Bilah Progres Milik Anda

Tqdm menawarkan berbagai opsi kustomisasi untuk menyesuaikan tampilan dan perilaku bilah progres. Kita akan melihat parameter kustomisasi terpenting sebelum memeriksa kasus penggunaan tqdm yang lebih lanjut.

Menambahkan deskripsi bilah progres

Salah satu kustomisasi umum adalah menambahkan label deskriptif menggunakan parameter desc, sehingga bilah progres lebih informatif dan membantu menjaga gambaran umum atas berbagai iterable.

Sebagai contoh, menambahkan parameter desc=”Processing large range” akan menampilkan judul “Processing large range” di sebelah kiri bilah progres.

for _ in tqdm(range(20000000), desc="Processing large range"):
	continue

Saya mendorong Anda untuk menjalankan kode di atas di lingkungan Anda dengan dan tanpa parameter desc dan perhatikan perbedaannya.

Menentukan jumlah total iterasi

Parameter total menentukan jumlah total iterasi dalam loop, memungkinkan tqdm memberikan perkiraan waktu tersisa dan persentase penyelesaian yang lebih akurat.

Dalam contoh dasar menggunakan tqdm(range()) atau trange() ini tidak diperlukan, karena jumlah iterasi sudah disertakan di dalam kurung. Namun, ada dua skenario utama di mana menambahkan parameter total=n (dengan n sebagai jumlah total) dapat membantu: 

1. Iterable tanpa metode len(): Untuk iterable tanpa metode len(), seperti generator dengan jumlah item yang tidak diketahui, Anda perlu memberikan nilai total secara manual. Tanpa parameter ini, tqdm() hanya akan menampilkan jumlah iterasi yang telah selesai. Harap dicatat bahwa bilah progres akan mulai lagi jika jumlah item aktual melampaui angka total yang ditentukan.

from tqdm import tqdm
import time
import random
 
# Function generating random number between 1 and 100
def generate_random_numbers():
	while True:
	        yield random.randint(1, 100)
 
# Without total: tqdm() only shows number of iterations, does not know total
for num in tqdm(generate_random_numbers(), desc=’Random Iteration’):
	time.sleep(0.01)
	# …

Gif ini menampilkan jumlah iterasi tanpa bilah progres.

Beginilah tampilannya jika jumlah item tidak diketahui dan kita tidak menentukan total.

# With total (assuming you know the desired number of iterations): tqdm() shows progress
num_iterations = 1000
for num in tqdm(generate_random_numbers(), total=num_iterations, desc="Random Iteration"):
	time.sleep(0.01)
	# …

Dalam gif ini, bilah progres terlihat kembali setelah parameter total ditentukan.

Jauh lebih baik, sekarang bilah progres muncul!

2. Pembaruan manual: Jika kita memperbarui bilah progres secara manual di dalam fungsi menggunakan metode update(), nilai total perlu ditentukan untuk memastikan pelacakan progres yang benar. Metode update() memungkinkan, misalnya, merespons proses yang berubah secara dinamis atau menerapkan pelacakan progres kustom. Kita akan membahasnya nanti.

Mengutak-atik tampilan visual

Jika kita ingin menyesuaikan urutan penempatan elemen bilah progres, kita dapat mengatur parameter bar_format ke string format yang diinginkan. Dengan cara ini, kita dapat mengontrol penempatan berbagai elemen seperti persentase, waktu berlalu, dan karakter isian bilah. Untuk detail lebih lanjut, Anda dapat merujuk ke dokumentasi

Penyesuaian tampilan visual lainnya dapat dilakukan menggunakan parameter colour. Dimungkinkan untuk menggunakan string kata seperti ‘green’ atau string kode heksadesimal seperti ‘#00ff00’.

Parameter leave berkaitan dengan hilang atau tidaknya tampilan alih-alih tampilannya: ini menentukan apakah bilah progres tetap terlihat setelah selesai. Jika disetel ke True, bilah akan tetap ada setelah loop selesai; jika disetel ke False, bilah akan menghilang.

Mari kita lihat perbedaan visual pada keluaran dalam contoh lain. Kode berikut membuat tiga bilah progres: satu dengan pengaturan default, satu di mana urutan elemen dan warnanya diubah, dan satu lagi yang diatur untuk menghilang setelah selesai. Keluaran terlihat pada GIF di bawah ini.

from tqdm import tqdm
import time
 
# Progress bar 1: Default settings
for i in tqdm(range(300)):
	time.sleep(0.01)
 
# Progress bar 2: Customized bar format and color
for i in tqdm(range(300), bar_format='[{elapsed}<{remaining}] {n_fmt}/{total_fmt} | {l_bar}{bar} {rate_fmt}{postfix}', colour='yellow'):
	time.sleep(0.01)
 
# Progress bar 3: Customized bar format and color, leave=False
for i in tqdm(range(300), bar_format='[{elapsed}<{remaining}] {n_fmt}/{total_fmt} | {l_bar}{bar} {rate_fmt}{postfix}', colour='red', leave=False):
	time.sleep(0.01)

Sebuah gif yang menampilkan tiga bilah progres berbeda: 1) Bilah progres dasar dengan pengaturan default, 2) bilah progres kuning dengan waktu berlalu dan estimasi waktu di sebelah kiri persentase penyelesaian dan bilah progres, 3) versi merah dari bilah kedua yang menghilang setelah selesai.

Penggunaan Lanjutan: Menangani Skenario yang Lebih Kompleks

Sekarang setelah kita tahu cara membangun bilah progres sederhana dan cara menyesuaikannya, kita dapat melangkah ke beberapa kasus yang lebih lanjut.

Bilah progres bertingkat (nested)

Loop bertingkat adalah loop yang terdapat di dalam loop lain. Sesuai dengan itu, bilah progres bertingkat adalah serangkaian bilah progres untuk setiap iterasi loop yang terdapat di dalam loop lain. Untuk membuatnya, bungkus setiap loop dengan fungsi tqdm() dan tambahkan label deskriptif untuk setiap iterable. 

Kode berikut memiliki tiga loop bertingkat dan dapat memberi contoh bagaimana bilah progres bertingkat akan muncul:

from tqdm import trange
import time
 
for i in trange(3, desc='outer loop'):
	for j in trange(2, desc='middle loop'):
   		for k in trange(6, desc='inner loop'):
	time.sleep(0.01)

Tangkapan layar yang menampilkan tiga bilah progres bertingkat di Jupyter Notebook. Bilah progres terluar melacak loop luar, bilah progres tengah melacak loop tengah, dan bilah progres terdalam melacak loop dalam. Setiap bilah progres menampilkan iterasi saat ini, total iterasi, perkiraan waktu tersisa, dan bilah persentase penyelesaian. Urutan bilah seperti yang dijelaskan dalam teks.

Pada keluaran akhir di atas, kita dapat mengenali pola pembaruan bilah progres yang berbeda. Tqdm akan selalu mulai dari loop terluar hingga mencapai loop terdalam, yang iterasinya akan diproses dan bilah progresnya diperbarui sesuai.

Sekarang misalkan kita memiliki tiga loop bertingkat, seperti pada contoh. Setelah iterasi dalam awal, ia akan naik ke loop tengah, memperbaruinya sebagai satu iterasi selesai, sebelum kembali ke iterable dalam. Proses ini diulangi hingga loop tengah ditandai selesai, yang akan memicu bilah luar muncul dengan satu iterasi selesai.

Hal yang sama juga terjadi antara loop luar dan tengah. Pada akhirnya, putaran dalam terakhir menyelesaikan iterable tengah, yang pada gilirannya menyelesaikan iterasi luar terakhir.

Pembaruan manual

Memperbarui bilah progres secara manual dengan tqdm dapat berguna dalam beberapa skenario:

  • Iterable dengan panjang tidak diketahui: Saat kita bekerja dengan iterable yang tidak memiliki panjang terdefinisi (misalnya generator, aliran jaringan), kita dapat memperbarui bilah progres secara manual berdasarkan jumlah data yang diproses atau jumlah operasi yang selesai.
  • Proses yang berubah secara dinamis: Jika jumlah iterasi atau waktu pemrosesan per iterasi dapat berubah selama eksekusi, pembaruan manual memungkinkan kita menyesuaikan bilah progres sesuai kebutuhan.
  • Pelacakan progres kustom: Untuk kontrol yang lebih rinci atas bilah progres, kita dapat memperbaruinya secara manual berdasarkan kriteria atau peristiwa tertentu. Misalnya, kita mungkin ingin memperbarui bilah progres berdasarkan penyelesaian tonggak tertentu atau progres tugas individual dalam proses yang lebih besar.
  • Integrasi dengan sistem eksternal: Jika kita mengintegrasikan tqdm dengan sistem atau pustaka eksternal yang tidak menyediakan cara alami untuk melacak progres, pembaruan manual dapat digunakan untuk menyinkronkan bilah progres dengan proses eksternal.

Untuk memperbarui bilah progres tqdm secara manual, penting bahwa parameter total ditentukan sebagai perkiraan jumlah maksimum iterasi yang diharapkan. Lalu, saat kode memproses setiap elemen baru, bilah progres perlu diperbarui menggunakan metode update(). Nilai pembaruan harus mewakili jumlah iterasi yang diproses sejak pembaruan terakhir.

Misalkan kita memperkirakan iterable kita berisi hingga 750 elemen. Dalam contoh ini, panjang aktual adalah angka acak antara 100 dan 1000, yang tidak kita ketahui. Kita memulai progress_bar, menetapkan estimated_total ke 750. Lalu kita mengiterasi data, memperbarui bilah progres setelah setiap poin diproses.

from tqdm import tqdm
def process_data(data):
	time.sleep(0.01)        	# simulate processing data
	processed_data = data
	return processed_data
# Generate an iterable with random length between 100 and 1,000
random_length = random.randint(100, 1000)
data_list = [i for i in range(random_length)]
# Define estimated maximum number of iterations
estimated_total = 750 
# Define the progress bar using the estimated_total
progress_bar = tqdm(total=estimated_total)
# Iterating through data list of unknown length
for data in data_list:
	processed_data = process_data(data)
	progress_bar.update(1)

Dalam gif ini, bilah progres mencapai 100% (750/750), lalu terus menghitung iterasi yang tersisa (akhirnya 950).

Kita meremehkan panjang iterable, menyebabkan keluaran terus menghitung iterasi setelah mencapai progres 100%.

Multiprocessing

Multiprocessing dan threading adalah teknik yang digunakan untuk mengeksekusi tugas secara bersamaan (concurrent), meningkatkan performa dan responsivitas. Dalam skenario ini, bisa jadi menantang untuk melacak progres tugas individual atau progres keseluruhan eksekusi paralel. Tqdm dapat menjadi alat berharga untuk memberikan umpan balik visual dan memantau progres operasi bersamaan ini.

Modul tqdm.contrib.concurrent menyediakan fungsi khusus untuk membuat bilah progres dalam konteks multiprocessing atau threading. Fungsi-fungsi ini menangani sinkronisasi dan komunikasi antara proses utama dan proses atau thread pekerja, memastikan bilah progres diperbarui dengan benar. Fungsi ini dirancang agar bekerja mulus dengan API concurrent.futures, menggunakan fungsi ProcessPoolExecutor() atau ThreadPoolExecutor().

Berikut contoh menggunakan modul tqdm.contrib.concurrent.futures:

import concurrent.futures
from tqdm.contrib.concurrent import process_map
 
def process_data(data):
	for i in tqdm(range(100), desc=f"Processing {data['name']}"):
	    	# Process data
	    	time.sleep(0.01)
 
if __name__ == '__main__':
	with concurrent.futures.ProcessPoolExecutor() as executor:
	    	results = process_map(process_data, [
	        	{'name': 'dataset1'},
	        	{'name': 'dataset2'},
	# …
	])

Dalam contoh ini, fungsi process_data() menyertakan bilah progres tqdm untuk melacak progresnya. Fungsi process_data() akan dieksekusi secara bersamaan untuk setiap item data dalam daftar. Ini berarti beberapa bilah progres akan ditampilkan secara simultan, masing-masing merepresentasikan progres dari proses terpisah. Parameter desc diatur untuk membuat deskripsi secara dinamis untuk setiap bilah progres berdasarkan nama dataset yang sesuai, membantu kita membedakan antara bilah progres yang berbeda.

Integrasi dengan pandas

Modul tqdm.pandas menyediakan cara yang mudah untuk menambahkan bilah progres ke operasi pandas. Ini sangat berguna untuk operasi yang memakan waktu pada DataFrame besar, karena ini memberikan umpan balik visual tentang progres tugas. Kita dapat menerapkan dekorator tqdm.pandas() ke fungsi pandas apa pun yang beroperasi pada baris atau kolom.

Untuk memulai, kita mendefinisikan DataFrame acak dengan 100.000 baris dan memanggil dekorator tqdm.pandas(). Jika kita ingin menyesuaikan bilah progres, sekaranglah waktunya melakukannya, karena fungsi progress_apply() dan progress_map() tidak menerima parameter tqdm(). Di sini kita ingin memberi nama pada bilah progres berikut, jadi kita juga menentukan parameter desc.

import pandas as pd
import numpy as np
from tqdm import tqdm
 
df = pd.DataFrame(np.random.randint(0, 10, (100000, 6)))
 
tqdm.pandas(desc='DataFrame Operation')

Sekarang kita dapat menerapkan fungsi ke baris, kolom, atau seluruh DataFrame. Alih-alih menggunakan salah satu fungsi apply() atau map(), panggil progress_apply() atau progress_map(), dan bilah progres akan ditampilkan. Ingat bahwa apply() dan progress_apply() dapat diterapkan pada DataFrame, baris, atau kolom, sedangkan map() dan progress_map() hanya dapat diterapkan pada Series atau kolom. Contohnya:

# Halving each value in the DataFrame using progress_apply()
Result_apply = df.progress_apply(lambda x: x / 2)
 
# Doubling each element of the first column using progress_map()
result_map = df[0].progress_map(lambda x: x * 2)

Tqdm: Masalah Umum dan Solusinya

Mari bahas beberapa masalah dan error Tqdm yang umum serta pelajari cara memperbaikinya.

Bilah progres tidak diperbarui

Salah satu masalah paling umum saat menggunakan tqdm adalah bilah progres yang tidak diperbarui. Ini sering terjadi karena masalah buffering, terutama di lingkungan seperti Jupyter Notebook. Saat output dibuffer, bilah progres mungkin tidak ditampilkan atau diperbarui segera, sehingga tampak seperti proses membeku atau tidak responsif.

Menggunakan modul tqdm.notebook dapat mengatasi masalah buffering dan memastikan bahwa bilah progres diperbarui dengan benar di Jupyter Notebook. Modul ini menyediakan bilah progres berbasis GUI yang dirancang khusus untuk lingkungan Jupyter.

Selain itu, modul ini menawarkan petunjuk warna yang ramah pengguna (biru: normal, hijau: selesai, merah: error/interupsi).

Jika kita menghentikan kode dari contoh bilah progres bertingkat kita, tampilannya seperti ini:

Tangkapan layar yang menampilkan proses bertingkat tiga bilah progres yang dihentikan di Jupyter Notebook. Semua bilah yang selesai berwarna hijau, sementara yang terhenti berwarna merah.

Bilah progres bertingkat di Python menggunakan tqdm.notebook, menggambarkan skema warna antara bilah yang selesai dan yang terhenti.

Cara efektif lainnya untuk memecahkan masalah bilah progres yang tidak diperbarui adalah dengan secara eksplisit melakukan flush pada aliran output. Ketika data ditulis ke aliran output standar (misalnya menggunakan print()), data biasanya dibuffer sebelum dikirim ke perangkat output sebenarnya. Melakukan flush pada aliran output memaksa interpreter Python untuk segera mengirim data yang dibuffer ke perangkat output, memastikan data ditampilkan atau ditulis tanpa penundaan. 

Untuk melakukan flush pada output, gunakan metode flush() dari aliran output standar. Untuk output yang lebih responsif, pertimbangkan untuk melakukan flush pada aliran output lebih sering, mungkin setelah beberapa iterasi atau sejumlah waktu tertentu. Perlu diingat ada trade-off, karena melakukan flush pada aliran output dapat menimbulkan overhead tambahan. Berikut salah satu contoh cara memasukkan metode ini ke dalam proses tqdm sederhana:

import sys
import time
from tqdm import tqdm
 
for i in tqdm(range(100)):
	time.sleep(0.1)
	sys.stdout.flush()  # Flush the output stream after each iteration

Masalah kompatibilitas

Meskipun tqdm umumnya kompatibel dengan sebagian besar lingkungan dan pustaka Python, terkadang mungkin ada masalah kompatibilitas atau perilaku yang tidak terduga. Beberapa skenario umum yang perlu diperhatikan meliputi:

  • Aliran output kustom: Saat menggunakan aliran output kustom atau mengarahkan output ke file, tqdm mungkin tidak berfungsi sebagaimana mestinya. Kita perlu memastikan bahwa aliran output yang kita gunakan mendukung operasi yang diperlukan untuk menampilkan bilah progres.
  • Pustaka pihak ketiga: Dalam beberapa kasus, tqdm mungkin berinteraksi secara tak terduga dengan pustaka pihak ketiga, terutama yang menangani output atau pelacakan progres itu sendiri. Kita dapat mencoba menonaktifkan atau memodifikasi fitur pustaka pihak ketiga yang relevan untuk melihat apakah itu menyelesaikan masalah.
  • Kompatibilitas versi: Selalu merupakan praktik yang baik untuk menggunakan versi tqdm dan pustaka lain yang kompatibel. Periksa dokumentasi pustaka untuk setiap masalah kompatibilitas yang diketahui dengan versi Python atau dependensi lain tertentu.

Saat menghadapi masalah kompatibilitas, kita dapat mempertimbangkan solusi berikut:

  • Turunkan atau tingkatkan versi: Kita dapat mencoba versi tqdm yang berbeda.
  • Modifikasi kode: Jika perlu, kita dapat menyesuaikan kode untuk mengatasi konflik kompatibilitas apa pun.
  • Cari bantuan komunitas: Jika semua itu tidak membantu, kita dapat menghubungi komunitas tqdm atau forum daring untuk mendapatkan bantuan dan solusi potensial.

Dengan memahami potensi masalah kompatibilitas ini dan solusinya, kita dapat memecahkan masalah secara efektif dan menyelesaikan kendala apa pun saat menggunakan tqdm dalam proyek Python kita.

Kesimpulan

Singkatnya, Tqdm adalah pustaka Python yang menyediakan bilah progres dan statistik bermanfaat lainnya, sehingga memudahkan memantau dan mengelola eksekusi kode.

Baik Anda mengiterasi dataset besar, melatih model machine learning, atau melakukan operasi lain yang memakan waktu, tqdm menawarkan cara yang sederhana namun andal untuk melacak progres dan tetap mendapat informasi tentang status kode Anda.

Untuk eksplorasi lebih lanjut, silakan lihat tutorial Python DataCamp lainnya, dokumentasi Tqdm, atau kode sumber dan Readme di GitHub.

FAQ

Bagaimana cara membuat bilah progres sederhana dengan tqdm?

Instal dan impor pustaka tqdm, lalu bungkus iterable Anda dengan fungsi tqdm().

Bisakah saya menggunakan tqdm dengan DataFrame pandas atau pustaka lainnya?

Ya, Anda dapat menggunakan tqdm dengan DataFrame pandas dan pustaka lainnya. Modul tqdm.pandas menyediakan fungsi khusus untuk mengintegrasikan tqdm dengan pandas.

Bisakah saya menyesuaikan tampilan bilah progres Tqdm?

Ya, Anda dapat menyesuaikan format bilah, warna, jumlah total iterasi, dan lainnya menggunakan parameter Tqdm.

Bilah progres Tqdm tidak memperbarui dengan benar, apa yang harus saya lakukan?

Periksa masalah buffering, terutama di Jupyter Notebook. Coba gunakan tqdm.notebook atau lakukan flush output secara eksplisit. Pastikan juga penggunaan parameter total sudah benar.


Tom Farnschläder's photo
Author
Tom Farnschläder
LinkedIn

Tom adalah seorang ilmuwan data dan pendidik teknis. Ia menulis dan mengelola tutorial serta artikel blog ilmu data DataCamp. Sebelumnya, Tom bekerja di bidang ilmu data di Deutsche Telekom.

Topik

Kursus Python terbaik!

Kursus

Kotak Perkakas Python

4 Hr
317.8K
Lanjutkan membangun keterampilan Data Science modern Anda dengan mempelajari tentang iterator dan list comprehension.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat Lebih BanyakLihat Lebih Banyak