.loc satır ve sütun adlarını (etiketleri), .iloc ise sayısal indisleri (pozisyonları) kullanır. Her ikisini de örneklerle nasıl kullanacağınızı öğrenin.
Pandas’ı öğrenirken hepimizin kafasını karıştıran konulardan biri .loc ile .iloc arasındaki ayrımdır.
Bu karışıklığa son verelim ve bu iki yöntem arasındaki farkı netleştirelim. Bolca örnek vereceğim; yazının sonunda farkın çok daha açık olacağını umuyorum.
Pandas’ta .loc ve .iloc Nedir?
.loc ve .iloc, Pandas DataFrame’lerinin temel öznitelikleridir ve belirli veri alt kümelerini seçmek için kullanılır. Amaçları, tüm DataFrame yerine belirli bir kısmına erişip onu düzenlemeyi sağlamaktır.
Özellik
.loc
.iloc
Sözdizimi
df.loc[row_indexer, column_indexer]
df.iloc[row_indexer, column_indexer]
İndeksleme Yöntemi
Etikete dayalı indeksleme
Pozisyona dayalı indeksleme
Başvuru İçin Kullanılan
Satır ve sütun etiketleri (adları)
Satır ve sütunların sayısal indisleri (0’dan başlayarak)
Tablodan gördüğümüz gibi sözdizimi oldukça benzer. Fark, row_indexer ve column_indexer argümanlarını nasıl kullandığımızda ortaya çıkar. Bunun nedeni, iki yöntemin veriyi farklı şekilde indekslemesidir: .loc etiket adlarına göre indekslerken, .iloc argüman olarak satır ve sütunların sayısal pozisyon indislerini alır.
Önce .loc ile başlayarak her iki yöntemi de ayrıntılı inceleyelim.
.loc Kullanımı: Etiketlerle Seçim
Kavramları somutlaştırmak için, satır indeksini Customer ID’nin temsil ettiği, df adlı bu DataFrame ile varsayımsal bir müşteri veritabanını düşünelim:
Customer ID
Name
Country
Region
Age
C123
John Doe
United States
North America
67
C234
Petra Müller
Germany
Europe
51
C345
Ali Khan
Pakistan
Asia
19
C456
Maria Gonzalez
Mexico
North America
26
C567
David Lee
China
Asia
40
.loc ile satır seçmenin dört temel yolu vardır. Bunlar şunlardır:
Tek bir satır seçme
Birden çok satır seçme
Satır dilimi seçme
Koşullu satır seçimi
.loc ile tek bir satır seçme
Tek bir satır seçmek için almak istediğimiz satırın etiketini row_indexer olarak kullanırız. Buna göre sözdizimi şöyle görünür: df.loc['row_label']. Bunu kullanarak müşterimiz Ali Khan ile ilgili tüm bilgileri gösterelim:
Sıralı olmak zorunda olmayan birden çok satır seçmek istiyorsak, row_indexer argümanı olarak satır etiketlerinden oluşan bir liste geçirmemiz gerekir. Bu da normal .loc sözdizimi için bir çift, etiket listesi için bir çift olmak üzere iki köşeli parantez çifti kullanmamız gerektiği anlamına gelir.
df.loc[['row_label_1', 'row_label_2']] satırı, listede belirtilen df DataFrame’inin iki satırını döndürür. Diyelim ki yalnızca Ali Khan’ın değil, David Lee’nin bilgilerini de görmek istiyoruz:
İki satır etiketinin arasına iki nokta üst üste koyarak bir satır aralığı seçebiliriz: df.loc['row_label_start':'row_label_end']. DataFrame’imizin ilk dört satırını şu şekilde görüntüleyebiliriz:
Çıktı, row_label_end ile belirtilen satırı da içerir. Bu, daha sonra ele alacağımız .iloc’ta farklıdır.
Birden çok satır istesek de yalnızca bir çift köşeli parantez kullanırız. Çeşitli satırları belirtmek için liste kullanmadığımızdan, iki köşeli parantez kullanmak bir SyntaxError döndürür.
.loc ile koşullu satır seçimi
Koşullu bir ifadeye göre de satırları döndürebiliriz. Belirli bir koşulu sağlayıp sağlamadıklarına göre tüm satırları filtreleyip yalnızca sağlayanları gösterebiliriz.
İlgili sözdizimi df.loc[conditional_expression] şeklindedir; burada conditional_expression, belirli bir sütundaki izin verilen değerlere ilişkin bir ifadedir.
Sayısal olmayan veriye sahip sütunlar (ör. Name veya Country) için ifadede yalnızca eşit veya eşit değil operatörleri kullanılabilir; çünkü değerler arasında doğal bir sıralama yoktur. Örneğin, Asya’dan olmayan müşterilerin tüm satırlarını döndürebiliriz:
Sütun seçmek için, row_indexer argümanından sonra gelen column_indexer argümanını belirtmemiz gerekir. Yalnızca column_indexer belirtmek istiyorsak, tüm satırları döndürmek, filtreyi yalnızca sütunlarda uygulamak istediğimizi bir şekilde işaretlemeliyiz. Bunu nasıl yapabileceğimize bakalım!
Tek bir sütun seçmek, ilgili sütunun etiketiyle column_indexer’ı belirtmekle yapılabilir. Tüm satırları almak için row_indexer’ı tek bir iki nokta üst üste ile belirtmemiz gerekir. Böylece şu sözdizimine ulaşırız: df.loc[:, 'column_name'].
Sıralı olmak zorunda olmayan bir DataFrame sütunlarının birden fazlasını döndürmek istiyorsak, sütun etiketlerinden oluşan bir liste geçirmemiz gerekir: df.loc[:, [col_label_1, 'col_label_2']].
Son çıktımıza tüm müşterilerin Age bilgisini de eklemek isteseydik, şöyle yapardık:
İki sütun etiketinin arasına iki nokta üst üste koymak, belirtilen sütunlar arasındaki tüm sütunları (son sütun dahil) seçer. Standart sözdizimi şöyledir: df.loc[:, 'col_start':'col_end'].
Müşterilerimizin Name, Country ve Region bilgileriyle ilgileniyorsak, kod satırımız şöyle olabilir:
Hem row_indexer hem de column_indexer belirtmek de mümkündür. Bu, DataFrame’den tek bir hücre (bir bilgi) getirmek için kullanılabilir. Bunu yapmak için bir satır ve bir sütunu şu sözdizimiyle belirtiriz: df.loc['row_label', 'column_name'] .
Daha kullanışlı olan durum ise tam olarak ilgilendiğimiz satır ve sütun kümesine odaklanan bir alt DataFrame döndürmektir. Her iki indeksleyiciyi de köşeli parantezlerle liste olarak ya da iki nokta üst üste ile dilim olarak belirtebilir, hatta satır seçimini koşullu ifadeyle de birleştirebiliriz.
Aşağıda, Age değeri 30’un üzerinde olan her müşterinin Name, Country ve Region bilgilerini döndüren bir örnek var:
.iloc, etiket yerine pozisyona göre seçer. .iloc kullanmanın standart sözdizimi şudur: df.iloc[row_indexer, column_indexer]. Dikkat edilmesi gereken iki özel nokta var:
0’dan başlama: İlk satır ve sütunun indisi 0’dır; ikincisi 1, vb.
Aralık son değerinin hariç tutulması: Dilim kullanıldığında, iki nokta üst üsteden sonra belirtilen satır veya sütun seçime dahil edilmez.
.iloc ile tek bir satır seçme
Tek bir satır, row_indexer olarak satır indis numarasını temsil eden tamsayı kullanılarak seçilebilir. .loc’ta yaptığımız gibi bir etiket dizgesi değil tamsayı girdiğimiz için tırnak işaretine gerek yoktur. df adlı bir DataFrame’in ilk satırını döndürmek için df.iloc[0] girin.
Örnek DataFrame’imizde bu kod satırı John Doe’nun bilgilerini döndürür:
.iloc’ta birden çok satır seçimi .loc’ta olduğu gibi çalışır—satır indis tamsayılarını köşeli parantezli bir liste içinde gireriz. Sözdizimi şu şekildedir: df.iloc[[0, 3, 4]].
Müşteri tablomuzdaki ilgili çıktı aşağıda görülebilir:
Satır dilimi seçmek için iki satır indis tamsayısının arasına iki nokta üst üste koyarız. Burada, az önce bahsettiğimiz hariç tutma kuralına dikkat etmeliyiz.
df.iloc[1:4] satırını bu kavramı örneklemek için ele alabiliriz. 1 numaralı indis ikinci satır demektir; dilimimiz oradan başlar. 4 indis tamsayısı beşinci satırı temsil eder—ancak .iloc dilim seçiminde sonu kapsamadığı için, çıktı bu satırdan bir önceki satıra kadar olan tüm satırları içerir. Dolayısıyla ikinci, üçüncü ve dördüncü satırı döndürür.
.iloc ile sütun seçiminin mantığı, şimdiye dek öğrendiklerimizi takip eder. Tekli sütunlar, çoklu sütunlar ve sütun dilimleri için nasıl çalıştığını görelim.
.loc’ta olduğu gibi, column_indexer’a geçmeden önce row_indexer’ı belirtmek önemlidir. df’in üçüncü sütununun değerlerini tüm satırlar için almak üzere df.iloc[:, 2] gireriz.
DataFrame’imizde üçüncü sütun Region olduğundan, bu kod satırı onun getirilmesiyle sonuçlanacaktır:
Ardışık olmak zorunda olmayan birden çok sütunu seçmek için yine column_indexer olarak tamsayılardan oluşan bir liste girebiliriz. df.iloc[:, [0, 3]] satırı hem birinci hem dördüncü sütunları döndürür.
Bizim örneğimizde görüntülenen bilgiler, her müşterinin Name ve Age değerleridir:
.iloc ile dilim seçerken, column_indexer mantığı row_indexer ile aynıdır. İki nokta üst üsteden sonraki tamsayıyla temsil edilen sütun çıktıya dahil edilmez. İkinci ve üçüncü sütunları almak için kod satırı şöyle olmalıdır: df.iloc[:, 1:3].
Aşağıdaki satır müşterilerimizle ilgili tüm coğrafi bilgileri döndürür:
.iloc hakkında öğrendiklerimizi birleştirerek satır ve sütun seçimini birlikte yapabiliriz. Yine, tek bir hücre veya bir alt DataFrame döndürmek mümkündür. Üçüncü satır ile dördüncü sütunun kesişimindeki tek hücreyi döndürmek için df.iloc[2, 3] gireriz.
.loc’ta olduğu gibi, her iki indeksleyiciyi de köşeli parantezlerle liste olarak veya iki nokta üst üste ile dilim olarak belirtebiliriz. Satırları koşullu ifadeler kullanarak seçmek teknik olarak .iloc ile de mümkündür; ancak önerilmez. Etiket adlarını ve .loc’u kullanmak genellikle çok daha sezgiseldir ve hata yapma olasılığı daha düşüktür.
Bu son örnek, DataFrame’imizdeki birinci, ikinci ve beşinci satır için Country, Region ve Age bilgilerini görüntüler:
Bazı senaryolar doğası gereği .loc veya .iloc’u tercih eder. Örneğin, satırlar veya sütunlar üzerinde gezinmek etiketlerden ziyade tamsayılarla daha kolay ve sezgiseldir. Zaten belirttiğimiz gibi, sütun değerlerine dayalı koşullarla satırları filtrelemek, sütun etiket adlarını kullanarak daha az hataya açıktır.
.loc’u Tercih Ettiren Senaryolar
.iloc’u Tercih Ettiren Senaryolar
DataFrame’inizin anlamlı indeks/sütun adları vardır.
Satırlarda/sütunlarda pozisyonlarına göre gezinirsiniz.
Sütun değerlerine ilişkin koşullara göre filtreleme yapmanız gerekir.
İndeks/sütun adları göreviniz için önemli değildir.
.loc ve .iloc ile KeyError, NameError ve IndexError
Olası sorunlara bakalım. .loc kullanırken sık görülen bir tuzak KeyError’dır. Bu hata, DataFrame’imizde bulunmayan bir satır veya sütun etiketine erişmeye çalıştığımızda ortaya çıkar. Bunu önlemek için, kullandığımız etiketlerin doğru olduğundan, DataFrame’inizdeki mevcut etiketlerle eşleştiğinden emin olmalı ve yazım hatalarını iki kez kontrol etmeliyiz.
Ayrıca, .loc ile belirtilen etiketler için her zaman tırnak işaretleri kullanmak önemlidir. Bunları unutmak bir NameError döndürür.
Bir IndexError, .iloc kullanırken, DataFrame’inizin geçerli indis aralığının dışında bir tamsayı pozisyonu belirtirsek oluşabilir. Bu, erişmeye çalıştığınız indisin var olmaması—DataFrame’inizdeki satır veya sütun sayısını aşması ya da negatif olması—durumunda meydana gelir. Bu hatayı önlemek için, DataFrame’in boyutlarını kontrol edin ve geçerli aralık içindeki uygun indis değerlerini kullanın.
Sonuç
Umarım bu yazı faydalı olmuştur ve .loc ile .iloc arasındaki fark artık nettir. Daha fazlası için iyi birer sonraki adım olabilecek bazı kaynaklar:
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Pandas’ı öğrenirken hepimizin kafasını karıştıran konulardan biri
.locile.ilocarasındaki ayrımdır.Bu karışıklığa son verelim ve bu iki yöntem arasındaki farkı netleştirelim. Bolca örnek vereceğim; yazının sonunda farkın çok daha açık olacağını umuyorum.
Pandas’ta .loc ve .iloc Nedir?
.locve.iloc, Pandas DataFrame’lerinin temel öznitelikleridir ve belirli veri alt kümelerini seçmek için kullanılır. Amaçları, tüm DataFrame yerine belirli bir kısmına erişip onu düzenlemeyi sağlamaktır.Özellik
.loc
.iloc
Sözdizimi
df.loc[row_indexer, column_indexer]
df.iloc[row_indexer, column_indexer]
İndeksleme Yöntemi
Etikete dayalı indeksleme
Pozisyona dayalı indeksleme
Başvuru İçin Kullanılan
Satır ve sütun etiketleri (adları)
Satır ve sütunların sayısal indisleri (0’dan başlayarak)
Tablodan gördüğümüz gibi sözdizimi oldukça benzer. Fark,
row_indexervecolumn_indexerargümanlarını nasıl kullandığımızda ortaya çıkar. Bunun nedeni, iki yöntemin veriyi farklı şekilde indekslemesidir:.locetiket adlarına göre indekslerken,.ilocargüman olarak satır ve sütunların sayısal pozisyon indislerini alır.Önce
.locile başlayarak her iki yöntemi de ayrıntılı inceleyelim..loc Kullanımı: Etiketlerle Seçim
Kavramları somutlaştırmak için, satır indeksini
Customer ID’nin temsil ettiği,dfadlı bu DataFrame ile varsayımsal bir müşteri veritabanını düşünelim:Customer ID
Name
Country
Region
Age
C123
John Doe
United States
North America
67
C234
Petra Müller
Germany
Europe
51
C345
Ali Khan
Pakistan
Asia
19
C456
Maria Gonzalez
Mexico
North America
26
C567
David Lee
China
Asia
40
.loc ile satır seçmenin dört temel yolu vardır. Bunlar şunlardır:
.loc ile tek bir satır seçme
Tek bir satır seçmek için almak istediğimiz satırın etiketini
row_indexerolarak kullanırız. Buna göre sözdizimi şöyle görünür:df.loc['row_label']. Bunu kullanarak müşterimiz Ali Khan ile ilgili tüm bilgileri gösterelim:C345
Name
Ali Khan
Country
Pakistan
Region
Asia
Age
19
.loc ile birden çok satır seçme
Sıralı olmak zorunda olmayan birden çok satır seçmek istiyorsak,
row_indexerargümanı olarak satır etiketlerinden oluşan bir liste geçirmemiz gerekir. Bu da normal.locsözdizimi için bir çift, etiket listesi için bir çift olmak üzere iki köşeli parantez çifti kullanmamız gerektiği anlamına gelir.df.loc[['row_label_1', 'row_label_2']]satırı, listede belirtilendfDataFrame’inin iki satırını döndürür. Diyelim ki yalnızca Ali Khan’ın değil, David Lee’nin bilgilerini de görmek istiyoruz:Customer ID
Name
Country
Region
Age
C345
Ali Khan
Pakistan
Asia
19
C567
David Lee
China
Asia
40
.loc ile satır dilimi seçme
İki satır etiketinin arasına iki nokta üst üste koyarak bir satır aralığı seçebiliriz:
df.loc['row_label_start':'row_label_end']. DataFrame’imizin ilk dört satırını şu şekilde görüntüleyebiliriz:Customer ID
Name
Country
Region
Signup Date
C123
John Doe
United States
North America
67
C234
Petra Müller
Germany
Europe
51
C345
Ali Khan
Pakistan
Asia
19
C456
Maria Gonzalez
Mexico
North America
26
Burada akılda tutulması gereken iki nokta var:
row_label_endile belirtilen satırı da içerir. Bu, daha sonra ele alacağımız.iloc’ta farklıdır.SyntaxErrordöndürür..loc ile koşullu satır seçimi
Koşullu bir ifadeye göre de satırları döndürebiliriz. Belirli bir koşulu sağlayıp sağlamadıklarına göre tüm satırları filtreleyip yalnızca sağlayanları gösterebiliriz.
İlgili sözdizimi
df.loc[conditional_expression]şeklindedir; buradaconditional_expression, belirli bir sütundaki izin verilen değerlere ilişkin bir ifadedir.Sayısal olmayan veriye sahip sütunlar (ör.
NameveyaCountry) için ifadede yalnızca eşit veya eşit değil operatörleri kullanılabilir; çünkü değerler arasında doğal bir sıralama yoktur. Örneğin, Asya’dan olmayan müşterilerin tüm satırlarını döndürebiliriz:Customer ID
Name
Country
Region
Age
C123
John Doe
United States
North America
67
C234
Petra Müller
Germany
Europe
51
C456
Maria Gonzalez
Mexico
North America
26
.loc ile tek bir sütun seçme
Sütun seçmek için,
row_indexerargümanından sonra gelencolumn_indexerargümanını belirtmemiz gerekir. Yalnızcacolumn_indexerbelirtmek istiyorsak, tüm satırları döndürmek, filtreyi yalnızca sütunlarda uygulamak istediğimizi bir şekilde işaretlemeliyiz. Bunu nasıl yapabileceğimize bakalım!Tek bir sütun seçmek, ilgili sütunun etiketiyle
column_indexer’ı belirtmekle yapılabilir. Tüm satırları almak içinrow_indexer’ı tek bir iki nokta üst üste ile belirtmemiz gerekir. Böylece şu sözdizimine ulaşırız:df.loc[:, 'column_name'].Her müşterinin
Namebilgisini gösterelim:Customer ID
Name
C123
John Doe
C234
Petra Müller
C345
Ali Khan
C456
Maria Gonzalez
C567
David Lee
.loc ile birden çok sütun seçme
Sıralı olmak zorunda olmayan bir DataFrame sütunlarının birden fazlasını döndürmek istiyorsak, sütun etiketlerinden oluşan bir liste geçirmemiz gerekir:
df.loc[:, [col_label_1, 'col_label_2']].Son çıktımıza tüm müşterilerin
Agebilgisini de eklemek isteseydik, şöyle yapardık:Customer ID
Name
Age
C123
John Doe
67
C234
Petra Müller
51
C345
Ali Khan
19
C456
Maria Gonzalez
26
C567
David Lee
40
.loc ile sütun dilimi seçme
İki sütun etiketinin arasına iki nokta üst üste koymak, belirtilen sütunlar arasındaki tüm sütunları (son sütun dahil) seçer. Standart sözdizimi şöyledir:
df.loc[:, 'col_start':'col_end'].Müşterilerimizin
Name,CountryveRegionbilgileriyle ilgileniyorsak, kod satırımız şöyle olabilir:Customer ID
Name
Country
Region
C123
John Doe
United States
North America
C234
Petra Müller
Germany
Europe
C345
Ali Khan
Pakistan
Asia
C456
Maria Gonzalez
Mexico
North America
C567
David Lee
China
Asia
.loc ile birleşik satır ve sütun seçimi
Hem
row_indexerhem decolumn_indexerbelirtmek de mümkündür. Bu, DataFrame’den tek bir hücre (bir bilgi) getirmek için kullanılabilir. Bunu yapmak için bir satır ve bir sütunu şu sözdizimiyle belirtiriz:df.loc['row_label', 'column_name'].Daha kullanışlı olan durum ise tam olarak ilgilendiğimiz satır ve sütun kümesine odaklanan bir alt DataFrame döndürmektir. Her iki indeksleyiciyi de köşeli parantezlerle liste olarak ya da iki nokta üst üste ile dilim olarak belirtebilir, hatta satır seçimini koşullu ifadeyle de birleştirebiliriz.
Aşağıda,
Agedeğeri 30’un üzerinde olan her müşterininName,CountryveRegionbilgilerini döndüren bir örnek var:Customer ID
Name
Country
Region
C123
John Doe
United States
North America
C234
Petra Müller
Germany
Europe
C567
David Lee
China
Asia
.iloc Kullanımı: Tamsayı Pozisyonuyla Seçim
.iloc, etiket yerine pozisyona göre seçer..ilockullanmanın standart sözdizimi şudur:df.iloc[row_indexer, column_indexer]. Dikkat edilmesi gereken iki özel nokta var:.iloc ile tek bir satır seçme
Tek bir satır,
row_indexerolarak satır indis numarasını temsil eden tamsayı kullanılarak seçilebilir..loc’ta yaptığımız gibi bir etiket dizgesi değil tamsayı girdiğimiz için tırnak işaretine gerek yoktur.dfadlı bir DataFrame’in ilk satırını döndürmek içindf.iloc[0]girin.Örnek DataFrame’imizde bu kod satırı John Doe’nun bilgilerini döndürür:
C123
Name
John Doe
Country
United States
Region
North America
Age
67
.iloc ile birden çok satır seçme
.iloc’ta birden çok satır seçimi.loc’ta olduğu gibi çalışır—satır indis tamsayılarını köşeli parantezli bir liste içinde gireriz. Sözdizimi şu şekildedir:df.iloc[[0, 3, 4]].Müşteri tablomuzdaki ilgili çıktı aşağıda görülebilir:
Customer ID
Name
Country
Region
Age
C123
John Doe
United States
North America
67
C456
Maria Gonzalez
Mexico
North America
26
C567
David Lee
China
Asia
40
.iloc ile satır dilimi seçme
Satır dilimi seçmek için iki satır indis tamsayısının arasına iki nokta üst üste koyarız. Burada, az önce bahsettiğimiz hariç tutma kuralına dikkat etmeliyiz.
df.iloc[1:4]satırını bu kavramı örneklemek için ele alabiliriz. 1 numaralı indis ikinci satır demektir; dilimimiz oradan başlar. 4 indis tamsayısı beşinci satırı temsil eder—ancak.ilocdilim seçiminde sonu kapsamadığı için, çıktı bu satırdan bir önceki satıra kadar olan tüm satırları içerir. Dolayısıyla ikinci, üçüncü ve dördüncü satırı döndürür.Bu satırın beklendiği gibi çalıştığını görelim:
Customer ID
Name
Country
Region
Age
C234
Petra Müller
Germany
Europe
51
C345
Ali Khan
Pakistan
Asia
19
C456
Maria Gonzalez
Mexico
North America
26
.iloc ile tek bir sütun seçme
.ilocile sütun seçiminin mantığı, şimdiye dek öğrendiklerimizi takip eder. Tekli sütunlar, çoklu sütunlar ve sütun dilimleri için nasıl çalıştığını görelim..loc’ta olduğu gibi,column_indexer’a geçmeden öncerow_indexer’ı belirtmek önemlidir.df’in üçüncü sütununun değerlerini tüm satırlar için almak üzeredf.iloc[:, 2]gireriz.DataFrame’imizde üçüncü sütun
Regionolduğundan, bu kod satırı onun getirilmesiyle sonuçlanacaktır:Customer ID
Region
C123
North America
C234
Europe
C345
Asia
C456
North America
C567
Asia
.iloc ile birden çok sütun seçme
Ardışık olmak zorunda olmayan birden çok sütunu seçmek için yine
column_indexerolarak tamsayılardan oluşan bir liste girebiliriz.df.iloc[:, [0, 3]]satırı hem birinci hem dördüncü sütunları döndürür.Bizim örneğimizde görüntülenen bilgiler, her müşterinin
NameveAgedeğerleridir:Customer ID
Name
Age
C123
John Doe
67
C234
Petra Müller
51
C345
Ali Khan
19
C456
Maria Gonzalez
26
C567
David Lee
40
.iloc ile sütun dilimi seçme
.ilocile dilim seçerken,column_indexermantığırow_indexerile aynıdır. İki nokta üst üsteden sonraki tamsayıyla temsil edilen sütun çıktıya dahil edilmez. İkinci ve üçüncü sütunları almak için kod satırı şöyle olmalıdır:df.iloc[:, 1:3].Aşağıdaki satır müşterilerimizle ilgili tüm coğrafi bilgileri döndürür:
Customer ID
Country
Region
C123
United States
North America
C234
Germany
Europe
C345
Pakistan
Asia
C456
Mexico
North America
C567
China
Asia
.iloc ile birleşik satır ve sütun seçimi
.ilochakkında öğrendiklerimizi birleştirerek satır ve sütun seçimini birlikte yapabiliriz. Yine, tek bir hücre veya bir alt DataFrame döndürmek mümkündür. Üçüncü satır ile dördüncü sütunun kesişimindeki tek hücreyi döndürmek içindf.iloc[2, 3]gireriz..loc’ta olduğu gibi, her iki indeksleyiciyi de köşeli parantezlerle liste olarak veya iki nokta üst üste ile dilim olarak belirtebiliriz. Satırları koşullu ifadeler kullanarak seçmek teknik olarak.ilocile de mümkündür; ancak önerilmez. Etiket adlarını ve.loc’u kullanmak genellikle çok daha sezgiseldir ve hata yapma olasılığı daha düşüktür.Bu son örnek, DataFrame’imizdeki birinci, ikinci ve beşinci satır için
Country,RegionveAgebilgilerini görüntüler:Customer ID
Country
Region
Age
C123
United States
North America
67
C234
Germany
Europe
51
C567
China
Asia
40
.iloc vs .loc: Hangisini Ne Zaman Kullanmalı?
Genel olarak, yöntem seçimi DataFrame hakkındaki bilginize bağlı olarak şu basit kurala dayanır:
.lockullanın satır/sütunların etiketlerini (adlarını) biliyorsanız..ilockullanın satır/sütunların tamsayı pozisyonlarını biliyorsanız.Bazı senaryolar doğası gereği
.locveya.iloc’u tercih eder. Örneğin, satırlar veya sütunlar üzerinde gezinmek etiketlerden ziyade tamsayılarla daha kolay ve sezgiseldir. Zaten belirttiğimiz gibi, sütun değerlerine dayalı koşullarla satırları filtrelemek, sütun etiket adlarını kullanarak daha az hataya açıktır..loc’u Tercih Ettiren Senaryolar
.iloc’u Tercih Ettiren Senaryolar
DataFrame’inizin anlamlı indeks/sütun adları vardır.
Satırlarda/sütunlarda pozisyonlarına göre gezinirsiniz.
Sütun değerlerine ilişkin koşullara göre filtreleme yapmanız gerekir.
İndeks/sütun adları göreviniz için önemli değildir.
.loc ve .iloc ile KeyError, NameError ve IndexError
Olası sorunlara bakalım.
.lockullanırken sık görülen bir tuzakKeyError’dır. Bu hata, DataFrame’imizde bulunmayan bir satır veya sütun etiketine erişmeye çalıştığımızda ortaya çıkar. Bunu önlemek için, kullandığımız etiketlerin doğru olduğundan, DataFrame’inizdeki mevcut etiketlerle eşleştiğinden emin olmalı ve yazım hatalarını iki kez kontrol etmeliyiz.Ayrıca,
.locile belirtilen etiketler için her zaman tırnak işaretleri kullanmak önemlidir. Bunları unutmak birNameErrordöndürür.Bir
IndexError,.ilockullanırken, DataFrame’inizin geçerli indis aralığının dışında bir tamsayı pozisyonu belirtirsek oluşabilir. Bu, erişmeye çalıştığınız indisin var olmaması—DataFrame’inizdeki satır veya sütun sayısını aşması ya da negatif olması—durumunda meydana gelir. Bu hatayı önlemek için, DataFrame’in boyutlarını kontrol edin ve geçerli aralık içindeki uygun indis değerlerini kullanın.Sonuç
Umarım bu yazı faydalı olmuştur ve
.locile.ilocarasındaki fark artık nettir. Daha fazlası için iyi birer sonraki adım olabilecek bazı kaynaklar: