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;
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.
Bir cevap yazın