LOC vs ILOC în Pandas: Diferența dintre LOC și ILOC în Pandas

Publicat: 2020-08-01

Cuprins

Loc și iloc în Pandas

O cauză comună de confuzie în rândul dezvoltatorilor noi Python este loc vs. iloc. Ambele par foarte asemănătoare și îndeplinesc sarcini similare. Așa că acest lucru poate încurca orice student.

Dacă vrei să afli diferența dintre iloc și loc, ai ajuns la locul potrivit, pentru că în acest articol vom discuta în detaliu acest subiect. Veți afla care este diferența cheie dintre aceste funcții și apoi le veți vedea în acțiune pentru a înțelege mai bine conceptul. Consultați cursurile noastre de știință a datelor pentru a afla mai multe despre Pandas.

Să începem.

Diferența dintre loc și iloc

1. iloc în Python

Puteți utiliza iloc în Python pentru selecție. Este bazat pe locații întregi și vă ajută să selectați după poziție. Deci, dacă doriți să găsiți rândul cu indicele 5, iloc vă va afișa al cincilea rând al cadrului de date, indiferent de numele sau eticheta acestuia.

Iată un exemplu de iloc în Python:

>>> 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

Vom indexa rândurile cu un număr întreg scalar, folosind funcția iloc pentru cadrul de date de mai sus:

>>> tip(df.iloc[0])

<clasa „pandas.core.series.Series”>

>>> df.iloc[0]

a 1

b 2

c 3

d 4

Nume: 0, dtype: int64

2. loc în Pandas

Puteți folosi loc în Pandas pentru a accesa mai multe rânduri și coloane folosind etichete; cu toate acestea, îl puteți utiliza și cu o matrice booleană.

Dacă utilizați loc pentru a găsi un rând cu indicele 5, nu veți obține al cincilea rând cu acesta. În schimb, veți obține doar rândul care are numele „5”.

Iată un exemplu de loc în Pandas:

>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],

… index=['cobra', 'viperă', 'sidewinder'],

… coloane=['max_speed', 'shield'])

>>> df

scut max_speed

cobra 1 2

viperă 4 5

sidewinder 7 8

Mai sus a fost tabelul din care vom extrage rândul:

>>> df.loc['viper']

viteza_max 4

scutul 5

Nume: viper, dtype: int64

Exemplu detaliat pentru loc vs iloc

Chiar dacă folosim ambele funcții pentru selecție, cel mai bine ar fi să discutăm un exemplu detaliat pentru a înțelege distincțiile lor.

În exemplul nostru, vom folosi setul de date pentru clienți teleco, care este disponibil pe kaggle. Îl vom adăuga la un cadru de date:

df = pd.read_csv(„Projects/churn_prediction/Telco-Customer-Churn.csv”)

df.head ()

ID gen Sr.Cetatean Partener Dependenti posesiune Telefon Linii multiple Internet Securitate
0 7590-VHVEG Femeie 0 da Nu 1 Nu Nici un telefon DSL Nu
1 5575-GNVDE Masculin 0 Nu Nu 34 da Nu DSL da
2 3668-QPYBK Masculin 0 Nu Nu 2 da Nu DSL da

Acest set de date are 21 de coloane; am arătat doar câteva în scop demonstrativ. După cum am discutat deja, folosim loc pentru a selecta datele după etichetă. Aici, numele coloanelor sunt etichetele lor, cum ar fi gen, mandat, OnlineSecurity; toate sunt numele coloanelor, precum și etichetele.

Deoarece nu am atribuit niciun index specific, panda ar crea un index întreg pentru rânduri în mod implicit. Etichetele rândurilor sunt numere întregi, care încep de la 0 și cresc. În acest exemplu, vom vedea cum loc și iloc se comportă diferit.

  • Selectați rândul „1” și coloana „Partener”

df.loc[1, „Partener”]

Ieșire: „Nu”

Afișează valoarea prezentă în coloana „Partener” de pe rândul „1”.

  • Selectați etichetele de rând „4” și coloanele „ID client” și „sex”

df.loc[:4, ['customerID', 'gender']]

Număr de înregistrare client

gen

0

7590-VHVEG

Femeie

1

5575-GNVDE

Masculin

2

3668-QPYBK

Masculin

3

7795-CFOCW

Masculin

4

9237-HQITU

Femeie

  • Selectați etichetele de rând „1”, „2”, „3” și coloana „Dependenți”.

df.loc[[1,2,3], „Dependenti”]

1 nr

2 nr

3 Nu

Nume: Dependenți, dtype: obiect

De data aceasta, vom filtra cadrul de date și vom aplica iloc sau loc:

  • Selectați etichetele de rând în coloanele „10” și „PhoneService” și „InternetService” ale unui client care are un partener (partenerul ar trebui să fie „da”).

df [df.Partner == 'Da'].loc:10, ['PhoneService', 'InternetService']]

În cazul de mai sus, am aplicat un filtru în baza de date, dar nu am schimbat indexul, astfel încât rezultatul nostru a omis mai multe etichete ale rândurilor pe care le-a cerut filtrul nostru. Deci, folosind loc[:10] aici, am selectat rândurile care aveau etichete până la „10”.

Dacă, pe de altă parte, folosim iloc aici și aplicăm filtrul, vom obține 10 rânduri pe măsură ce iloc selectează după poziție, indiferent de etichete. Iată rezultatul pe care îl vom obține dacă aplicăm iloc[:10]:

df[df.Partner == 'Da'].iloc[:10, [6,8]]

