Lewati ke konten utama

Polars read_csv(): Memuat Data CSV dengan Cepat di Python

Pelajari bagaimana Polars read_csv() membantu Anda memuat data CSV secara efisien di Python, termasuk menangani dataset besar, mendefinisikan skema, dan mengoptimalkan kinerja.
Diperbarui 22 Sep 2026  · 7 mnt baca

Jelajahi dengan AI

ChatGPTClaudePerplexity

Jika Anda rutin menggunakan Python untuk analisis data seperti saya, Anda akan segera menyadari bahwa membaca file CSV adalah salah satu tugas paling umum. Namun, seiring pertumbuhan dataset, metode ini bisa menjadi lambat atau boros memori.

Polars adalah pustaka DataFrame yang cepat dan modern untuk Python, dirancang sebagai alternatif berkinerja tinggi untuk Pandas. Polars dapat menangani dataset besar dengan jauh lebih mulus daripada alat tradisional karena dibangun dengan fokus pada kecepatan dan penggunaan memori yang rendah.

Fungsi inti Polars pl.read_csv() menyediakan solusi sederhana untuk memuat file CSV ke dalam DataFrame, dengan opsi bawaan untuk mengontrol parsing, tipe data, dan penggunaan memori.

Dalam panduan ini, saya akan menunjukkan cara membaca file CSV, mengontrol parsing, dan menangani dataset besar menggunakan fungsi Polars pl.read_csv(). Jika Anda baru memulai, lihat kursus Introduction to Polars kami untuk mempelajari cara memanipulasi data dan mengekstrak insight dengan Polars.

Penggunaan Dasar pl.read_csv()

Sebelum kita melangkah lebih jauh, lihat tutorial Python Polars kami untuk mempelajari cara menyiapkan lingkungan Anda. 

Sekarang, mari kita lihat cara kerja fungsi pl.read_csv()

# import the module
import polars as pl

# Load CSV into a Polars DataFrame
fuel_data = pl.read_csv("Fuel_Consumption_2000-2022.csv")  

# Preview first few rows
print(fuel_data.head())  

Pada contoh di atas, Polars membaca file dan memuatnya ke dalam DataFrame. Fungsi mengembalikan Polars DataFrame, yaitu struktur data tabular, mirip dengan yang Anda dapatkan di pandas.

Secara default, pl.read_csv():

  • Menganggap baris pertama berisi nama kolom (has_header=True)

  • Secara otomatis menginfer tipe data kolom

  • Menggunakan koma (,) sebagai delimiter

  • Membaca seluruh file ke dalam memori

Parameter Umum di pl.read_csv()

Sekarang setelah Anda mempelajari bagaimana pl.read_csv() memuat data, mari lihat bagaimana Anda dapat menggunakan parameter berikut untuk menyesuaikan cara Polars mengurai data Anda.

Path file dan sumber

Polars memungkinkan Anda memuat data dari berbagai sumber. Anda dapat meneruskan path string lokal, objek Pathlib, atau bahkan URL. Misalnya, kode berikut membaca file csv besar dari web yang berisi PDB berbagai negara pada berbagai tahun.

# Reading from a URL
url = "https://raw.githubusercontent.com/datasets/gdp/master/data/gdp.csv"
gdp_data = pl.read_csv(url)

Delimiter dan pemisah

Tidak semua file CSV menggunakan koma. Anda dapat menggunakan argumen separator untuk menangani tab, titik koma, pipa, atau karakter lainnya. Contoh di bawah menunjukkan cara menentukan pemisah saat membaca file

# Reading a Semicolon-separated file
sales_data = pl.read_csv("2024_sales.csv", separator=";")

# Reading a Tab-separated file (TSV)
orders_data = pl.read_csv("all_orders.tsv", separator="\t")

Penanganan header

Seperti yang kita lihat sebelumnya, Polars menganggap baris pertama data berisi nama kolom. Jika file Anda tidak memiliki baris header, gunakan parameter has_header=False seperti di bawah ini. Polars akan secara otomatis memberikan nama kolom seperti column_1, column_2, column_3, dan seterusnya.

# Load file without a header
orders_data = pl.read_csv("all_orders.csv", has_header=False)

Anda juga dapat mengganti nama kolom dengan memberikan nama kolom spesifik. Misalnya:

# Providing specific column names
sales_data = pl.read_csv("sales_April.csv", new_columns=[
    "OrderDate", "OrderNumber", "ProductKey", "SalespersonKey", "Salesperson"])

Enkoding

File CSV yang berbeda bisa menggunakan enkoding teks yang berbeda. Jika Anda menemui karakter aneh atau error, tentukan enkodingnya:

# Load CSV into a Polars DataFrame
fuel_data = pl.read_csv("Fuel_Consumption_2000-2022.csv", encoding="utf8")  

Opsi enkoding umum lainnya termasuk ”latin1” dan ”utf8-lossy”, yang menangani karakter tidak valid dengan semestinya.

Cara Memilih Kolom Saat Membaca CSV di Polars

Saat bekerja dengan file CSV besar, Anda sering tidak memerlukan semua kolom. Polars memungkinkan Anda memuat hanya kolom yang dibutuhkan menggunakan parameter columns.

# Load only specific columns
fuel_data = pl.read_csv("Fuel_Consumption_2000-2022.csv",
    columns=["YEAR", "MAKE", "MODEL"]
)

Saat Anda memilih kolom yang diperlukan ketika memuat file, penggunaan memori berkurang karena tidak memuat data yang tidak diperlukan. Metode ini juga mempercepat pembacaan file dan meningkatkan kinerja pipeline secara keseluruhan.

Cara Menangani Tipe Data (Skema) di Polars CSV

Polars adalah pustaka bertipe kuat, yang berarti setiap kolom harus memiliki tipe data yang konsisten, seperti semua integer atau semua string.

Inferensi tipe otomatis

Secara default, Polars memeriksa data Anda dan secara otomatis menentukan tipe kolom. Metode default bekerja baik dalam banyak kasus tetapi terkadang dapat salah menafsirkan kolom, seperti menganggap ID sebagai integer alih-alih string.

Menentukan skema secara manual

Ketika Anda menginginkan konsistensi dalam DataFrame Anda, sebaiknya tentukan skema data secara manual. Ini memastikan konsistensi di berbagai file dan membantu Anda menghindari error terkait tipe pada pemrosesan berikutnya. 

Untuk sebagian besar kasus, gunakan schema_overrides untuk menentukan tipe data kolom tertentu sambil membiarkan Polars menginfer kolom lainnya

import polars as pl

# Manually overriding specific data types
empl_data = pl.read_csv(
    "all_employees.csv",
    schema_overrides={
        "id": pl.Int64,
        "name": pl.String,
        "age": pl.Int64,
        "salary": pl.Float64
    }
)

Atau gunakan schema untuk menentukan seluruh struktur DataFrame.

# Manually define the full schema
empl_data = pl.read_csv(
    "all_employees.csv",
    schema={
        "id": pl.Int64,
        "name": pl.String,
        "age": pl.Int64,
        "salary": pl.Float64
    }
)

Cara Menangani Nilai Hilang di Polars CSV

Secara default, Polars secara otomatis mendeteksi nilai yang hilang ini dan merepresentasikannya sebagai null. Terkadang nilai yang hilang ini direpresentasikan oleh string tertentu, seperti ”NA”, ”N/A”, atau ”missing”. Anda dapat mendefinisikan ini menggunakan null_values agar diperlakukan sebagai null

# Treating "N/A" and "EMPTY" as nulls
survey_data = pl.read_csv(
    "survey_results.csv",
    null_values=["N/A", "EMPTY", "null"]
)

Ketika Anda menangani nilai hilang dengan benar, Anda memastikan tipe data yang konsisten dan mencegah perhitungan yang salah, sehingga mengurangi error selama analisis dan pemodelan.

Membaca File CSV Besar di Polars

Saat bekerja dengan dataset besar yang melebihi RAM yang tersedia, Polars benar-benar unggul dengan memproses data tanpa memuat seluruh file sekaligus.

Lazy Loading dengan scan_csv()

Alih-alih langsung memuat data ke memori seperti read_csv(), Polars menyediakan alternatif lazy, scan_csv(), yang membangun rencana kueri teroptimasi dan hanya mengeksekusi operasi yang diperlukan.

