← Modül 1 Ana Sayfa

1.1. Yükleme ve Bellek Yönetimi

Mini Yol Haritası (1.1)

Bu alt modülde veri kaynağı tipini seçecek, dosya/SQL/bulut senaryolarında bellek dostu yükleme tekniklerini uygulayacaksın.

Senaryoyu Seç
CSV/Excel · SQL · S3/Parquet
Tipleri Küçült
int8/float32 · category
Parça Parça Oku
chunksize · sütun seç
Standart Biçim
Parquet/ORC

1.1. Detay: Veri Kaynakları ve Bellek Yönetimi Stratejileri

Büyük veri setleri (Big Data) ile çalışırken en büyük darboğaz bellek tüketimidir. Veriyi yüklerken bile akıllı davranarak projenizin verimliliğini %50'ye kadar artırabilirsiniz.

Veri Kaynakları ve Erişim Yöntemleri

1. CSV/Excel Dosyaları (Küçük Veri)

Genellikle yerel makinelerde saklanır ve **Pandas** kütüphanesi ile veriyi yüklerken, büyük veri setlerinde Bellek Kullanımını optimize etmenin kritik yollarını öğrenin.

2. SQL/Veritabanları (Orta/Büyük Veri)

Verinin bir sunucuda (PostgreSQL, MySQL vb.) tutulduğu durumdur. Verinin tamamını çekmek yerine, sadece gerekli sütunları ve satırları çekerek analiz ortamındaki bellek baskısını azaltırsınız.

3. Bulut Depolama (Big Data)

Petabayt seviyesindeki veriler (Amazon S3, Google Cloud Storage) için kullanılır. Yükleme, **Apache Spark** gibi dağıtık sistemler aracılığıyla birden çok sunucu arasında bölünerek yapılır.

Büyük Veride Bellek Optimizasyonu

500 milyon satırlık bir dosyayı okurken, doğru veri tipini seçmek hayati önem taşır:

Veri Tiplerini Küçültmek

  • Problem: Pandas, sayısal sütunları varsayılan olarak 64 bit (8 bayt) olarak atar.
  • Çözüm: Eğer bir sütun sadece 0-100 arasında değerler içeriyorsa, onu 8 bit'lik tam sayı (int8) olarak tanımlamak, bellek kullanımını %87 azaltır.

Verimli Dosya Formatları

  • CSV:** Yüklemesi yavaştır ve sıkıştırması düşüktür.
  • Parquet/ORC Formatları: CSV'ye göre çok daha hızlı yüklenir ve bellek dostudur. Büyük veri projelerinde standarttır.

Hangi Yükleme Stratejisi? (Karar Matrisi)

DurumÖneriNot
≤ 1M satır CSVPandas + dtype azaltmacategory/int8/float32
1–50M satırPandas chunksize + sütun seçimimemory map / iterator
SQL üzerindeSELECT kolonlar + WHERE filtreSunucuda özetle
100M+ satır / S3Spark (Parquet)Dağıtık okuma

Bellek Tahminleyici

Yaklaşık bellek (ham): · Parquet ile:

Kod Şablonları

# 1) Pandas: dtype azaltma + chunksize
import pandas as pd

dtype_map = { 'oda_sayisi':'int8', 'metrekare':'float32', 'semt':'category', 'isitma':'category' }
use_cols = ['fiyat','metrekare','oda_sayisi','bina_yasi','semt','isitma']

iter_df = pd.read_csv('veri.csv', usecols=use_cols, dtype=dtype_map, chunksize=500_000)
df = pd.concat(iter_df, ignore_index=True)

# 2) SQL: sadece gerekli kolon/satırlar
import sqlalchemy as sa
engine = sa.create_engine('postgresql+psycopg2://user:pw@host/db')
q = "SELECT fiyat, metrekare, oda_sayisi, bina_yasi, semt, isitma FROM evler WHERE yil>=2015"
df = pd.read_sql(q, engine)

# 3) Spark: S3 + Parquet
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('read').getOrCreate()
df = spark.read.parquet('s3://bucket/evler/*.parquet')