Ana içeriğe atla

Polars read_csv(): Python’da CSV Verilerini Hızlı Yükleyin

Polars read_csv()’in Python’da CSV verilerini nasıl verimli yüklediğini; büyük veri kümelerini ele alma, şema tanımlama ve performans optimizasyonunu keşfedin.
Güncel 22 Eyl 2026  · 7 dk. oku

Yapay Zekâyla Keşfet

ChatGPTClaudePerplexity

Benim gibi siz de düzenli olarak Python ile veri analizi yapıyorsanız, CSV dosyalarını okumanın en yaygın görevlerden biri olduğunu kısa sürede fark edersiniz. Ancak veri kümeleriniz büyüdükçe, bu yöntem yavaşlayabilir veya belleği zorlayabilir.

Polars, Pandas’a yüksek performanslı bir alternatif olarak tasarlanmış, hızlı ve modern bir Python DataFrame kütüphanesidir. Hız ve düşük bellek kullanımı odaklı inşa edildiği için, geleneksel araçlara göre büyük veri kümelerini çok daha akıcı şekilde işleyebilir.

Polars’ın temel pl.read_csv() işlevi, ayrıştırma, veri türleri ve bellek kullanımını kontrol etmek için yerleşik seçeneklerle CSV dosyalarını bir DataFrame’e yüklemek için basit bir çözüm sunar.

Bu kılavuzda, Polars  pl.read_csv() işlevini kullanarak CSV dosyalarını nasıl okuyacağınızı, ayrıştırmayı nasıl kontrol edeceğinizi ve büyük veri kümelerini nasıl yöneteceğinizi göstereceğim. Yeni başlıyorsanız, Polars ile verileri nasıl dönüştürüp içgörü elde edeceğinizi öğrenmek için Polars’a Giriş kursumuza göz atın.

pl.read_csv()’in Temel Kullanımı

İleri gitmeden önce, ortamınızı nasıl kuracağınızı öğrenmek için Python Polars eğitimimize göz atın. 

Şimdi pl.read_csv() işlevi nasıl çalışıyor bakalım: 

# 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())  

Yukarıdaki örnekte, Polars dosyayı okuyup bir DataFrame’e yüklüyor. İşlev, pandas’ta elde edeceğinize benzer, tablosal bir veri yapısı olan bir Polars DataFrame döndürür.

Varsayılan olarak, pl.read_csv():

  • İlk satırın sütun adlarını içerdiğini varsayar (has_header=True)

  • Sütun veri türlerini otomatik olarak çıkarır

  • Ayraç olarak virgül (,) kullanır

  • Tüm dosyayı belleğe okur

pl.read_csv()’de Yaygın Parametreler

Artık pl.read_csv()’in verileri nasıl yüklediğini öğrendiğinize göre, Polars’ın verilerinizi nasıl ayrıştıracağını özelleştirmek için aşağıdaki parametreleri nasıl kullanabileceğinize bakalım.

Dosya yolu ve kaynak

Polars, verileri farklı kaynaklardan yüklemenize olanak tanır. Yerel bir dize yolu, bir Pathlib nesnesi veya bir URL geçebilirsiniz. Örneğin, aşağıdaki kod, çeşitli yıllarda farklı ülkelerin GSYİH’sini içeren büyük bir csv dosyasını web’den okur.

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

Ayraçlar ve ayırıcılar

Tüm CSV dosyaları virgül kullanmaz. Sekmeler, noktalı virgüller, boru işareti veya diğer karakterleri işlemek için separator bağımsız değişkenini kullanabilirsiniz. Aşağıdaki örnek, dosyaları okurken ayırıcıların nasıl belirtileceğini gösterir

# 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")

Üstbilgi (header) işlemesi

Daha önce gördüğümüz gibi, Polars verilerin ilk satırının sütun adlarını içerdiğini varsayar. Dosyanızda bir üstbilgi satırı yoksa, aşağıda gösterildiği gibi has_header=False parametresini kullanın. Polars otomatik olarak column_1, column_2, column_3 vb. gibi sütun adları atayacaktır.

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

