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