PANDAS DATAFRAME NEDİR?
500 bin satırlık bir satış raporunu Excel'de açtınız, filtreyi tıkladınız ve ekran dakikalarca dondu. Bir sütunda basit bir hesap yapmak için formülü aşağı çekmeye çalıştığınızda program çöktü. Bu, analistlerin neredeyse her gün karşılaştığı bir sahne. Aynı veri pandas DataFrame'e yüklendiğinde, milyonlarca satır üzerinde aritmetik bir işlem saniyeler içinde tamamlanır. Fark, pandas'ın altta yatan vectorized operations mimarisinden gelir.
DataFrame Nedir, Neden Excel'den Farklıdır?
DataFrame, satır ve sütunlardan oluşan iki boyutlu, etiketli bir veri yapısıdır. Görünüşte bir Excel sayfasına benzer: başlıklar, indeksler, hücreler. Ancak içeride tamamen farklı çalışır. Excel her hücreyi tek tek formül motorundan geçirirken pandas, sütunları NumPy dizileri olarak bellekte tutar ve C düzeyinde toplu işlem yapar.
Bu farkın pratik sonucu şudur: Excel'de A1:A500000 hücresine =B1*C1 formülünü çektiğinizde 500 bin ayrı formül çalışır. Pandas'ta df["toplam"] = df["adet"] * df["fiyat"] yazdığınızda tek bir vektörel çarpım gerçekleşir. Süre farkı dakikalara karşı milisaniyelerdir.
Vectorized Operations Nasıl Çalışır?
Vectorized operations, döngü yazmadan bütün bir sütuna işlem uygulamaktır. Klasik Python döngüsü yerine pandas, NumPy'ın C uzantılarını kullanarak veriyi bellekte ardışık bloklar halinde işler. Bu sayede CPU önbelleği verimli kullanılır, yorumlayıcı yükü ortadan kalkar.
Tipik bir karşılaştırma yapalım. Bir milyon satırlık fiyat sütununa %18 KDV ekleyeceğiz. Üç yaklaşımın süre profili şöyledir:
- for döngüsü: ~3-5 saniye, satır başına Python yorumlayıcı çağrısı.
- apply() ile lambda: ~0.8-1.2 saniye, hâlâ satır satır ama optimize edilmiş.
- Vectorized (df["fiyat"] * 1.18): ~15-30 milisaniye, tek C çağrısı.
Aradaki uçurum, veri büyüdükçe genişler. 500 bin satırın üstünde Excel çöker, döngülü Python yavaşlar, vectorized pandas aynı hızda kalır.

DataFrame'in Temel Bileşenleri
Bir DataFrame üç ana parçadan oluşur: indeks (satır etiketleri), sütunlar (kolon etiketleri) ve değerler (gerçek veri matrisi). İndeks varsayılan olarak 0'dan başlayan tamsayıdır, ancak tarih, müşteri ID veya birden çok sütun (MultiIndex) olarak da tanımlanabilir.
- Series: DataFrame'in tek bir sütunu, kendi başına da bağımsız bir yapıdır.
- dtype: Her sütun belirli bir veri tipine sahiptir; int64, float64, object, datetime64, category gibi.
- Index: Satırlara hızlı erişim sağlayan etiketler kümesi, hash tablosu mantığıyla çalışır.
- Values: Altta yatan NumPy dizisi; doğrudan erişim için .values veya .to_numpy() kullanılır.
DataFrame Nasıl Oluşturulur?
En yaygın oluşturma yolları sözlük, liste, NumPy dizisi veya dış kaynaktan okumadır. CSV, Excel, Parquet, SQL, JSON ve hatta web sayfalarındaki tablolar tek satır kod ile DataFrame'e dönüşür. Örneğin pd.read_csv("satislar.csv") komutu, dosya boyutuna göre saniyeler içinde milyonlarca satırı belleğe alır.
Bellek bilinçli çalışmak için dtype parametresi kritiktir. Tekrarlayan metinleri category tipine çevirmek bellek kullanımını onda bire indirebilir. Tamsayıları int64 yerine int32 veya int16 olarak tanımlamak da büyük veri setlerinde fark yaratır. Parametrelerin tamamı ve okuma fonksiyonlarının ince ayarları için resmi dokümantasyonu incelemek faydalı olur.
Excel'den Pandas'a Geçişte Sık Yapılan Hatalar
Excel mantığıyla pandas kullanmak performans kazancını sıfırlar. Sık karşılaşılan tuzaklar şunlardır:
- iterrows() ile satır satır gezinmek; vectorized işlemden 100-1000 kat yavaştır.
- Her döngüde df'e satır eklemek; pandas her seferinde yeni bir blok ayırır, bellek patlar.
- Zincirleme atama yapmak (df[df["x"]>5]["y"] = 10); SettingWithCopyWarning üretir, çoğu zaman beklenen değişikliği yapmaz.
- apply() içinde Python lambda kullanmak; mümkün olduğunda yerine doğrudan sütun aritmetiği veya np.where tercih edilmelidir.
Bu kalıpları erken fark etmek, 50 satırlık kodun saatte değil saniyede çalışmasını sağlar. Pandas'ı en baştan vektörel düşünmeye alışarak öğrenmek için Python veri analizi eğitimi içeriğinden yararlanabilirsiniz.

Gerçek Hayatta DataFrame Senaryoları
DataFrame'in gerçek gücü, gruplama (groupby), birleştirme (merge), pivot ve zaman serisi işlemlerinde ortaya çıkar. Bir e-ticaret veri setinde müşteri başına toplam ciro, ay bazında ortalama sepet tutarı veya kategori kırılımında en çok satan ürünleri tek satırla çıkarabilirsiniz. Aynı işlemler Excel'de pivot tablo + manuel formüller gerektirirken pandas'ta tekrar edilebilir, sürümlenebilir Python kodu olur.
Bu da analizin tekrarlanabilirliğini değiştirir. Yarın veri güncellendiğinde aynı script bir komutla yeniden çalışır; manuel kopyala-yapıştır kalmaz, hata yüzeyi daralır. Pandas ekosistemine daha derin girmek için Python veri analizi eğitimi içeriğini inceleyebilirsiniz.
Ne Zaman DataFrame Kullanmamalı?
DataFrame her sorunun cevabı değildir. Tek seferlik 100 satırlık bir hesap için Excel hâlâ pratiktir. Verisi 10 GB'ı aşan, tek makinenin RAM'ini zorlayan senaryolarda ise pandas yetmez; Polars, Dask veya DuckDB gibi alternatifler gündeme gelir. Yine de orta ölçekli (birkaç yüz MB - birkaç GB) veri analizinde pandas DataFrame, esneklik, ekosistem ve öğrenme eğrisi dengesiyle hâlâ en yaygın seçimdir.
Özetle DataFrame; etiketli yapısı, vectorized işlem motoru ve zengin I/O desteğiyle Excel'in donduğu noktada başlayan bir araçtır. Doğru dtype seçimi, vektörel düşünme ve iterrows tuzaklarından kaçınma alışkanlığı edinildiğinde, milyonlarca satırlık bir analiz dizüstü bilgisayarda dakikalar içinde tamamlanabilir.