Pada contoh di bawah, pl.scan_csv memindai file CSV tanpa memuatnya, membangun kueri untuk mengambil hanya kolom “YEAR”, “MAKE”, dan “MODEL” di mana merek mobil adalah “ACURA”, lalu mengeksekusi kueri tersebut. Tindakan ini hanya akan memuat irisan data yang terfilter ke dalam memori, bukan seluruh file.

# Lazily reference the file (no data loaded yet)
fuel_consumption = pl.scan_csv("Fuel_Consumption_2000-2022.csv")  

fuel_consumption_filtered = fuel_consumption.select(
    ["YEAR", "MAKE", "MODEL"]).filter(pl.col("MAKE") == "ACURA")

# Execute the query and load only the required data
fuel_consumption_acura = fuel_consumption_filtered.collect()  

Saya merekomendasikan Anda menggunakan scan_csv() ketika:

  • Bekerja dengan file besar yang tidak muat dengan nyaman di memori
  • Menerapkan banyak transformasi, seperti memfilter, memilih, dan mengagregasi data
  • Anda menginginkan optimasi kueri sebelum eksekusi

Streaming dan efisiensi memori

Polars juga memungkinkan proses streaming ke data dalam potongan, menjaga puncak penggunaan memori tetap konstan terlepas dari ukuran file.

Untuk file CSV besar, mulailah dengan scan_csv() untuk membuat kueri lazy. File tidak dimuat sepenuhnya ketika scan_csv() dipanggil.

# Read data in chunks
fuel_consumption = pl.scan_csv("Fuel_Consumption_2000-2022.csv",
 low_memory=True)

Karena metode di atas masih menggunakan read_csv, pendekatan terbaik adalah menggabungkan eksekusi lazy dengan streaming. 

Pada contoh di bawah, Polars memproses file dalam pipeline, baris demi baris dalam batch, hanya menyimpan baris yang terfilter (di mana “CYLINDERS” > 3) di memori pada satu waktu. 

# Lazily reference the file (no data loaded yet)
fuel_consumption = pl.scan_csv("Fuel_Consumption_2000-2022.csv")  

result = fuel_consumption.filter(pl.col("CYLINDERS") > 3)

# Stream execution instead of loading everything at once
fuel_consumption_high = result.collect(engine="streaming")

Keunggulan kinerja vs. Pandas

Dibandingkan dengan pandas, Polars sering berkinerja lebih baik untuk pembacaan dan pemrosesan CSV, seperti yang akan kita lihat di bagian berikutnya.

Polars read_csv vs Pandas read_csv

Tabel di bawah merangkum perbedaan antara Polars dan Pandas saat membaca csv di Python.

Aspek

Polars

Pandas

Kecepatan

Lebih cepat berkat multithreading dan parsing yang dioptimalkan

Lebih lambat pada file besar (sebagian besar single-threaded)

Penggunaan Memori

Jejak memori lebih rendah; mendukung lazy + streaming

Memuat seluruh dataset secara eager ke memori

Sintaks

pl.read_csv(“data.csv”)

pd.read_csv(“data.csv”)

Model Eksekusi

Mendukung eksekusi lazy (scan_csv)

Hanya eksekusi eager (seketika)

Optimasi

Optimasi kueri bawaan (proyeksi, pemfilteran)

Optimasi otomatis terbatas

Kasus Penggunaan Terbaik

Dataset besar, alur kerja kritis kinerja

Dataset kecil, analisis cepat

Saya merekomendasikan membaca artikel kami tentang perbedaan Pandas vs. Polars untuk menentukan alat mana yang paling sesuai dengan kebutuhan analitik Anda.

Membaca CSV dari Berbagai Sumber

Seperti yang telah kita lihat sebelumnya, Anda dapat menggunakan Polars untuk membaca file csv dari berbagai sumber. Dari contoh di atas, saya telah menunjukkan cara membaca csv dari file lokal dan URL.

Selain itu, Polars dapat secara otomatis menangani file CSV terkompresi. Misalnya, kode berikut membaca data dari file .gzip.

# Read gzip-compressed CSV
census_data = pl.read_csv("2018_census.csv.gz")

Error Umum dan Pemecahan Masalah

