LOC vs ILOC nei panda: differenza tra LOC e ILOC nei panda

Pubblicato: 2020-08-01

Sommario

Loc e iloc in Panda

Una causa comune di confusione tra i nuovi sviluppatori Python è loc vs. iloc. Entrambi sembrano molto simili e svolgono compiti simili. Quindi questo può confondere qualsiasi studente.

Se vuoi scoprire la differenza tra iloc e loc, sei nel posto giusto, perché in questo articolo tratteremo questo argomento in dettaglio. Scoprirai qual è la differenza fondamentale tra queste funzioni e poi le vedrai in azione per comprendere meglio il concetto. Dai un'occhiata ai nostri corsi di scienza dei dati per saperne di più sui Panda.

Iniziamo.

Differenza tra loc e iloc

1. iloc in Python

Puoi usare iloc in Python per la selezione. È basato sulla posizione intera e ti aiuta a selezionare in base alla posizione. Quindi, se vuoi trovare la riga con l'indice 5, iloc ti mostrerà la quinta riga del frame di dati indipendentemente dal suo nome o etichetta.

Ecco un esempio di iloc in 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

abc

0 1 2 3 4

1 100 200 300 400

2 1000 2000 3000 4000

Indicizzeremo le righe con un intero scalare usando la funzione iloc per il dataframe sopra:

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

<classe 'pandas.core.series.Series'>

>>> df.iloc[0]

un 1

b 2

c 3

d 4

Nome: 0, tipo d: int64

2. loc in Panda

Puoi usare loc in Pandas per accedere a più righe e colonne usando le etichette; tuttavia, puoi usarlo anche con un array booleano.

Se usi loc per trovare una riga con indice 5, non otterrai la quinta riga con essa. Invece, otterrai solo la riga che ha il nome "5".

Ecco un esempio di loc in Pandas:

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

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

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

>>> df

scudo velocità max

cobra 1 2

vipera 4 5

sidewinder 7 8

Quella sopra era la tabella da cui estrarremo la riga:

>>> df.loc['viper']

velocità_max 4

scudo 5

Nome: vipera, dtype: int64

Esempio dettagliato per loc vs iloc

Anche se utilizziamo entrambe queste funzioni per la selezione, sarebbe meglio se discutessimo un esempio dettagliato per comprenderne le distinzioni.

Nel nostro esempio, utilizzeremo il set di dati del cliente telco, disponibile su kaggle. Lo aggiungeremo a un frame di dati:

df = pd.read_csv("Progetti/previsione_abbandono/Telco-cliente-abbandono.csv")

df.head ()

ID Genere Suor Cittadina Compagno Dipendenti mandato Telefono MultipleLines Internet Sicurezza
0 7590-VHVEG Femmina 0 No 1 No Nessun telefono ADSL No
1 5575-GNVDE Maschio 0 No No 34 No ADSL
2 3668-QPYBK Maschio 0 No No 2 No ADSL

Questo set di dati ha 21 colonne; ne abbiamo mostrati solo alcuni a scopo dimostrativo. Come abbiamo già discusso, utilizziamo loc per selezionare i dati in base all'etichetta. Qui, i nomi delle colonne sono le loro etichette di colonna, come sesso, possesso, OnlineSecurity; sono tutti i nomi delle colonne e le etichette.

Poiché non abbiamo assegnato alcun indice specifico, i panda creerebbero un indice intero per le righe per impostazione predefinita. Le etichette di riga sono numeri interi, che iniziano da 0 e salgono. In questo esempio, vedremo come loc e iloc si comportano in modo diverso.

  • Seleziona la riga "1" e la colonna "Partner"

df.loc[1, 'Partner']

Uscita: 'No'

Mostra il valore presente nella colonna 'Partner' della riga '1'.

  • Seleziona le etichette di riga "4" e le colonne "ID cliente" e "sesso"

df.loc[:4, ['ID cliente', 'sesso']]

identificativo del cliente

Genere

0

7590-VHVEG

Femmina

1

5575-GNVDE

Maschio

2

3668-QPYBK

Maschio

3

7795-CFOCW

Maschio

4

9237-HQITU

Femmina

  • Seleziona le etichette di riga "1", "2", "3" e la colonna "Dipendenti".

df.loc[[1,2,3], 'Dipendenti']

1 n

2 n

3 n

Nome: Dipendenti, dtype: oggetto

Questa volta, filtreremo il dataframe e applicheremo iloc o loc:

  • Seleziona le etichette di riga su "10" e le colonne "PhoneService" e "InternetService" di un cliente che ha un partner (il partner deve essere "sì")

df [df.Partner == 'Sì'].loc:10, ['Servizio Telefono', 'Servizio Internet']]

Nel caso precedente, abbiamo applicato un filtro al database ma non abbiamo modificato l'indice, quindi il nostro output ha omesso più etichette delle righe richieste dal filtro. Quindi, usando loc[:10] qui, abbiamo selezionato le righe con etichette fino a "10".

Se, d'altra parte, utilizziamo iloc qui e applichiamo il filtro, otterremo 10 righe poiché iloc seleziona per posizione indipendentemente dalle etichette. Ecco il risultato che otterremo se applichiamo iloc[:10]:

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