Ayrıca belirli sütun adlarını sağlayarak sütunları yeniden adlandırabilirsiniz. Örneğin:

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

Kodlama

Farklı CSV dosyaları farklı metin kodlamaları kullanabilir. Garip karakterler veya hatalarla karşılaşırsanız kodlamayı belirtin:

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

Diğer yaygın kodlama seçenekleri arasında, geçersiz karakterleri uygun şekilde ele alan ”latin1” ve ”utf8-lossy” bulunur.

Polars’ta CSV Okurken Sütunlar Nasıl Seçilir

Büyük CSV dosyalarıyla çalışırken, çoğu zaman tüm sütunlara ihtiyacınız olmaz. Polars, columns parametresiyle yalnızca ihtiyaç duyduğunuz sütunları yüklemenize olanak tanır.

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

Gerekli sütunları dosyayı yüklerken seçmeniz, gereksiz verileri yüklemediği için bellek kullanımını azaltır. Bu yöntem, dosya okuma hızını artırır ve genel veri hattı performansını iyileştirir.

Polars CSV’de Veri Türleri (Şema) Nasıl Yönetilir

Polars güçlü tür denetimine sahip bir kütüphanedir; yani her sütunun tümüyle aynı veri türünde olması gerekir, örneğin tümü tamsayı veya tümü metin gibi.

Otomatik tür çıkarımı

Varsayılan olarak Polars verilerinizi inceler ve sütun türlerini otomatik olarak belirler. Varsayılan yöntem çoğu durumda iyi çalışır, ancak bazen kimlikleri metin yerine tamsayı olarak ele almak gibi yanlış yorumlamalar yapabilir.

Şemayı elle belirtme

DataFrame’inizde tutarlılık istediğinizde veri şemasını elle belirtmelisiniz. Bu, birden fazla dosya arasında tutarlılık sağlar ve aşağı akış işlemede türle ilgili hatalardan kaçınmanıza yardımcı olur. 

Çoğu durumda, geri kalan sütunları Polars’ın çıkarmasına izin verirken belirli sütunların veri türünü belirtmek için schema_overrides kullanın

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
    }
)

Ya da DataFrame’in tüm yapısını tanımlamak için schema kullanın.

# 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
    }
)

Polars CSV’de Eksik Değerler Nasıl Yönetilir

Varsayılan olarak Polars bu eksik değerleri otomatik olarak algılar ve null olarak temsil eder. Bazen bu eksik değerler ”NA”, ”N/A” veya ”missing” gibi belirli dizelerle gösterilir. Bunları null olarak ele almak için null_values ile tanımlayabilirsiniz. 

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

Eksik değerleri doğru şekilde yönettiğinizde, veri türlerinde tutarlılığı sağlarsınız ve yanlış hesaplamaları önlersiniz; bu da analiz ve modelleme sırasında hataları azaltır.

Polars ile Büyük CSV Dosyalarını Okuma

Mevcut RAM’inizi aşan büyük veri kümeleriyle çalışırken, Polars tüm dosyayı bir kerede yüklemeden veriyi işleyerek gerçekten öne çıkar.

scan_csv() ile Tembel Yükleme

read_csv() gibi verileri hemen belleğe yüklemek yerine, Polars yalnızca gereken işlemleri yürüten ve optimize edilmiş bir sorgu planı oluşturan tembel bir alternatif scan_csv() sağlar.

Aşağıdaki örnekte, pl.scan_csv CSV dosyasını yüklemeden tarar, otomobil markası “ACURA” olan satırlarda yalnızca “YEAR”, “MAKE” ve “MODEL” sütunlarını almak için bir sorgu kurar, ardından bu sorguyu yürütür. Bu işlem, tüm dosya yerine yalnızca süzülmüş veri dilimini belleğe yükler.

# 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()  