Bahkan dengan mesin berkinerja tinggi seperti Polars, Anda tetap bisa menemui beberapa masalah, terutama saat membaca file csv. Berikut adalah beberapa masalah umum yang pernah saya temui dan cara memperbaikinya.

  • Error enkoding: Anda mungkin melihat error seperti UnicodeDecodeError, yang berarti file tidak menggunakan enkoding UTF-8, masalah yang umum pada file lama atau CSV yang diekspor dari versi Excel tertentu. Untuk memperbaikinya, setel enkoding yang sesuai atau gunakan “utf8-lossy” jika file memiliki karakter yang tidak konsisten atau rusak.

  • Masalah delimiter: Jika DataFrame Anda berhasil dimuat tetapi semua data menumpuk dalam satu kolom, Polars tidak mengenali pemisahnya. Untuk menyelesaikan masalah ini, tetapkan secara eksplisit delimiter yang benar menggunakan argumen separator, seperti titik koma (;), tab (\t), atau pipa (|).

  • Tipe data tidak tepat: Terkadang, Polars mungkin salah menginfer tipe kolom, seperti membaca ID numerik sebagai string atau menemui error parsing. Saat ini terjadi, Anda dapat menggunakan schema_overrides untuk menentukan tipe data bagi kolom tertentu. Jika Anda ingin menentukan tipe untuk setiap kolom, gunakan schema. Anda juga dapat meningkatkan infer_schema_length, sehingga Polars memeriksa lebih banyak baris sebelum menginfer skema.

  • Masalah memori pada file besar: Jika proses Python Anda crash saat memuat file besar, artinya RAM Anda habis. Untuk memperbaikinya, beralihlah dari read_csv() ke scan_csv() untuk lazy loading guna mengurangi penggunaan memori dan meningkatkan kinerja. Anda juga dapat memuat lebih sedikit kolom dari dataset atau menggunakan eksekusi streaming untuk memuat data per potongan.

Kesimpulan

Fungsi read_csv() di Polars mudah digunakan namun cukup kuat untuk tugas dunia nyata. Menurut saya, Polars memiliki keunggulan jelas saat bekerja dengan dataset yang terus tumbuh.

Sebagai langkah berikutnya, lihat blog kami tentang mesin GPU Polars untuk mempelajari lebih lanjut berbagai penerapannya. Jika Anda siap praktik langsung, ikuti Super Bowl Analytics with Polars code-along kami untuk memecahkan pertanyaan analitik dunia nyata, menerapkan perhitungan, dan menerapkan teknik ML dasar pada masalah analitik olahraga.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Penulis teknis Data Science dengan pengalaman langsung dalam analitik data, business intelligence, dan data science. Saya menulis konten praktis berfokus industri tentang SQL, Python, Power BI, Databricks, dan rekayasa data, yang berakar pada pekerjaan analitik dunia nyata. Tulisan saya menjembatani kedalaman teknis dan dampak bisnis, membantu para profesional mengubah data menjadi keputusan yang meyakinkan.

FAQs

Apa perbedaan antara read_csv() dan scan_csv() di Polars?

read_csv() memuat data secara eager ke memori, sedangkan scan_csv() menggunakan eksekusi lazy dan hanya memproses data saat Anda memanggil .collect().

Kapan saya harus menggunakan scan_csv() alih-alih read_csv()?

Gunakan scan_csv() untuk dataset besar atau saat merangkai transformasi, karena ini mengoptimalkan eksekusi dan mengurangi penggunaan memori.

Apakah Polars bisa membaca hanya kolom tertentu dari file CSV?

Ya, gunakan parameter columns=[...] di read_csv() atau pilih kolom dalam kueri lazy dengan scan_csv().

Bagaimana cara menangani nilai hilang pada file CSV di Polars?

Polars memperlakukan nilai kosong sebagai null secara default, dan Anda dapat mendefinisikan penanda null khusus menggunakan null_values=.

Apakah Polars mendukung file CSV terkompresi?

Ya, Polars dapat membaca format terkompresi seperti .gz dan .zip tanpa ekstraksi manual.

Topik
Python

Pelajari Polars bersama DataCamp

Kursus

Pengantar Polars

3 Hr
6.9K
Pelajari cara mengolah, membersihkan, dan menganalisis data secara efisien menggunakan Polars, sebuah perpustakaan Python untuk manipulasi data yang cepat.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow