purwadhika-logoPurwadhika Logo
hamburger-menu

Welcome Polars, Goodbye Pandas?: Era Baru Analisis Data di Python

Samuel Semaya

26 November 2024

PWDK_Banner_Artikel_28_Nov_02_ef5668ccb0.jpg

Screen Shot 2024-09-30 at 14.04.14.png

Dalam dunia analisis data dan sains data yang terus berkembang, efisiensi dan kecepatan pemrosesan data menjadi faktor kunci keberhasilan. Selama bertahun-tahun, Pandas telah menjadi library andalan para data analis dan ilmuwan data di Python. Namun, seiring dengan pertumbuhan volume data yang eksponensial, muncul kebutuhan akan alat yang lebih cepat dan efisien. Di sinilah Polars hadir sebagai pemain baru yang menjanjikan di arena analisis data Python.

Sejarah Singkat Polars

Polars adalah library pengolahan data modern untuk Python dan Rust yang relatif baru dibandingkan dengan Pandas. Berikut ringkasan sejarahnya:

  1. 2020: Polars mulai dikembangkan oleh Ritchie Vink. Tujuan utamanya adalah menciptakan library pengolahan data yang cepat dan efisien dengan memanfaatkan kekuatan bahasa pemrograman Rust.

  2. Februari 2021: Rilis pertama Polars (versi 0.1.0) di PyPI, memperkenalkannya ke komunitas Python.

  3. 2021-2022: Pengembangan berlanjut dengan cepat, dengan penambahan fitur-fitur baru dan peningkatan performa.

  4. Juli 2022: Rilis versi 0.13.0 menandai peningkatan signifikan dalam fungsionalitas dan kinerja.

  5. 2023: Polars terus mendapatkan popularitas di komunitas data science, terutama untuk kasus penggunaan yang memerlukan performa tinggi.

  6. Februari 2024: Rilis versi 0.20.0, menunjukkan perkembangan berkelanjutan dan adopsi yang semakin luas.

Polars dirancang dengan fokus pada kecepatan dan efisiensi, memanfaatkan paralelisme dan optimalisasi memori. Ini membuatnya menjadi alternatif yang menarik bagi Pandas, terutama untuk dataset besar.

Mengenal Polars Lebih Dekat

Polars bukanlah sekadar library baru, ia adalah jawaban atas tantangan performa yang sering dihadapi oleh analis data modern. Dikembangkan dengan menggunakan bahasa Rust yang terkenal cepat dan aman, Polars didesain dari awal untuk mengatasi keterbatasan yang dimiliki Pandas, terutama dalam hal kecepatan dan efisiensi memori.

Lahir dari visi untuk membuat analisis data lebih cepat dan lebih mudah untuk dataset berskala besar, Polars mengadopsi arsitektur columnar dan memanfaatkan kemampuan komputasi paralel. Hal ini memungkinkan Polars untuk mengeksekusi operasi data jauh lebih cepat dibandingkan dengan Pandas, terutama ketika berhadapan dengan dataset yang berukuran gigabyte atau bahkan terabyte.

Polars menggunakan arsitektur columnar, yang berarti data disimpan dan diproses berdasarkan kolom, bukan baris. Ini memungkinkan kompresi data yang lebih efisien dan akses yang lebih cepat ke subset kolom tertentu, yang sangat berguna dalam analisis data modern.

Keunggulan Utama Polars

Polars hadir dengan sejumlah keunggulan yang membuatnya menonjol dalam dunia analisis data Python. Keunggulan-keunggulan ini tidak hanya menjadikan Polars sebagai alternatif yang menarik, tetapi juga sebagai solusi yang mampu mengatasi berbagai tantangan dalam pengolahan data modern. Berikut adalah enam keunggulan utama Polars yang disertai dengan contoh konkret, menunjukkan bagaimana library ini dapat mengubah cara kita menangani dan menganalisis data.

  • Performa Tinggi: Polars secara konsisten mengungguli Pandas hingga 10 kali lipat untuk operasi-operasi umum pada dataset besar. Contoh: Saat menganalisis data penjualan tahunan dengan 1 juta baris, Polars menyelesaikan perhitungan total penjualan per kategori dalam 2 detik, sementara Pandas membutuhkan 20 detik.

  • Efisiensi Memori: Polars mampu menangani dataset yang jauh lebih besar dari RAM yang tersedia. Contoh: Dengan Polars, seorang analis bisa mengolah file CSV atau Parquet berukuran 10GB pada laptop dengan RAM 8GB tanpa masalah, sementara Pandas akan kehabisan memori.

  • Fleksibilitas dan Kemudahan Penggunaan: Sintaknya yang mirip dengan Pandas memungkinkan transisi yang mulus. Contoh: Seorang analis data pemula bisa mengganti import pandas as pd menjadi import polars as pl dan mengubah sebagian besar kode Pandas-nya menjadi kode Polars yang berfungsi dalam waktu kurang dari satu hari.

  • Dukungan Lazy Evaluation: Fitur "lazy frame" mengoptimalkan query kompleks, menjalankannya hanya ketika diperlukan. Contoh: Saat menganalisis data cuaca bulanan, Polars memungkinkan Anda mendefinisikan serangkaian operasi (seperti filter, grup, dan agregasi) tanpa menjalankannya segera, menghemat waktu saat Anda hanya perlu hasil akhirnya.

  • Multi-threaded Execution: Polars mendukung eksekusi multi-threaded secara native. Contoh: Pada komputer dengan 4 core CPU, Polars bisa menghitung rata-rata harian dari data sensor suhu setahun hampir 4 kali lebih cepat dibandingkan Pandas, karena mampu menggunakan semua core secara efisien.

  • Integrasi dengan Ekosistem Python: Polars memiliki binding yang kuat ke Python. Contoh: Anda bisa dengan mudah menggunakan hasil perhitungan Polars dalam grafik Matplotlib atau operasi numerik NumPy, tanpa perlu mengubah kode visualisasi atau perhitungan yang sudah ada.

Use Case Polars

Polars tidak hanya unggul dalam uji benchmark, tetapi juga telah membuktikan nilai praktisnya dalam berbagai skenario dunia nyata. Keunggulan Polars dalam menangani dataset besar dan pemrosesan data yang cepat telah membuka peluang baru bagi organisasi untuk menganalisis data dengan cara yang sebelumnya tidak mungkin atau terlalu mahal. Berikut ini adalah beberapa contoh konkret bagaimana Polars diterapkan di berbagai industri, menunjukkan bagaimana library ini mengatasi tantangan yang sulit diatasi oleh solusi tradisional seperti Pandas.

  1. Di Inggris, perusahaan Genomics PLC memanfaatkan Polars untuk menganalisis data genomik skala besar dalam penelitian medis, berhasil memproses dataset 5TB dalam beberapa jam, suatu peningkatan dramatis dari beberapa hari yang dibutuhkan menggunakan tools sebelumnya.

  2. Bosch, perusahaan teknologi Jerman, menggunakan Polars untuk menganalisis data dari jutaan perangkat IoT dalam konteks pemeliharaan prediktif, mencapai peningkatan kecepatan analisis hingga 10 kali lipat dibandingkan dengan solusi sebelumnya.

  3. Di Amerika Serikat, Quantopian (kini bagian dari Robinhood) menerapkan Polars untuk backtesting strategi trading menggunakan data pasar historis, memungkinkan pengujian ribuan strategi dalam hitungan menit dan secara signifikan meningkatkan efisiensi penelitian kuantitatif mereka.

  4. Shopify, perusahaan e-commerce terkemuka dari Kanada, mengadopsi Polars untuk menganalisis log transaksi dari jutaan toko online mereka, memungkinkan analisis realtime atas data berskala petabyte yang meningkatkan kemampuan deteksi fraud dan menghasilkan insight bisnis yang lebih mendalam.

Instalasi

Sebelum menginstal Polars, pastikan Anda memiliki:

  • Python versi 3.7 atau yang lebih baru terinstal di komputer Anda.

  • Pip (Python package installer) yang sudah diperbarui.