Servizio telefonico Servizio internet
0 No ADSL
8 Fibra ottica
10 ADSL
12 Fibra ottica
15 Fibra ottica
18 ADSL
21 No
23 ADSL
24 ADSL
26 Fibra ottica

Devi aver notato che dobbiamo cambiare il nostro metodo per selezionare le colonne.

Leggi: Tutorial Python Pandas

  • Seleziona le prime 5 colonne e le prime 5 righe con iloc

df.iloc[:4, :4]

identificativo del cliente Genere Cittadino anziano Compagno
0 7590-VHVEG Femmina 0
1 5575-GNVDE Maschio 0 No
2 3668-QPYBK Maschio 0 No
3 7795-CFOCW Maschio 0 No

Possiamo usare iloc per selezionare le posizioni dalla fine. Per questo, dovremo semplicemente usare numeri interi negativi (-1, -2, ecc.) E iniziare con loro.

  • Seleziona le ultime 5 colonne e le ultime 5 righe

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

Fatturazione senza carta Metodo di pagamento Spese mensili Spese totali Zangola
7038 Assegno inviato 84.80 1990.5 No
7039 Carta di credito 103.20 7362.9 No
7040 Assegno elettronico 29.60 346.45 No
7041 Assegno spedito 74.40 306.6
7042 Trasferimento bancario 105.65 6844.5 No

Puoi usare la funzione lambda anche con iloc. (Una funzione lambda è una piccola funzione anonima in Python che può avere una singola espressione ma un numero qualsiasi di argomenti)

  • Seleziona ogni terza riga fino alla 15a e mostra solo le colonne "servizio Internet" e "Partner".

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

Compagno Servizio internet
0 ADSL
3 No ADSL
6 No Fibra ottica
9 No ADSL
12 Fibra ottica
15 Fibra ottica

Possiamo anche selezionare etichette o posizioni intermedie.

  • Seleziona le posizioni delle colonne tra 4 e 6 e le posizioni delle righe tra 20 e 25

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

Dipendenti mandato
20 No 1
21 No 12
22 No 1
23 No 58
24 No 49

Ora, se provi a passare le etichette a iloc, Pandas ti mostrerà il seguente messaggio di errore:

ValueError: l'indicizzazione basata sulla posizione può avere solo [integer, integer slice (il punto START è INCLUSO, il punto END è ESCLUSO), listlike di interi, array booleano] tipi

Riceverai un errore simile se passi le posizioni a loc.

Leggi anche: Domande sull'intervista ai panda

Ulteriori informazioni su Python

Uno studente deve porre domande e trovare le risposte. Ci auguriamo che questo articolo abbia risposto alle tue domande su loc in Pandas (o iloc in Python). Sarebbe meglio se provassi tu stesso queste funzioni su diversi set di dati per capire come funzionano.

Se vuoi saperne di più su Python, Panda e argomenti rilevanti, dovresti visitare il nostro blog. I nostri esperti aggiungono più risorse dettagliate lì.

Se sei curioso di conoscere la scienza dei dati, dai un'occhiata al programma Executive PG in Data Science di IIIT-B e upGrad, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici, tutoraggio con esperti del settore, 1 -on-1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.

Come possiamo aggiungere righe di Pandas DataFrame?

Per inserire righe nel DataFrame, possiamo usare i comandi loc, iloc e ix.

1. La loc viene utilizzata principalmente per le etichette del nostro indice. Può essere inteso come quando inseriamo in loc 4, che indica che stiamo cercando voci DataFrame con indice 4.
2. Iloc viene utilizzato principalmente per trovare posizioni nell'indice. È come se inserissimo iloc 4, che indica che stiamo cercando voci DataFrame presenti nell'indice 4.
3. Il caso ix è complicato perché passiamo un'etichetta a ix se l'indice è a base intera. L'ix 4 indica che stiamo cercando nel DataFrame valori con un indice di 4.

Che cos'è la reindicizzazione nel contesto di Pandas in Python?

Le etichette di riga e colonna di un DataFrame vengono modificate quando lo reindicizziamo. Il termine "reindex" si riferisce al processo di allineamento dei dati a un insieme specifico di etichette lungo un singolo asse. In Panda, la reindicizzazione può essere utilizzata per modificare l'indice delle righe e delle colonne di un DataFrame. Molte strutture di dati di indice collegate a molte serie di panda o DataFrame di panda possono essere utilizzate con gli indici.

Quali sono alcune operazioni sui dati in Panda?

Esistono diverse importanti operazioni sui dati per DataFrame in Pandas, che sono le seguenti:

1. Selezione di righe e colonne - Passando i nomi delle righe e delle colonne, possiamo selezionare qualsiasi riga e colonna nel DataFrame. Diventa unidimensionale e viene considerata come una serie quando la selezioni dal DataFrame.
2. Filtraggio dei dati - Utilizzando alcune delle espressioni booleane in DataFrame, possiamo filtrare i dati.
3. Valori Null - Quando non vengono forniti dati agli articoli, ricevono un valore Null. Non possono esserci valori nelle diverse colonne, che sono generalmente rappresentate come NaN.