Pandas - iloc

iloc[] Fonksiyonu Nedir? Nasıl Kullanılır?

Veri Çerçevesindeki istenilen satır ve sütunu seçmek/görüntülemek için iloc[] metodu kullanılır. iloc[] kelimesini unutmamak için İndex Location (Konumun İndeks Değeri) ya da İnteger Location (Konumun Tamsayı değeri) gibi düşünebilir, hafızanızda kodlayabilirsiniz. Bir başka ifadeyle, iloc[] için, Tamsayı değerine dayalı konum indeksleme metodu diyebiliriz. Esas olarak iloc[] metodu, hem satır hem de sütun numarası alarak çalışır.

Veri_Cercevesi_Adı.iloc[Satir_Numarası, Sütun_Numarası]

iloc[] metodunun alabileceği parametreler şunlardır:

Öncelikle Pandas Kütüphanesini içe aktarıp, kodlama esnasında hızlı olması adına bu kütüphaneye pd adını atayalım;

import pandas as pd

Bu eğitimde, fonksiyon ve metotlar konusunu anlatırken kullanmak üzere, basit bir Veri Çerçevesi (Data Frame) oluşturalım ve oluşturduğumuz Veri Çerçevesinin içeriğini görelim;

sozluk = {"isim" : ["Mustafa", "Halil", "Burak", "Emre", "Ersin", "Sertaç", "Furkan","Murat","Ahmet","Abdülkadir"],
                    "yaş" : [25, 38, 41, 23, 37, 52, 30, 23, 40, 38],
                   "iş-meslek" : ["mühendis", "programcı", "akademisyen", "yönetici","amir","mühendis", "yönetici","müdür","veteriner","yönetici"]}
veri = pd.DataFrame(sozluk)
print(veri)
isim yaş iş-meslek
0 Mustafa 25 mühendis
1 Halil 38 programcı
2 Burak 41 akademisyen
3 Emre 23 yönetici
4 Ersin 37 amir
5 Sertaç 52 mühendis
6 Furkan 30 yönetici
7 Murat 23 müdür
8 Ahmet 40 veteriner
9 Abdülkadir 38 yönetici

Veri çerçevemizde istediğimiz satır/sütun kesişimindeki değeri .iloc[] metodu ile seçelim.

print(veri.iloc[8,2])

Çıktı:

'veteriner'

iloc[] metodu, parametre olarak tam sayı alabileceği gibi, sayı listesi de alabilir. Bildiğiniz gibi Python'da liste veri tipleri köşeli parantez [] ile ifade ediliyor. O nedenle iloc[] metoduna parametre olarak liste veri tipi girileceği zaman içiçe köşeli parantezler (hem satıra hemde sütuna ait listeler yazılacağı için) konuyu yeni öğrenenlerde kafa karışıklığına sebep olabilir. Anlatmak istediğimi aşağıdaki koda bakarak rahatlıkla anlayabilirsiniz.

iloc[[satır_listesi], [sütun_listesi]]

Yukarıda oluşturduğumuz veri çerçevemizi kullanarak, listelerden müteşekkil bir dilimleme yapalım.

print(veri.iloc[[1,3,5],[0,2]])
isim iş-meslek
1 Halil programcı
3 Emre yönetici
5 Sertaç mühendis

Sadece Satırları Listelemek

Bir Tamsayı ile Satır Seçimi

iloc[] metoduna parametre olarak sadece bir tamsayı değeri girildiğinde, girilen sayıya (indeks bilgisine) ait satır verisi döndürülür. Bu veri, Seri (Series) tipindedir. Hemen aşağıdaki örneğe bakalım.

print(veri.iloc[5])

Çıktı:

isim           Sertaç
yaş                52
-meslek    mühendis
Name: 5, dtype: object

Bir Sayı Listesi ile Satır Seçimi

Veri çerçevemizden belirli bazı satırları seçmek istersek iloc[] metoduna parametre olarak bir liste tanımlamalıyız. Bu liste, bir satırdan başlayıp diğer bir satıra kadar olan aralık (dilimleme) olabileceği gibi tek tek te belirtilebilir. Şimdi bunları inceleyelim.

Örneğin veri çerçevemizde indeks değeri 3, 5 ve 7 olan satırları seçmek istersek aşağıdaki şekilde kod yazmamız gerekir.

print(veri.iloc[[3,5,7]])
isim yaş iş-meslek
3 Emre 23 yönetici
5 Sertaç 52 mühendis
7 Murat 23 müdür

print(veri.iloc[[3,5,7]]) koduna dikkat ederseniz iloc[] metoduna parametre olarak sadece bir adet köşeli parantez yazıldı, ikinci köşeli parantez yazılmadı. Bu demek oluyor ki, parametre olarak sadece satır bilgisi var yani sütunlarda seçme ya da kısıtlamaya işlemi yapılmadı, tüm sütun bilgileri gösterilmeli. Zaten Çıktıya baktığımızda anlattığımız gibi sonuç elde ettiğimizi görüyoruz.

Dilimleyerek Satır Seçimi

Python'da listeler konusunu okuduğunuzda, dilimlemenin nasıl yapıldığını da görmüş olmalısınız. Kısaca bahsedecek olursak, dilimleme için : karakteri kullanılır.

: karakterinin solunda başlangıç, sağında bitiş değeri yazılır. Elimizde veri çerçevemizin indeks değerleri gibi 0 ile 9 arasında sayılardan oluşan bir liste varsa, bu listeden aralık seçmek yani dilimleme yapmak istersek aşağıdaki kodu yazmalıyız.

[1:5]

Yukarıdaki kodun anlamı, 1. öğeden başlayarak 5. öğeye kadar (yani 5. öğe dahil DEĞİL) dilimleme yap, 1,2,3,4 sonucunu ver.

[3:]

Yukarıdaki kodun anlamı, 3. öğeden başlayarak listenin sonuna kadar dilimleme yap, 3,4,5,6,7,8,9 sonucunu ver.

[3:] koduna dikkat ederseniz, :'dan sonra kısıtlama/sınırlama getirilmemiştir, yani liste sona kadar devam eder.

Bir aralık belirterek veri çerçevemizde dilimleme yapalım ve sonucu görelim;

print(veri.iloc[1:5])
isim yaş iş-meslek
1 Halil 38 programcı
2 Burak 41 akademisyen
3 Emre 23 yönetici
4 Ersin 37 amir

Dilimleme yaparken iloc[] metodunun içine ayrıca köşeli parantez kullanmadığımıza dikkat edin.

Belirli bir satırdan başlayıp, veri çerçevesinin sonuna kadar giden bir dilimleme yapmak istersek, aşağıda bulunan kod gibi :'nin sağına değer yazmamalı, boş bırakmalıyız.

print(veri.iloc[3:])
isim yaş iş-meslek
3 Emre 23 yönetici
4 Ersin 37 amir
5 Sertaç 52 mühendis
6 Furkan 30 yönetici
7 Murat 23 müdür
8 Ahmet 40 veteriner
9 Abdülkadir 38 yönetici

Yukarıdaki anlatımın tersi olan ilk satırdan başlayıp, veri çerçevesinin istenilen satırına kadar giden bir dilimleme yapmak istersek te, aşağıda bulunan kod gibi :'nin soluna değer yazmamalı, boş bırakmalıyız.

print(veri.iloc[:4])
isim yaş iş-meslek
0 Mustafa 25 mühendis
1 Halil 38 programcı
2 Burak 41 akademisyen
3 Emre 23 yönetici

Satır ve Sütunları Belirterek Listelemek

Yukarıda yazdığımız veri.iloc[8,2] kodu, hem satır hemde sütun belirterek değer elde ettiğimiz bir indeksleme yöntemidir.

Satır ve Sütunda dilimleme yapmak

Hem satırda hemde sütunda dilimleme yapmak istersek aşağıdaki şekilde kod yazmalıyız;

print(veri.iloc[3:8,:2])
isim yaş
3 Emre 23
4 Ersin 37
5 Sertaç 52
6 Furkan 30
7 Murat 23

veri.iloc[3:8,:2] kodu ile, 3 - 8 arası satır, 0 - 2 arası sütun verileri dilimlenmiş. (Satırlarda, 3'ten başlayan 8'de biten bir sınırlama yazılmış, Sütunlarda başlangıçta sınır yok yani 0'dan başlıyor, 2. sütuna kadar sınırlama getirilmiş.)

Satırla aynı uzunluktaki mantık (boole) listesiyle / maskesiyle Satır Seçimi

Python'da Mantık (boolean) işlemleri 0 ya da 1, Evet ya da Hayır anlamında, True ya da False sonucu döndürür. Bu mantı anlamak için, yukarıda oluşturduğumuz 10 satırlık veri çerçevemizi kullanalım. Örneğin 1., 3., 6. ve 9. indisleri gizlemek isteyelim. O halde görmek istediğimiz satırlar için True, gizlemek istediğimiz satırlar için False anahtar kelimelerini sırasıyla liste veri tipi olarak yazmalı ve iloc[] metoduna paramatre olarak eklemeliyiz.

print(veri.iloc[[True, False, True, False, True, True, False, True, True, False]])
isim yaş iş-meslek
0 Mustafa 25 mühendis
2 Burak 41 akademisyen
4 Ersin 37 amir
5 Sertaç 52 mühendis
7 Murat 23 müdür
8 Ahmet 40 veteriner