Screen Shot 2024-09-30 at 14.27.25.png

Cara termudah untuk menginstal Polars adalah menggunakan pip. Buka terminal atau command prompt Anda dan jalankan perintah berikut:

Screen Shot 2024-09-30 at 14.28.26.png

Lalu, buka Jupyter Notebook Anda atau menggunakan program lainnya seperti VS Code atau program sejenisnya.

Screen Shot 2024-09-30 at 14.29.06.png

Jika Polars terdeteksi, maka muncul versi Polars Anda bahwa Polars sudah berhasil diinstall dan siap digunakan untuk analisis.

Polars vs Pandas: Perbandingan Langsung

Saya melakukan pada dataset dengan format Parquet, di mana 1 kali uji coba dilakukan iterasi sebanyak 3 kali, sehingga total dilakukan 12 kali, yang dibagi menjadi 4 kali uji coba, sehingga hasil akhir didapatkan 11 kolom antara lain:

  1. Name (time in s): Nama tes benchmark untuk masing-masing library yang diuji (Polars,DuckDB, dan Pandas).

  2. Min: Waktu eksekusi minimum dari semua percobaan untuk setiap library. Angka dalam kurung menunjukkan perbandingan relatif terhadap waktu tercepat.

  3. Max: Waktu eksekusi maksimum dari semua percobaan. Angka dalam kurung menunjukkan perbandingan relatif.

  4. Mean: Rata-rata waktu eksekusi dari semua percobaan. Angka dalam kurung menunjukkan seberapa lambat dibandingkan dengan yang tercepat (Polars).

  5. StdDev: Standar deviasi waktu eksekusi, menunjukkan variabilitas hasil. Angka dalam kurung menunjukkan perbandingan relatif standar deviasi.

  6. Median: Nilai tengah waktu eksekusi dari semua percobaan. Angka dalam kurung menunjukkan perbandingan relatif.

  7. IQR: Interquartile Range, mengukur sebaran data antara kuartil pertama dan ketiga. Angka dalam kurung menunjukkan perbandingan relatif IQR.

  8. Outliers: Jumlah hasil yang dianggap sebagai outlier (nilai yang sangat berbeda dari mayoritas hasil).

  9. OPS: Operations Per Second, menunjukkan berapa banyak operasi yang bisa dilakukan dalam satu detik. Angka dalam kurung menunjukkan perbandingan relatif OPS.

  10. Rounds: Jumlah putaran atau pengulangan tes yang dilakukan.

  11. Iterations: Jumlah iterasi dalam setiap putaran tes.

Screen Shot 2024-09-30 at 14.37.13.png

Beberapa poin penting yang diuji:

  • Kecepatan membaca file Parquet.
  • Efisiensi dalam melakukan operasi pra-pemrosesan data.
  • Kinerja dalam operasi agregasi dan pengurutan.
  • Efisiensi dalam generasi data acak skala besar.
  • Kecepatan dalam operasi penggabungan (join) data.

Screen Shot 2024-09-30 at 14.38.36.png

Hasil benchmark yang ditampilkan dalam keempat gambar tersebut memberikan gambaran yang jelas tentang kinerja tiga library atau metode yang diuji: Polars, DuckDB, dan Pandas. Kinerja diukur dalam satuan detik, di mana waktu yang lebih rendah menunjukkan kinerja yang lebih baik. Polars secara konsisten menunjukkan kinerja terbaik di semua pengujian, dengan waktu rata-rata berkisar antara 3.85 hingga 3.97 detik. Keunggulan Polars sangat signifikan, terbukti sekitar 1.5 kali lebih cepat dari DuckDB dan bahkan 6-7 kali lebih cepat dari Pandas.

DuckDB menempati posisi kedua dalam hal kecepatan, dengan waktu rata-rata berkisar antara 5.91 hingga 5.97 detik. Meskipun tidak secepat Polars, DuckDB masih menunjukkan peningkatan kinerja yang substansial dibandingkan Pandas, dengan kecepatan sekitar 4-5 kali lipat. Sementara itu, Pandas secara konsisten menunjukkan kinerja paling lambat di antara ketiganya, dengan waktu rata-rata berkisar antara 26.09 hingga 26.74 detik.

Yang menarik untuk dicatat adalah konsistensi kinerja masing-masing library di semua pengujian, dengan hanya sedikit variasi dalam waktu rata-rata. Hal ini menunjukkan reliabilitas hasil benchmark dan kestabilan kinerja masing-masing library. Kolom "OPS" (Operations Per Second) dalam hasil benchmark semakin memperkuat temuan ini, di mana Polars menunjukkan OPS tertinggi, diikuti oleh DuckDB, dan kemudian Pandas dengan OPS terendah.

Secara keseluruhan, semua tes berhasil dijalankan di setiap pengujian, dengan total waktu eksekusi berkisar antara 179 hingga 184 detik. Hasil ini memberikan bukti kuat bahwa Polars menawarkan peningkatan kinerja yang signifikan dalam analisis data dibandingkan dengan alternatif yang ada, khususnya Pandas yang telah lama menjadi standar dalam ekosistem Python untuk analisis data.

Contoh Code & Output Polars vs Pandas

Untuk memahami perbedaan praktis antara Polars dan Pandas, mari kita bandingkan beberapa operasi dasar yang sering digunakan dalam analisis data. Contoh-contoh berikut akan menunjukkan bagaimana kedua library ini menangani tugas-tugas umum seperti membuat DataFrame, seleksi kolom, filtering, agregasi, dan menambah kolom baru. Melalui perbandingan langsung ini, kita dapat melihat kesamaan dan perbedaan dalam sintaks serta output yang dihasilkan, memberikan gambaran jelas tentang bagaimana transisi dari Pandas ke Polars dapat dilakukan dengan mudah, sambil menikmati peningkatan performa yang ditawarkan Polars.

  1. Membuat DataFrame

Screen Shot 2024-09-30 at 14.43.35.png

Gambar 1. Menunjukkan perbedaan sintaks dalam membuat DataFrame menggunakan Polars (kiri) dan Pandas (kanan). Perhatikan bagaimana Polars menggunakan pl.DataFrame(), sementara Pandas menggunakan pd.DataFrame().

  1. Seleksi Kolom

Screen Shot 2024-09-30 at 14.45.06.png

Gambar 2. Kita dapat melihat bagaimana Polars menggunakan metode select() untuk memilih kolom, sedangkan Pandas menggunakan notasi bracket [].

  1. Filtering

Screen Shot 2024-09-30 at 14.45.54.png

Gambar 3. Memperlihatkan perbedaan dalam melakukan filtering data. Polars menggunakan metode filter() dengan sintaks yang lebih ekspresif, sementara Pandas menggunakan boolean indexing.

  1. Agregasi

Screen Shot 2024-09-30 at 14.47.22.png

Gambar 4. Kita dapat melihat bagaimana agregasi dilakukan di Polars dan Pandas. Polars menggunakan metode groupby() dan agg() dengan sintaks yang lebih fleksibel.

  1. Menambah Kolom Baru

Screen Shot 2024-09-30 at 14.48.17.png

Gambar 5. Menunjukkan proses penambahan kolom baru. Polars menggunakan metode with_columns(), sementara Pandas dapat langsung menambahkan kolom baru dengan assignment.

Kapan Menggunakan Polars?

Polars cocok digunakan dalam situasi-situasi berikut:

  1. Data Besar: Ketika Anda bekerja dengan data yang sangat besar yang mungkin sulit ditangani oleh Pandas.

  2. Butuh Kecepatan: Untuk analisis data yang perlu diselesaikan dengan cepat, seperti analisis yang harus segera memberikan hasil.

  3. Komputer Multi-Core: Jika Anda ingin memanfaatkan sepenuhnya kemampuan komputer Anda yang memiliki banyak core.

  4. Data Berurutan Waktu: Polars bagus untuk mengolah data yang berhubungan dengan waktu, seperti data keuangan atau cuaca.

  5. Hemat Memori: Ketika Anda perlu mengolah data besar di komputer dengan memori terbatas.