PhoneService Serviciu de internet
0 Nu DSL
8 da Fibra optica
10 da DSL
12 da Fibra optica
15 da Fibra optica
18 da DSL
21 da Nu
23 da DSL
24 da DSL
26 da Fibra optica

Trebuie să fi observat că trebuie să ne schimbăm metoda de a selecta coloanele.

Citiți: Tutorial Python Pandas

  • Selectați primele 5 coloane și primele 5 rânduri cu iloc

df.iloc[:4, :4]

Număr de înregistrare client gen Cetăţean în vârstă Partener
0 7590-VHVEG Femeie 0 da
1 5575-GNVDE Masculin 0 Nu
2 3668-QPYBK Masculin 0 Nu
3 7795-CFOCW Masculin 0 Nu

Putem folosi iloc pentru a selecta pozițiile de la sfârșit. Pentru asta, va trebui pur și simplu să folosim numere întregi negative (-1, -2, etc.) și să începem cu ele.

  • Selectați ultimele 5 coloane și ultimele 5 rânduri

df.iloc[-5:, -5:]

Facturare fără hârtie Modalitate de plată Taxe lunare Taxe totale Putinei
7038 da Cec trimis prin poștă 84,80 1990.5 Nu
7039 da Card de credit 103.20 7362,9 Nu
7040 da Cec electronic 29.60 346,45 Nu
7041 da Cec trimis prin poștă 74,40 306,6 da
7042 da Transfer bancar 105,65 6844,5 Nu

Puteți utiliza și funcția lambda cu iloc. (O funcție lambda este o funcție anonimă mică în Python care poate avea o singură expresie, dar orice număr de argumente)

  • Selectați fiecare al treilea rând până la al 15-lea și afișați numai coloanele „serviciu de internet” și „Partener”

df.iloc[ lambda x: (x.index x 3 == 0) & (x.index <= 150]['Partner', 'InternetService' ]]

Partener Serviciu de internet
0 da DSL
3 Nu DSL
6 Nu Fibra optica
9 Nu DSL
12 da Fibra optica
15 da Fibra optica

De asemenea, putem selecta etichete sau poziții prezente între ele.

  • Selectați pozițiile coloanei între 4 și 6 și pozițiile rândurilor între 20 și 25

df.iloc[20:25, 4:6]

Dependenti posesiune
20 Nu 1
21 Nu 12
22 Nu 1
23 Nu 58
24 Nu 49

Acum, dacă ați încerca să transmiteți etichete la iloc, Pandas vă va afișa următorul mesaj de eroare:

ValueError: indexarea bazată pe locație poate avea numai tipuri [întreg, felie întreg (punctul START este INCLUS, punctul END este EXCLUS), tip listă de numere întregi, matrice booleană]

Veți primi o eroare similară dacă treceți poziții către loc.

Citește și: Întrebări la interviu Pandas

Aflați mai multe despre Python

Un elev trebuie să pună întrebări și să-și găsească răspunsurile. Sperăm că acest articol ar fi răspuns la întrebările dumneavoastră despre loc în Pandas (sau iloc în Python). Cel mai bine ar fi să încercați singur aceste funcții pe diferite seturi de date pentru a înțelege cum funcționează.

Dacă doriți să aflați mai multe despre Python, Pandas și subiecte relevante, ar trebui să accesați blogul nostru. Experții noștri adaugă mai multe resurse detaliate acolo.

Dacă sunteți curios să aflați despre știința datelor, consultați programul Executive PG în știința datelor de la IIIT-B și upGrad, care este creat pentru profesioniști care lucrează și oferă peste 10 studii de caz și proiecte, ateliere practice practice, mentorat cu experți din industrie, 1 -on-1 cu mentori din industrie, peste 400 de ore de învățare și asistență profesională cu firme de top.

Cum putem adăuga rânduri de Pandas DataFrame?

Pentru a insera rânduri în DataFrame, putem folosi comenzile loc, iloc și ix.

1. Locul este folosit mai ales pentru etichetele indexului nostru. Poate fi înțeles ca atunci când inserăm în loc 4, ceea ce indică că căutăm intrări DataFrame cu un indice de 4.
2. Iloc este folosit mai ales pentru a găsi locații în index. Este ca și cum am introduce în iloc 4, ceea ce indică că căutăm intrări DataFrame care sunt prezente la indexul 4.
3. Cazul ix este complicat deoarece trecem o etichetă lui ix dacă indexul este bazat pe numere întregi. ix 4 indică faptul că căutăm în DataFrame valori cu un index de 4.

Ce este reindexarea în contextul Pandas în Python?

Etichetele rândurilor și coloanelor unui DataFrame sunt modificate atunci când îl reindexăm. Termenul „reindexare” se referă la procesul de aliniere a datelor la un set specific de etichete de-a lungul unei singure axe. În Pandas, reindexarea poate fi utilizată pentru a modifica indexul rândurilor și coloanelor unui DataFrame. Multe structuri de date index conectate cu multe serii panda sau DataFrame panda pot fi utilizate cu indici.

Care sunt unele operațiuni de date în Pandas?

Există mai multe operațiuni de date importante pentru DataFrame în Pandas, care sunt după cum urmează:

1. Selectarea rândurilor și coloanelor - Prin trecerea numelor rândurilor și coloanelor, putem selecta orice rând și coloană din DataFrame. Devine unidimensional și este privit ca o serie atunci când îl alegeți din DataFrame.
2. Filtrarea datelor - Folosind unele dintre expresiile booleene din DataFrame, putem filtra datele.
3. Valori nule - Atunci când articolelor nu sunt date date, acestea primesc o valoare Nulă. Nu pot exista valori în diferitele coloane, care sunt în general reprezentate ca NaN.