Pandas: conoscere l’indice dei DataFrame
L’indicizzazione dei DataFrame in Pandas per Python consente un accesso efficiente e diretto a dati specifici all’interno di un DataFrame. Con l’indice di un DataFrame in Pandas è possibile selezionare righe e colonne specifiche, facilitando molto l’analisi dei dati.
- Certificato SSL e protezione DDoS
- Velocità, flessibilità e scalabilità
- Dominio e consulente personale
- 1 anno gratis del gestionale di fatturazione elettronica FlexTax
Che cosa fa l’indicizzazione?
L’indicizzazione di un DataFrame in Pandas serve a facilitare la selezione di determinati elementi del DataFrame. A tal fine è possibile selezionare righe e colonne in base alle loro posizioni o ai loro nomi. Gli indici possono essere utili per trovare e manipolare i dati più velocemente offrendo una specie di “anagrafe” della struttura dei dati.
La sintassi di DataFrame.index
in Pandas
È possibile visualizzare le etichette dell’indice di un DataFrame in Pandas utilizzando la proprietà index
. La sintassi si presenta così:
DataFrame.index
pythonSintassi per l’indicizzazione di DataFrame
Esistono diverse possibilità per indicizzare i DataFrame in Pandas. La sintassi per l’indicizzazione varia a seconda dell’operazione desiderata.
Indicizzazione con etichette (nomi delle colonne)
I DataFrame in Pandas possono sfruttare i nomi delle colonne per l’indicizzazione. A tal fine creiamo innanzitutto un DataFrame di esempio:
import pandas as pd
# Creazione di un DataFrame di esempio
data = {
'Nome': ['Alice', 'Bob', 'Charlie'],
'Età': [25, 30, 35],
'Città': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)
pythonIl DataFrame si presenta così:
Nome Età Città
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
Se ora desideri accedere a tutti i valori di una colonna specifica, puoi utilizzare il suo nome insieme all’operatore []
per l’indicizzazione. È sufficiente indicare il nome della colonna nell’operatore di indicizzazione sotto forma di stringa di Python:
# Accesso alla colonna “Età”
print(df['Età'])
pythonCome risultato otterrai i diversi valori delle età:
0 25
1 30
2 35
Nome: Età, dtype: int64
Se non ti interessa una colonna sola, ma più colonne, puoi semplicemente specificare i loro nomi nell’operatore di indicizzazione, separandoli con delle virgole.
Indicizzazione con loc[]
(nomi delle righe)
Per accedere a una riga specifica del tuo DataFrame devi utilizzare l’indicizzatore loc in Pandas. A questo indicizzatore è possibile assegnare il nome o il numero della riga. Nell’esempio di codice seguente prendiamo in considerazione lo stesso DataFrame già usato in precedenza, ma in questo caso dobbiamo estrarre la colonna zero con i valori di “Alice”:
print(df.loc[0])
pythonCome previsto, il risultato mostra ora i valori relativi ad “Alice”:
Nome Alice
Età 25
Città New York
Nome: 0, dtype: object
Indicizzazione con iloc[]
(numeri di riga e colonna)
Esiste un’altra possibilità, probabilmente la più utilizzata, per accedere a elementi specifici del tuo DataFrame, ossia tramite i numeri di riga e colonna. Per lavorare con l’indice numerico dei DataFrame in Pandas è necessario utilizzare la proprietà iloc dei DataFrame.
# Accesso alla riga zero
print(df.iloc[0])
# Accesso al valore nella riga zero e nella prima colonna
print(df.iloc[0, 1])
pythonL’utilizzo di iloc[]
dà i risultati seguenti e restituisce i valori previsti:
Nome Alice
Età 25
Città New York
Nome: 0, dtype: object
25
Indicizzazione di singoli valori
Se ti interessa soltanto un valore specifico del tuo DataFrame, l’indicizzatore at
ti permette di estrarre quel valore specifico in modo rapido ed elegante. È sufficiente definire la riga e la colonna in questione in cui cercare il valore con i loro nomi. In pratica, se ti interessa trovare il luogo di residenza di Bob, devi utilizzare la colonna “Città” e la prima riga:
print(df.at(1, 'Città'))
pythonCome desiderato, il risultato è il luogo di residenza di Bob, ossia “Los Angeles”.
In alternativa è possibile utilizzare l’indicizzatore iat
, simile ad at
, ma che funziona con la posizione anziché con il nome. Lo stesso risultato dell’esempio di codice precedente si ottiene utilizzando iat
come segue:
print(df.iat(1, 2))
pythonIndicizzazione booleana
È possibile indicizzare i sottoinsiemi di un DataFrame anche in base a una condizione specifica. In questo caso si parla di indicizzazione booleana. La condizione da verificare deve restituire il valore True
o False
e va inserita direttamente nell’operatore di indicizzazione. Per estrarre solo le righe in cui la persona ha più di 30 anni è possibile procedere come segue:
# Selezione delle righe in cui l'età è maggiore di 30
print(df[df[Età] > 30])
pythonCome previsto, la condizione sopra indicata si applica solo a “Charlie”, che ha 35 anni. Il risultato è quindi:
Nome Età Città
2 Charlie 35 Chicago
Ricorda che con l’indicizzazione booleana puoi utilizzare qualsiasi operatore di confronto booleano che restituisca i valori True
o False
. Troverai ulteriori informazioni sui diversi operatori Python nell’articolo della nostra guida sull’argomento.