Panda vs loc: qual è la differenza?


Quando si tratta di selezionare righe e colonne di un DataFrame Panda, .loc e .at sono due funzioni comunemente utilizzate.

Ecco la sottile differenza tra le due funzioni:

  • .loc può accettare più righe e colonne come argomenti di input
  • .at può accettare solo una singola riga e colonna come argomenti di input

I seguenti esempi mostrano come utilizzare in pratica ciascuna funzione con i seguenti DataFrame panda:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print (df)

  team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6
5 F 11 9 5
6 G 20 9 9
7:28 4 12

Esempio 1: come utilizzare loc in Pandas

Il codice seguente mostra come utilizzare .loc per accedere al valore nel DataFrame situato nella posizione dell’indice 0 della colonna del punto:

 #select value located at index position 0 of the points column
df. loc [0, ' points ']

18

Ciò restituisce un valore di 18 .

E il codice seguente mostra come utilizzare .loc per accedere alle righe tra i valori di indice 0 e 4, nonché alle colonne punti e assist:

 #select rows between index values 0 and 4 and columns 'points' and 'assists'
df. loc [0:4, [' points ', ' assists ']]

        assist points
0 18 5
1 22 7
2 19 7
3 14 9
4 14 12

Sia che vogliamo accedere a un singolo valore o a un gruppo di righe e colonne, la funzione .loc può fare entrambe le cose.

Esempio 2: come utilizzare at in Pandas

Il codice seguente mostra come utilizzare .at per accedere al valore nel DataFrame situato nella posizione dell’indice 0 della colonna del punto:

 #select value located at index position 0 of the points column
df. at [0, ' points ']

18

Ciò restituisce un valore di 18 .

Supponiamo tuttavia di provare a utilizzare at per accedere alle righe comprese tra i valori di indice 0 e 4 nonché alle colonne punti e assist:

 #try to select rows between index values 0 and 4 and columns 'points' and 'assists'
df. at [0:4, [' points ', ' assists ']]

TypeError : unhashable type: 'list'

Riceviamo un errore perché la funzione at non è in grado di accettare più righe o più colonne come argomenti di input.

Conclusione

Quando desideri accedere a un singolo valore in un DataFrame panda, le funzioni loc e at funzioneranno correttamente.

Tuttavia, quando desideri accedere a un gruppo di righe e colonne, solo la funzione loc è in grado di farlo.

Correlati: Pandas loc vs iloc: qual è la differenza?

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Come selezionare le righe in base a più condizioni utilizzando Pandas Loc
Come selezionare le righe in base ai valori delle colonne in Pandas
Come selezionare le righe per indice in Pandas

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *