• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Pandas loc ile iloc arasındaki fark nedir?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 0
  • Etiketler Etiketler
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni

Temel fark: etiket ve sıra numarası​


Pandas’ta loc satır ve sütunları adlarına, yani etiketlerine göre seçer; iloc ise satır ve sütunların sayısal konumunu kullanır. Bu nedenle seçim ölçütünüz bir indeks veya sütun adıysa loc, “kaçıncı satır ve sütun?” diye düşünüyorsanız iloc kullanmalısınız. Aynı veri üzerinde iki yöntemi karşılaştırarak doğru sonucu hemen görebilirsiniz.

Python:
import pandas as pd

df = pd.DataFrame(
    {
        "ad": ["Ali", "Buse", "Cem"],
        "puan": [85, 92, 78]
    },
    index=["ogrenci_1", "ogrenci_2", "ogrenci_3"]
)

print(df.loc["ogrenci_2", "puan"])
print(df.iloc[1, 1])

Her iki ifade de varsayımsal bu veri üzerinde 92 sonucunu verir. Ancak loc["ogrenci_2", "puan"] etiketi, iloc[1, 1] ise ikinci satır ve ikinci sütunun sırasını kullanır.

loc ve iloc karşılaştırması​


İki yöntemin temel farkları seçim biçiminde ve dilimleme davranışında ortaya çıkar:
Ölçütlociloc
Seçim türüSatır ve sütun etiketleriyle seçim yapar.Sıfırdan başlayan sayısal konumlarla seçim yapar.
Satır örneğidf.loc["ogrenci_2"]df.iloc[1]
Sütun örneğidf.loc[:, "puan"]df.iloc[:, 1]
DilimlemeEtiket aralığının bitişini genellikle dahil eder.Python dilimlemesi gibi bitiş konumunu dahil etmez.
Uygun kullanımAnlamlı indeks veya sütun adlarıyla çalışırken.Verinin fiziksel sıra konumuyla çalışırken.
Örneğin df.loc["ogrenci_1":"ogrenci_2"] iki öğrenciyi de seçer; çünkü loc etiket diliminde bitiş etiketi dahildir. df.iloc[0:2] de ilk iki satırı seçer, fakat burada 2 konumundaki satır seçime katılmaz.

Sütun ve satır seçimi​


loc ile etiketleri açıkça belirtebilirsiniz:

Python:
adlar = df.loc[:, "ad"]
ilk_iki_sutun = df.loc[:, ["ad", "puan"]]
ikinci_ogrenci = df.loc["ogrenci_2", :]

İki nokta üst üste işareti :, ilgili eksendeki tüm değerleri ifade eder. df.loc[:, "ad"] bütün satırlardan ad sütununu alır. iloc ile aynı seçim sütunun konumuna göre yazılır:

Python:
adlar = df.iloc[:, 0]
ilk_iki_sutun = df.iloc[:, 0:2]
ikinci_ogrenci = df.iloc[1, :]

Burada sütunların sırası değişirse iloc[:, 0] artık ad sütununu göstermeyebilir. Buna karşılık sütun adı değişmediği sürece loc[:, "ad"] aynı sütunu hedefler. Bu nedenle kalıcı ve okunabilir kodda, belirli bir sütunu adıyla seçmek çoğu zaman daha güvenlidir.

Koşula göre seçimde loc kullanımı​


Bir koşula uyan satırları seçerken genellikle loc tercih edilir. Örneğin puanı 80’den yüksek öğrencileri ve yalnızca ad ile puan sütunlarını almak için:

Python:
sonuc = df.loc[df["puan"] > 80, ["ad", "puan"]]
print(sonuc)

Beklenen çıktı şöyledir:

Kod:
             ad  puan
ogrenci_1    Ali    85
ogrenci_2   Buse    92

Buradaki df["puan"] > 80 ifadesi her satır için True veya False üretir. loc yalnızca True olan satırları seçer. Bu kullanım, koşulun hangi sütuna dayandığını açıkça gösterdiği için iloc ile konumları elle hesaplamaktan daha anlaşılırdır.

Hangisini ne zaman seçmelisiniz?​


İndeks veya sütun adlarının anlamına güveniyorsanız loc kullanın. Örneğin belirli bir müşteriyi müşteri numarasıyla bulmak, bir koşula uyan kayıtları seçmek veya adı değişmeyecek bir sütunu almak için uygundur.

Yalnızca konum önem taşıyorsa iloc kullanın. Örneğin ilk satırı almak için df.iloc[0], son sütunu almak için df.iloc[:, -1] yazabilirsiniz. Ancak veri sıralanır, satır eklenir veya sütunların yeri değişirse sayısal konuma dayalı kod farklı bir kaydı seçebilir.

Kısa kural: Etiketle seçiyorsanız loc, konumla seçiyorsanız iloc. Bir sütunun adını biliyor ve veri düzeni değişebiliyorsa, sütun numarasını sabitlemek yerine loc kullanmak daha güvenli bir seçimdir.

Sık karıştırılan durum: etiket ile konum aynı olmak zorunda değildir​


İndeks etiketleri sayılardan oluşsa bile bunlar otomatik olarak konum anlamına gelmez:

Python:
df2 = pd.DataFrame(
    {"deger": [10, 20, 30]},
    index=[10, 20, 30]
)

print(df2.loc[20, "deger"])
print(df2.iloc[1, 0])

Her iki ifade de 20 sonucunu verir; fakat nedenleri farklıdır. loc[20, "deger"], etiketi 20 olan satırı seçer. iloc[1, 0] ise ikinci satırın ve ilk sütunun konumunu seçer. İndeks etiketleri 100, 200, 300 olsaydı loc[20] çalışmazdı; ikinci satırı yine iloc[1] ile seçebilirdiniz.

Ayrıca loc ile olmayan bir etiket istenirse etiket bulunamadığına ilişkin hata alabilirsiniz; iloc ile veri sınırının dışındaki bir konum istenirse konum aralığı hatası oluşur. Böyle bir durumda önce df.index, df.columns ve df.shape değerlerini yazdırarak kullandığınız etiketlerin veya konumların gerçekten mevcut olduğunu kontrol edin.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic
Geri
Üst