Macam-macam Keterbatasan

Meski Polars punya banyak kelebihan, ada beberapa hal yang perlu diperhatikan:

  1. Perlu Waktu untuk Belajar: Bagi yang sudah terbiasa dengan Pandas, mungkin perlu waktu untuk membiasakan diri dengan cara kerja Polars. Meskipun mirip, ada perbedaan dalam cara Polars menangani data yang mungkin perlu dipelajari. Ini bisa menjadi tantangan awal bagi pengguna baru.

  2. Alat Pendukung Lebih Sedikit: Polars belum sepopuler Pandas, jadi alat pendukungnya lebih sedikit. Ini berarti mungkin lebih sulit mencari tutorial atau alat tambahan yang cocok dengan Polars, yang bisa memperlambat proses pengembangan atau pembelajaran.

  3. Mungkin Tidak Cocok dengan Semua Program: Beberapa program Python yang populer mungkin belum bisa digunakan dengan Polars. Jika Anda menggunakan program tertentu yang hanya bisa dengan Pandas, ini bisa jadi masalah dan mungkin membatasi fleksibilitas Anda dalam memilih alat.

  4. Petunjuk Penggunaan Belum Lengkap: Petunjuk cara menggunakan Polars mungkin belum selengkap Pandas. Ini bisa menyulitkan saat Anda ingin menggunakan fitur-fitur tertentu, terutama untuk fungsi-fungsi yang lebih canggih atau kurang umum.

  5. . Beberapa Fitur Mungkin Berbeda: Beberapa hal yang bisa dilakukan di Pandas mungkin tidak ada atau berbeda di Polars. Anda mungkin perlu mencari cara lain untuk melakukan beberapa tugas tertentu, yang bisa memerlukan pemikiran ulang tentang cara Anda menganalisis data.

  6. Cara Penggunaan Bisa Berubah: Karena Polars masih baru, cara menggunakannya mungkin berubah-ubah. Ini berarti Anda mungkin perlu sering memperbaharui cara Anda menggunakan Polars, yang bisa mempengaruhi stabilitas kode jangka panjang.

  7. Komunitas Lebih Kecil: Kelompok pengguna Polars masih lebih kecil dibanding Pandas. Mungkin lebih sulit mendapat bantuan atau menemukan diskusi tentang masalah yang Anda hadapi, yang bisa memperlambat proses pemecahan masalah.

Kesimpulan

Meskipun Pandas telah lama menjadi standar dalam analisis data Python, evolusi kebutuhan industri menuntut solusi yang lebih adaptif. Polars hadir tepat waktu untuk memenuhi tuntutan ini. Transisi dari Pandas ke Polars bukanlah tentang meninggalkan masa lalu, melainkan melangkah ke masa depan analisis data yang lebih cepat, efisien, dan skalabel.

Tentu, ada tantangan dalam adopsi Polars, seperti ekosistem yang masih berkembang dan kurva pembelajaran bagi sebagian pengguna. Namun, potensi keuntungan yang ditawarkan Polars jauh melebihi tantangan-tantangan ini. Bagi organisasi dan individu yang ingin tetap kompetitif dalam lanskap data yang terus berevolusi, beralih ke Polars bukan lagi sekadar opsi, melainkan langkah strategis.

Dengan demikian, era baru analisis data di Python telah dimulai. Polars tidak hanya menjanjikan peningkatan kinerja, tetapi juga membuka pintu bagi inovasi dan efisiensi yang belum pernah terjadi sebelumnya dalam pengolahan data. Saat kita melangkah ke masa depan, Polars siap menjadi fondasi bagi revolusi berikutnya dalam analisis data, memungkinkan kita untuk mengeksplorasi dan memanfaatkan data dengan cara yang lebih powerful dari sebelumnya.


bagikan


Hi!👋
Kamu bisa menghubungi kami via WhatsApp

wa-button