Pandalarda LOC ve ILOC: Pandalarda LOC ve ILOC Arasındaki Fark
Yayınlanan: 2020-08-01İçindekiler
Pandalarda Loc ve iloc
Yeni Python geliştiricileri arasında yaygın bir kafa karışıklığı nedeni, loc ile iloc arasındaki farktır. Her ikisi de oldukça benzer görünüyor ve benzer görevleri yerine getiriyor. Yani bu herhangi bir öğrenciyi şaşırtabilir.
iloc ve loc arasındaki farkı öğrenmek istiyorsanız doğru yere geldiniz, çünkü bu yazıda bu konuyu ayrıntılı olarak tartışacağız. Bu işlevler arasındaki temel farkın ne olduğunu öğrenecek ve ardından kavramı daha iyi anlamak için bunları çalışırken göreceksiniz. Pandalar hakkında daha fazla bilgi edinmek için veri bilimi kurslarımıza göz atın.
Başlayalım.
loc ve iloc arasındaki fark
1. Python'da iloc
Seçim için Python'da iloc'u kullanabilirsiniz. Tamsayı-konum tabanlıdır ve pozisyona göre seçim yapmanıza yardımcı olur. Bu nedenle, dizin 5'e sahip satırı bulmak istiyorsanız, iloc, adı veya etiketi ne olursa olsun size veri çerçevesinin beşinci satırını gösterecektir.
İşte Python'da bir iloc örneği:
>>> mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
… {'a': 100, 'b': 200, 'c': 300, 'd': 400},
… {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
>>> df = pd.DataFrame(mydict)
>>> df
abcd
0 1 2 3 4
1 100 200 300 400
2 1000 2000 3000 4000
Yukarıdaki veri çerçevesi için iloc işlevini kullanarak satırları bir skaler tamsayı ile indeksleyeceğiz:
>>> type(df.iloc[0])
<sınıf 'pandas.core.series.Series'>
>>> df.iloc[0]
1
b2
c3
4
Ad: 0, dtype: int64
2. Pandalarda yer
Etiketleri kullanarak birden çok satıra ve sütuna erişmek için Pandalarda loc'u kullanabilirsiniz; ancak, bunu bir boolean dizisiyle de kullanabilirsiniz.
Dizini 5 olan bir satırı bulmak için loc kullanırsanız, onunla beşinci satırı alamazsınız. Bunun yerine, yalnızca '5' adlı satırı alacaksınız.
Pandalarda bir loc örneği:
>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
… index=['kobra', 'engerek', 'yan sarıcı'],
… sütunlar=['max_speed', 'kalkan'])
>>> df
max_speed kalkanı
kobra 1 2
engerek 4 5
yandan sarıcı 7 8
Yukarıdaki, satırı çıkaracağımız tabloydu:
>>> df.loc['engerek']
max_speed 4
kalkan 5
İsim: engerek, dtype: int64
loc ve iloc için Ayrıntılı Örnek
Seçim için bu fonksiyonların her ikisini de kullansak da, ayrımlarını anlamak için ayrıntılı bir örnek tartışsak daha iyi olur.
Örneğimizde, kaggle'da bulunan telekom müşteri veri setini kullanacağız. Bunu bir veri çerçevesine ekleyeceğiz:
df = pd.read_csv(“Projeler/churn_prediction/Telco-Customer-Churn.csv”)
df.kafa ()
İD | Cinsiyet | Kıdemli Vatandaş | Ortak | bağımlılar | görev süresi | Telefon | Çoklu Hatlar | internet | Güvenlik | |
0 | 7590-VHVEG | Dişi | 0 | Evet | Numara | 1 | Numara | Telefon yok | DSL | Numara |
1 | 5575-GNVDE | Erkek | 0 | Numara | Numara | 34 | Evet | Numara | DSL | Evet |
2 | 3668-QPYBK | Erkek | 0 | Numara | Numara | 2 | Evet | Numara | DSL | Evet |
Bu veri kümesinde 21 sütun vardır; sadece birkaçını gösterme amaçlı gösterdik. Daha önce tartıştığımız gibi, verileri etikete göre seçmek için loc kullanıyoruz. Burada, sütunların adları cinsiyet, görev süresi, OnlineSecurity gibi sütun etiketleridir; bunların tümü, etiketlerin yanı sıra sütun adlarıdır.
Belirli bir dizin atamadığımız için pandalar varsayılan olarak satırlar için bir tamsayı dizini oluşturur. Satır etiketleri, 0'dan başlayan ve yukarı çıkan tam sayılardır. Bu örnekte, loc ve iloc'un nasıl farklı davrandığını göreceğiz.
- "1" satırını ve "Ortak" sütununu seçin
df.loc[1, 'Ortak']
Çıktı: 'Hayır'
'1' satırının 'Ortak' sütununda bulunan değeri gösterir.
- '4' satır etiketlerini ve 'müşteri kimliği' ve 'cinsiyet' sütunlarını seçin
df.loc[:4, ['müşteri kimliği', 'cinsiyet']]
Müşteri Kimliği | Cinsiyet | |
0 | 7590-VHVEG | Dişi |
1 | 5575-GNVDE | Erkek |
2 | 3668-QPYBK | Erkek |
3 | 7795-CFOCW | Erkek |
4 | 9237-HQITU | Dişi |
- "1", "2", "3" ve "Bağımlı" sütun satır etiketlerini seçin
df.loc[[1,2,3], 'Bağımlılıklar']
1 Hayır
2 Hayır
3 Hayır
Ad: Bağımlılar, dtype: nesne
Bu sefer veri çerçevesini filtreleyeceğiz ve iloc veya loc uygulayacağız:
- Partneri olan bir müşterinin “10” ve “PhoneService” ve “InternetService” sütunlarına satır etiketlerini seçin (Partner 'evet' olmalıdır)
df [df.Partner == 'Evet'].loc:10, ['Telefon Hizmeti', 'İnternet Hizmeti']]
Yukarıdaki durumda, veritabanına bir filtre uyguladık ancak dizini değiştirmedik, bu nedenle çıktımız filtremizin gerektirdiği satırların birden çok etiketini atladı. Bu yüzden burada loc[:10] kullanarak “10”a kadar etiketli satırları seçtik.
Öte yandan, burada iloc'u kullanır ve filtreyi uygularsak, iloc'un etiketlerden bağımsız olarak konuma göre seçtiği gibi 10 satır elde ederiz. iloc[:10] uygularsak elde edeceğimiz sonuç şudur:

df[df.Partner == 'Evet'].iloc[:10, [6,8]]
Telefon Hizmeti | İnternet servisi | |
0 | Numara | DSL |
8 | Evet | Fiber optik |
10 | Evet | DSL |
12 | Evet | Fiber optik |
15 | Evet | Fiber optik |
18 | Evet | DSL |
21 | Evet | Numara |
23 | Evet | DSL |
24 | Evet | DSL |
26 | Evet | Fiber optik |
Sütunları seçmek için yöntemimizi değiştirmemiz gerektiğini fark etmiş olmalısınız.
Okuyun: Python Pandaları Eğitimi
- iloc ile ilk 5 sütunu ve ilk 5 satırı seçin
df.iloc[:4, :4]
Müşteri Kimliği | Cinsiyet | Yaşlı | Ortak | |
0 | 7590-VHVEG | Dişi | 0 | Evet |
1 | 5575-GNVDE | Erkek | 0 | Numara |
2 | 3668-QPYBK | Erkek | 0 | Numara |
3 | 7795-CFOCW | Erkek | 0 | Numara |
Sondan konumları seçmek için iloc'u kullanabiliriz. Bunun için sadece negatif tamsayılar (-1, -2, vb.) kullanmamız ve onlarla başlamamız gerekecek.
- Son 5 sütunu ve son 5 satırı seçin
df.iloc[-5:, -5:]
KağıtsızFaturalandırma | Ödeme şekli | Aylık maaş | Toplam Ücretler | yayık | |
7038 | Evet | Posta Çeki | 84.80 | 1990,5 | Numara |
7039 | Evet | Kredi kartı | 103.20 | 7362.9 | Numara |
7040 | Evet | elektronik kontrol | 29.60 | 346,45 | Numara |
7041 | Evet | postayla gönderilen çek | 74.40 | 306.6 | Evet |
7042 | Evet | Banka transferi | 105.65 | 6844.5 | Numara |
Lambda işlevini iloc ile de kullanabilirsiniz. (Bir lambda işlevi, Python'da tek bir ifadeye ancak herhangi bir sayıda argümana sahip olabilen küçük bir anonim işlevdir)
- 15. sıraya kadar her üçüncü satırı seçin ve yalnızca "internet hizmeti" ve "İş Ortağı" sütunlarını gösterin
df.iloc[ lambda x: (x.index x 3 == 0) & (x.index <= 150]['Partner', 'InternetService' ]]
Ortak | İnternet servisi | |
0 | Evet | DSL |
3 | Numara | DSL |
6 | Numara | Fiber optik |
9 | Numara | DSL |
12 | Evet | Fiber optik |
15 | Evet | Fiber optik |
Ayrıca arada bulunan etiketleri veya konumları da seçebiliriz.
- 4 ile 6 arasındaki sütun konumlarını ve 20 ile 25 arasındaki satır konumlarını seçin
df.iloc[20:25, 4:6]
bağımlılar | görev süresi | |
20 | Numara | 1 |
21 | Numara | 12 |
22 | Numara | 1 |
23 | Numara | 58 |
24 | Numara | 49 |
Şimdi, etiketleri iloc'a iletmeyi denerseniz, Pandalar size aşağıdaki hata mesajını gösterecektir:
ValueError: Konum tabanlı indeksleme yalnızca [tamsayı, tamsayı dilimi (BAŞLANGIÇ noktası DAHİLDİR, BİTİŞ noktası HARİÇ), tamsayı listesi benzeri, boolean dizisi] türlerine sahip olabilir
Konumları loc'a geçirirseniz benzer bir hata alırsınız.
Ayrıca Okuyun: Pandalar Röportaj Soruları
Python Hakkında Daha Fazla Bilgi Edinin
Öğrenci soru sormalı ve cevaplarını bulmalıdır. Bu makalenin Pandalarda loc (veya Python'da iloc) hakkındaki sorularınızı yanıtlayacağını umuyoruz. Nasıl çalıştıklarını anlamak için bu işlevleri farklı veri kümelerinde kendiniz denediyseniz en iyisi olur.
Python, Pandalar ve ilgili konular hakkında daha fazla bilgi edinmek istiyorsanız blogumuza gitmelisiniz. Uzmanlarımız oraya birden fazla ayrıntılı kaynak ekler.
Veri bilimi hakkında bilgi edinmek istiyorsanız, IIIT-B & upGrad'ın çalışan profesyoneller için oluşturulmuş ve 10'dan fazla vaka çalışması ve proje, uygulamalı uygulamalı atölye çalışmaları, endüstri uzmanlarıyla mentorluk, 1 Endüstri danışmanlarıyla bire bir, en iyi firmalarla 400+ saat öğrenim ve iş yardımı.
Panda DataFrame satırlarını nasıl ekleyebiliriz?
DataFrame'e satır eklemek için loc, iloc ve ix komutlarını kullanabiliriz.
1. Konum, çoğunlukla dizinimizin etiketleri için kullanılır. 4 indeksli DataFrame girişleri aradığımızı gösteren loc 4'e eklediğimizde anlaşılabilir.
2. iloc, çoğunlukla dizindeki konumları bulmak için kullanılır. Sanki iloc 4'e ekliyoruz, bu da indeks 4'te bulunan DataFrame girişlerini aradığımızı gösteriyor.
3. ix durumu karmaşıktır çünkü indeks tamsayı tabanlıysa ix'e bir etiket iletiyoruz. ix 4, DataFrame'de 4 indeksli değerler aradığımızı gösterir.
Python'daki Pandalar bağlamında yeniden indeksleme nedir?
Bir DataFrame'in satır ve sütun etiketleri, onu yeniden indekslediğimizde değişir. 'Reindex' terimi, verileri tek bir eksen boyunca belirli bir etiket kümesine hizalama sürecini ifade eder. Pandalarda, bir DataFrame'in satır ve sütunlarının indeksini değiştirmek için yeniden indeksleme kullanılabilir. Birçok panda serisi veya panda DataFrame ile bağlantılı birçok indeks veri yapısı indekslerle kullanılabilir.
Pandalarda bazı veri işlemleri nelerdir?
Pandalarda DataFrame için aşağıdaki gibi birkaç önemli veri işlemi vardır:
1. Satır ve sütun seçimi - Satır ve sütun adlarını ileterek DataFrame'de herhangi bir satır ve sütunu seçebiliriz. Tek boyutlu hale gelir ve DataFrame'den seçtiğinizde bir dizi olarak kabul edilir.
2. Veri Filtreleme - DataFrame'deki bazı boolean ifadeleri kullanarak verileri filtreleyebiliriz.
3. Boş Değerler - Öğelere hiçbir veri verilmediğinde, bir Boş değer alırlar. Genellikle NaN olarak gösterilen farklı sütunlarda hiçbir değer olamaz.