Kısa Pandas Alıştırmaları

Pandas; python dilinde yazılmış NumPy üzerine kurulu açık kaynaklı bir veri düzenleme aracıdır.

DataFrame; Pandas içerisindeki ana veri saklama yapısıdır, veriyi satırlar ve kolonlar şeklinde tutabilirsiniz.
Series: Pandas içinde başka bir veri yapısı, DataFrame’den en belirgin farkı tek kolonlu bir yapısı olması.

Pandas aracı, eğer Anaconda kullanıyorsanız kurulu gelen ortamınızda(environment) hazır bulunması gerekir, eğer yok ise Anaconda arayüzü ile kurabilir, Anaconda kullanmıyorsanız pip install pandas komutu ile kurulumu yapabilirsiniz.

Bir dictionary ile DataFrame’imizi oluşturalım.

import pandas as pd


dict = {
"plaka": ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18"],
"isim": ["Adana", "Adıyaman", "Afyonkarahisar", "Ağrı", "Amasya", "Ankara", "Antalya", "Artvin", "Aydın", "Balıkesir", "Bilecik", "Bingöl", "Bitlis", "Bolu", "Burdur", "Bursa", "Çanakkale", "Çankırı"],
"alan": [13.844, 7.337, 14.016, 11.099, 5.628, 25.632, 20.177, 7.393, 8.116, 14.583, 4.179, 8.004, 8.294, 8.313, 7.175, 10.813, 9.817, 7.542]
}

sehirler = pd.DataFrame(dict)

print(sehirler)
#      alan            isim plaka
#0   13.844           Adana    01
#1    7.337        Adıyaman    02
#2   14.016  Afyonkarahisar    03
#3   11.099            Ağrı    04
#4    5.628          Amasya    05
# ....
# ....

# pandas'ın atadığı index değerlerini bu şekilde, 
# verimizin satır sayısı kadar uzunlukta bir seri vererek değiştirebiliriz. 
sehirler.index = dict["plaka"]


Yukarıda birkaç şehir bilgisi ile oluşturulan bir python dictionary’sini pandas Dataframe’ine çeviriyoruz. Çıktı olarak bir excel tablosu gibi bize verilerimizi matris halde verecektir. Burada pandas her satır için sıfırdan başlayarak bir index değeri oluşturdu ve her kolon için dictionary anahtar kelimelerini kullandı.

Daha genel olarak kullanılan DataFrame oluşturma metodu ise bir csv dosyasını kullanmaktır. Yukarıdaki verileri uygun bir şekilde bir csv dosyasında tuttuğumuzu varsayarak, aşağıdaki tek bir satır ile yine aynı DataFrame’i elde etmiş oluruz. Bu metot, ayrım karakteri, başlıklar, index kolonu gibi pek çok parametre alır, dökümantasyona şuradan ulaşabilirsiniz.

sehirler = pd.read_csv("sehirler.csv")

Verilere Erişim
DataFrame içinde tutulan verilere erişim için ihtiyacınıza göre pek çok yol var. En basitinden bir kaç örnek;

# şehir isimlerini içeren bir DataFrame dönecektir
print(sehirler["isim"])

# şehir isimlerini içeren bir Pandas Serisi dönecektir (fazladan köşeli parantezlere dikkat)
print(sehirler[["isim"]])

# verimizin ilk 4 satırını dönecektir
print(sehirler[0:4])
# buradaki [0:4] notasyonu yabanci geliyorsa, buna python içinde dilimleme (slice) denir
# bir liste için başlangıç ve bitiş indexlerini yazarak istenen dilime ulaşılır

loc ve iloc
loc ve iloc kullanılarak da verilere erişilebilir. Burada iloc, bir integer kullanarak değerlere erişmemizi sağlıyor, loc ise index etiketi(örneğimizde atadığımız plaka değerleri) kullanarak erişmemizi sağlıyor.

Aşağıdaki iki komut da aynı veriyi döndürecek. Fakat timeit ile kontrol ettiğimde iloc yaklaşık 100µs daha hızlı.

# satır indexi 1 olan kayıt
sehirler.iloc[1]

# satır index etiketi(label) 02 olan kayıt
# index için plakaları atamıştık ve plakalar string olduğu için "02" şeklinde arama yapabiliyoruz
sehirler.loc["02"]

Veri Arama
Berlirli bir değerin olduğu satırları aramak istiyorsak ne yapacağız. Onun için de biraz daha kompleksleşmiş bir loc metodu kullanabiliriz.

# Plakası 16 olan şehir
sehirler.loc[sehirler["plaka"] == "12"]

# yüzölçümü 5km kareden daha büyük şehirler
sehirler.loc[sehirler["alan"] > 5]

Burada örneğin sehirler[“plaka”] == “12” komutu boolean bir liste döndürecektir. Bu listede koşulu sağlayan satırlarımız True diğerleri False olacak. Bu listeyi loc metoduna vererek True olan kayıtları döndürmesini sağlıyoruz.

Yaralı linkler;

Pandas dökümantasyonu.

Cheat Sheet

Aracı oluşturan Wes McKinney’in hazırladığı 10 dakikalık tur burada (çok eski, çoğu konsept değişmiş olabilir).

Şu sitede, etkileşimli bir arayüz ile deneyebilirsiniz.

“Kısa Pandas Alıştırmaları” üzerine 2 yorum

  1. Hocam notasyonlar için birkaç örnek daha yapabilir misiniz? ilk 3 satır, son 2 satır ya da 1 den 4. satıra kadar gibi. Teşekkür eder çalışmalarınızda başarılar dilerim.

Bir Cevap Yazın