scan_csv() kullanmanızı öneririm:

  • Belleğe rahatça sığmayan büyük dosyalarla çalışırken
  • Filtreleme, seçim ve toplulaştırma gibi birden çok dönüşüm uygularken
  • Yürütmeden önce sorgu optimizasyonu istediğinizde

Akış ve bellek verimliliği

Polars ayrıca verileri parçalara bölerek akış halinde işlemeye olanak tanır; böylece dosya boyutundan bağımsız olarak tepe bellek kullanımı sabit kalır.

Büyük CSV dosyaları için, tembel bir sorgu oluşturmak üzere scan_csv() ile başlayın. scan_csv() çağrıldığında dosya tamamen yüklenmez.

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

Yukarıdaki yöntem hâlâ read_csv kullanmaya devam ettiğinden, en iyi yaklaşım tembel yürütmeyi akışla birleştirmektir. 

Aşağıdaki örnekte, Polars dosyayı bir ardışık düzende, satır satır partiler halinde işler ve herhangi bir anda yalnızca filtrelenmiş satırları (“CYLINDERS” > 3 olduğu yerler) bellekte tutar. 

# 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")

Pandas’a karşı performans avantajı

Pandas ile karşılaştırıldığında, Polars genellikle CSV okuma ve işleme için daha iyi performans sunar; bunu bir sonraki bölümde göreceğiz.

Polars read_csv ve Pandas read_csv

Aşağıdaki tablo, Python’da csv okurken Polars ve Pandas arasındaki farkı özetler.

Boyut

Polars

Pandas

Hız

Çok iş parçacığı ve optimize ayrıştırma sayesinde daha hızlı

Büyük dosyalarda daha yavaş (çoğunlukla tek iş parçacıklı)

Bellek Kullanımı

Daha düşük ayak izi; tembel + akış desteği

Tüm veri kümesini istekli biçimde belleğe yükler

Sözdizimi

pl.read_csv(“data.csv”)

pd.read_csv(“data.csv”)

Yürütme Modeli

Tembel yürütmeyi destekler (scan_csv)

Yalnızca istekli (anlık) yürütme

Optimizasyon

Yerleşik sorgu optimizasyonu (projeksiyon, filtreleme)

Sınırlı otomatik optimizasyon

En İyi Kullanım Durumu

Büyük veri kümeleri, performans kritik iş akışları

Daha küçük veri kümeleri, hızlı analiz

Analitik ihtiyaçlarınıza en uygun aracı belirlemek için Pandas ve Polars arasındaki farkları ele aldığımız makalemizi okumanızı öneririm.

Farklı Kaynaklardan CSV Okuma

Daha önce gördüğümüz gibi, Polars ile farklı kaynaklardan csv dosyası okuyabilirsiniz. Yukarıdaki örneklerde, yerel dosyalardan ve URL’lerden csv okumanın nasıl yapıldığını gösterdim.

Buna ek olarak, Polars sıkıştırılmış CSV dosyalarını otomatik olarak işleyebilir. Örneğin, aşağıdaki kod bir .gzip dosyasından veri okur.

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

Yaygın Hatalar ve Sorun Giderme

Polars gibi yüksek performanslı bir motorla bile, özellikle bir csv dosyası okurken bazı sorunlarla karşılaşabilirsiniz. Aşağıda, karşılaştığım yaygın problemler ve bunların nasıl düzeltileceği yer alıyor.

  • Kodlama hataları: UnicodeDecodeError gibi bir hata görebilirsiniz; bu, dosyanın UTF-8 kodlaması kullanmadığı anlamına gelir ve bu sorun daha eski dosyalarda veya Excel’in belirli sürümlerinden dışa aktarılan CSV’lerde yaygındır. Bunu düzeltmek için uygun kodlamayı ayarlayın veya dosyada tutarsız ya da bozuk karakterler varsa “utf8-lossy” kullanın.

  • Ayraç sorunları: DataFrame’iniz yükleniyor ama tüm veriler tek bir sütunda toplanıyorsa, Polars ayırıcıyı tanımamış demektir. Bunu çözmek için, noktalı virgül (;), sekme (\t) veya boru (|) gibi doğru ayırıcıyı separator bağımsız değişkeniyle açıkça ayarlayın.

  • Yanlış veri türleri: Bazen Polars sütun türlerini yanlış çıkarabilir; örneğin sayısal kimlikleri metin olarak okumak veya ayrıştırma hatalarıyla karşılaşmak gibi. Böyle bir durumda, belirli sütunların veri türünü belirtmek için schema_overrides kullanabilirsiniz. Tüm sütunların türlerini tanımlamak istiyorsanız schema kullanın. Ayrıca infer_schema_length değerini artırarak Polars’ın şemayı çıkarmadan önce daha fazla satırı incelemesini sağlayabilirsiniz.

  • Büyük dosyalarda bellek sorunları: Python süreciniz büyük bir dosyayı yüklerken çöküyorsa, RAM’inizi tüketmişsiniz demektir. Bunu düzeltmek için, bellek kullanımını azaltıp performansı artırmak üzere read_csv() yerine tembel yükleme sağlayan scan_csv()’e geçin. Ayrıca veri kümesinin daha az sütununu yükleyebilir veya veriyi parçalara ayırarak yüklemek için akış (stream) yürütmesini kullanabilirsiniz.

Sonuç

Polars’taki read_csv() işlevi kullanımı basit ama gerçek dünya görevleri için yeterince güçlüdür. Bana göre, büyüyen veri kümeleriyle çalışırken Polars belirgin bir avantaja sahiptir.

Bir sonraki adım olarak, çeşitli kullanım alanları hakkında daha fazla bilgi edinmek için Polars GPU motoru hakkında yazdığımız bloğumuza göz atın. Uygulamaya hazırsanız, gerçek dünyadaki analitik soruları çözmek, hesaplamalar uygulamak ve spor analitiği problemlerine temel ML tekniklerini uygulamak için Polars ile Super Bowl Analizi eşli kodlama içeriğimize katılın.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Veri analitiği, iş zekâsı ve veri bilimi alanlarında pratik deneyime sahip Veri Bilimi Teknik Yazarı. SQL, Python, Power BI, Databricks ve veri mühendisliği üzerine, gerçek dünya analitik çalışmalarına dayanan, uygulamaya dönük ve sektöre odaklı içerikler yazıyorum. Yazılarım teknik derinlikle iş etkisi arasındaki köprüyü kurarak profesyonellerin veriyi güvenle karara dönüştürmelerine yardımcı olur.

SSS

Polars’ta read_csv() ve scan_csv() arasındaki fark nedir?

read_csv() verileri belleğe istekli (eager) biçimde yüklerken, scan_csv() tembel (lazy) yürütme kullanır ve yalnızca .collect() çağırdığınızda veriyi işler.

read_csv() yerine scan_csv()’i ne zaman kullanmalıyım?

Büyük veri kümeleri için veya dönüşümleri birbirine zincirlerken scan_csv() kullanın; yürütmeyi optimize eder ve bellek kullanımını azaltır.

Polars bir CSV dosyasından yalnızca belirli sütunları okuyabilir mi?

Evet, read_csv() içinde columns=[...] parametresini kullanın veya tembel bir sorguda scan_csv() ile sütun seçin.

Polars CSV dosyalarındaki eksik değerleri nasıl işlerim?

Polars, boş değerleri varsayılan olarak null kabul eder ve null_values= ile özel null işaretleyicileri tanımlayabilirsiniz.

Polars sıkıştırılmış CSV dosyalarını destekliyor mu?

Evet, .gz ve .zip gibi sıkıştırılmış formatları elle çıkarmaya gerek kalmadan okuyabilir.

Konular
Python

DataCamp ile Polars Öğrenin

Kurs

Polars'a Giriş

3 sa
6.9K
Hızlı veri işleme için Python kütüphanesi olan Polars'ı kullanarak verileri verimli bir şekilde dönüştürmeyi, temizlemeyi ve analiz etmeyi öğrenin.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow