Garfield
YZF Admin
NumPy, sayısal diziler ve matrisler üzerinde hızlı hesaplama yapmak için kullanılan temel kütüphanedir; pandas ise tablo biçimindeki verileri sütun adları ve satır etiketleriyle düzenlemek, temizlemek ve analiz etmek için kullanılır. Kısaca, ham sayısal hesaplamalarda NumPy; CSV, Excel veya veritabanından gelen satır-sütun verilerinde pandas daha uygundur. pandas zaten birçok işlemi arka planda NumPy dizileri üzerine kurar; bu nedenle birbirinin tamamen alternatifi değildir.
NumPy’nin ana veri yapısı
pandas’ın ana veri yapıları ise
Aynı verinin iki kütüphanede nasıl göründüğünü varsayımsal bir örnekle karşılaştırabilirsiniz:
NumPy bölümünün beklenen çıktısı
Seçim, verinin yapısına ve yapacağınız işe bağlıdır. Aşağıdaki ayrım karar vermeyi kolaylaştırır.
Tablo içeren bir veri kümesini okuyup sütunlara göre filtrelemek istiyorsanız pandas ile başlayın. Bir makine öğrenmesi veya bilimsel hesaplama adımında yalnızca sayısal diziler üzerinde işlem yapıyorsanız NumPy daha doğrudan bir seçimdir. Çoğu gerçek projede ikisi birlikte kullanılır: pandas veriyi okur ve düzenler, NumPy veya başka bir sayısal kütüphane hesaplamanın çekirdeğini yürütür.
Örneğin bir satış tablosundaki fiyatların ortalamasını hesaplamak için pandas sütununu kullanabilirsiniz:
Beklenen çıktı
Beklenen çıktı
pandas yalnızca NumPy’nin daha kullanışlı bir adı değildir. pandas, tablo verisini yönetmek için daha yüksek seviyeli bir arayüz sağlar; NumPy ise genel amaçlı dizi hesaplarının temelini oluşturur. Bu yüzden pandas ile yapılan her işlem NumPy sözdizimiyle aynı değildir.
NumPy dizilerinde değerlerin aynı türde olması beklenirken pandas DataFrame içindeki farklı sütunlar farklı veri türlerine sahip olabilir. Örneğin
Bir pandas sütununu NumPy dizisine dönüştürmek, sütun adlarını ve tablo indeksini otomatik olarak korumaz. Yalnızca sayısal değerlerle işlem yapacaksanız bu kayıp sorun olmayabilir. Sonuçların hangi satıra veya kayda ait olduğu önemliyse işlemi DataFrame ya da Series üzerinde sürdürmek daha güvenlidir.
Veriniz satır ve sütunlardan oluşuyor, sütun adlarını kullanarak filtreleme veya gruplama yapıyorsanız pandas ile başlayın. Veriniz zaten dizi veya matris biçiminde ve amacınız sayısal hesaplama yapmaksa NumPy kullanın. Dosyadan gelen tabloyu analiz edip ardından matematiksel bir algoritma çalıştıracaksanız en pratik yol pandas ile veriyi hazırlayıp gerektiğinde ilgili sütunları NumPy dizisine dönüştürmektir.
Temel fark: dizi ile etiketli tablo
NumPy’nin ana veri yapısı
ndarray adlı çok boyutlu dizidir. Dizi içindeki değerler genellikle aynı veri türünde tutulur ve işlemler tüm diziye toplu biçimde uygulanabilir. Bu yapı, vektör ve matris hesaplamalarında düşük ek yükle çalışır.pandas’ın ana veri yapıları ise
Series ve DataFrame’dir. Series etiketli tek boyutlu sütun, DataFrame ise sütun adları ve satır indeksleri bulunan iki boyutlu tablodur. pandas; eksik değerleri, farklı sütun türlerini, gruplamayı, birleştirmeyi ve dosya aktarımını daha doğrudan ele alır.Aynı verinin iki kütüphanede nasıl göründüğünü varsayımsal bir örnekle karşılaştırabilirsiniz:
Python:
import numpy as np
import pandas as pd
sayilar = np.array([10, 20, 30])
print(sayilar * 2)
veri = pd.DataFrame({
"urun": ["Kalem", "Defter", "Silgi"],
"fiyat": [10, 20, 30]
})
veri["iki_kat_fiyat"] = veri["fiyat"] * 2
print(veri)
NumPy bölümünün beklenen çıktısı
[20 40 60] olur. pandas bölümünde ise urun, fiyat ve iki_kat_fiyat sütunlarına sahip bir tablo oluşur. Buradaki fark yalnızca görünüm değildir: pandas, her değerin hangi sütuna ve satıra ait olduğunu korur.Hangi durumda hangisini seçmelisiniz?
Seçim, verinin yapısına ve yapacağınız işe bağlıdır. Aşağıdaki ayrım karar vermeyi kolaylaştırır.
| Ölçüt | NumPy | pandas |
|---|---|---|
| Temel yapı | Çok boyutlu sayısal dizi | Etiketli Series ve DataFrame |
| En uygun veri | Vektör, matris ve homojen sayısal değerler | Satır-sütun biçimindeki karma veri |
| Öne çıkan işler | Matematiksel işlemler, matris ve dizi hesapları | Filtreleme, gruplama, birleştirme ve eksik veri yönetimi |
| Etiket kullanımı | Dizi konumları ön plandadır | Satır indeksleri ve sütun adları doğrudan kullanılabilir |
| Dosya işlemleri | Temel veri okuma-yazma için sınırlıdır | CSV, Excel ve benzeri tablo kaynaklarıyla çalışmaya daha uygundur |
| Tipik kullanım | Sayısal algoritmanın çekirdeği | Veriyi hazırlama, inceleme ve raporlama |
Aynı işlemde birlikte kullanım
Örneğin bir satış tablosundaki fiyatların ortalamasını hesaplamak için pandas sütununu kullanabilirsiniz:
Python:
import pandas as pd
satislar = pd.DataFrame({
"fiyat": [100, 150, 200]
})
ortalama = satislar["fiyat"].mean()
print(ortalama)
Beklenen çıktı
150.0 değeridir. Bu örnekte tabloyu ve sütun adını pandas yönetir. Aynı sütunun sayısal dizi olarak işlenmesi gerektiğinde to_numpy() ile NumPy dizisine dönüştürebilirsiniz:
Python:
fiyatlar = satislar["fiyat"].to_numpy()
print(fiyatlar * 1.10)
Beklenen çıktı
[110. 165. 220.] olur. Bu sonuç fiyatların yüzde 10 artırılmış hâlidir; ancak hesaplama ürün adlarını veya satır etiketlerini taşımaz. Hesaplama sonrasında değerleri yeniden tabloya eklemeniz gerekebilir.Sık karıştırılan noktalar
pandas yalnızca NumPy’nin daha kullanışlı bir adı değildir. pandas, tablo verisini yönetmek için daha yüksek seviyeli bir arayüz sağlar; NumPy ise genel amaçlı dizi hesaplarının temelini oluşturur. Bu yüzden pandas ile yapılan her işlem NumPy sözdizimiyle aynı değildir.
NumPy dizilerinde değerlerin aynı türde olması beklenirken pandas DataFrame içindeki farklı sütunlar farklı veri türlerine sahip olabilir. Örneğin
urun sütunu metin, fiyat sütunu sayı ve tarih sütunu tarih bilgisi içerebilir. Bu esneklik tablo analizini kolaylaştırır; karşılığında veri türlerini kontrol etme ihtiyacı doğurur.Bir pandas sütununu NumPy dizisine dönüştürmek, sütun adlarını ve tablo indeksini otomatik olarak korumaz. Yalnızca sayısal değerlerle işlem yapacaksanız bu kayıp sorun olmayabilir. Sonuçların hangi satıra veya kayda ait olduğu önemliyse işlemi DataFrame ya da Series üzerinde sürdürmek daha güvenlidir.
Kısa seçim kuralı
Veriniz satır ve sütunlardan oluşuyor, sütun adlarını kullanarak filtreleme veya gruplama yapıyorsanız pandas ile başlayın. Veriniz zaten dizi veya matris biçiminde ve amacınız sayısal hesaplama yapmaksa NumPy kullanın. Dosyadan gelen tabloyu analiz edip ardından matematiksel bir algoritma çalıştıracaksanız en pratik yol pandas ile veriyi hazırlayıp gerektiğinde ilgili sütunları NumPy dizisine dönüştürmektir.