İçeriğe geç
Python & Veri Bilimi

Pandas 2 milyon satırlık CSV dosyamı okurken bellek hatası veriyor, ne yapabilirim?

09 Tem 2026, 06:19  |  3 Görüntülenme
opendata 🌱 Çaylak
Açık veri portalından indirdiğim 2,1 milyon satır ve 34 sütunluk bir CSV ile çalışıyorum, dosya boyutu yaklaşık 1,8 GB. 8 GB RAM'li dizüstümde pd.read_csv ile okumaya çalışınca MemoryError alıyorum, bazen de bilgisayar tamamen donuyor. Python 3.12 ve pandas 2.2 kullanıyorum. Amacım birkaç sütunda gruplama ve özet istatistik çıkarmak. Donanım yükseltmeden bu veriyi işleyebilmemin bir yolu var mı?
09.07.2026 06:19
PythonGurusu 🌱 Çaylak En Faydalı
Var, hem de birkaç katmanlı. İlk ve en etkili adım usecols parametresi: 34 sütunun tamamına ihtiyacınız yoksa read_csv çağrısında yalnızca gruplama ve özet için gereken sütunları isteyin; bellek kullanımı doğrudan sütun sayısıyla orantılı düşer. İkinci adım dtype optimizasyonu: pandas varsayılan olarak metin sütunlarını object, sayıları int64/float64 tutar. Tekrarlayan kategorik metinleri dtype olarak category, küçük tam sayıları int32 veya int16 belirterek okursanız bellek çoğu zaman dörtte bire iner. Üçüncü seçenek chunksize ile parçalı okuma: read_csv'ye chunksize=200000 verip her parçada ara toplamları biriktirir, sonda birleştirirsiniz; groupby-agg işlemleri bu desene çok uygundur. Pandas 2.2 kullandığınız için engine='pyarrow' ve dtype_backend='pyarrow' da deneyin; Arrow tabanlı string tipi klasik object'ten çok daha ekonomiktir. Bunların ötesine geçmek isterseniz Polars kütüphanesinin lazy API'si veya DuckDB, 1,8 GB'lık CSV'yi 8 GB RAM'de sorgu mantığıyla rahatça işler; DuckDB'de tek satır SQL ile gruplama yapıp sonucu küçük bir pandas DataFrame olarak alabilirsiniz. Dosyayı bir kez Parquet formatına çevirmek de sonraki okumaları hem hızlandırır hem küçültür.
09.07.2026 12:19

Tartışmaya katılmak için giriş yapmalısınız.

Giriş Yap Kayıt Ol