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.