# Pandas loc\[\]: selezione di dati dai DataFrame

`DataFrame.loc[]` è un metodo per DataFrame disponibile nella libreria [Pandas per Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/pandas-di-python/) che serve a selezionare i dati da un DataFrame sulla base di identificatori (label o etichette). In questo modo è possibile estrarre righe e colonne di un DataFrame in modo mirato.

## La sintassi di `loc[]` in Pandas

Il metodo `loc[]` richiede come parametro l’assegnazione dell’**etichetta desiderata**. Per il resto la sintassi è molto semplice:

```python
DataFrame.loc[selection]
```

Con `loc[]` in Pandas la selezione avviene principalmente in base alle etichette. Il parametro passato può essere quindi un’**etichetta singola, una lista o una slice di etichette**. Tuttavia, è anche possibile utilizzare degli array booleani.

## Confronto fra `loc[]` e `iloc[]`

Mentre `DataFrame.loc[]` in Pandas seleziona i dati in base alle etichette, il metodo [DataFrame.iloc](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/dataframe-iloc-in-pandas-per-python/), dal nome simile al precedente, serve a selezionare i dati secondo posizioni basate su numeri interi.

L’esempio di codice seguente permette di chiarire le differenze. Innanzitutto, creiamo un [DataFrame in Pandas](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/dataframe-in-pandas-per-python/):

```python
import pandas as pd
# DataFrame di esempio
data = {'Nome': ['Anna', 'Bruno', 'Cristiano'], 'Età': [23, 35, 30]}
df = pd.DataFrame(data)
print(df)
```

Il DataFrame risultante si presenta così:

```none
Nome    Età
0   Anna     23
1   Bruno    35
2  Cristiano 30
```

A questo punto, per estrarre “Anna” dal DataFrame è possibile utilizzare sia `loc[]` che `iloc[]` in Pandas. Il risultato è lo stesso, ma il percorso per arrivarci è diverso:

```python
# Con loc per etichetta
print(df.loc[0, 'Nome'])  # Risultato: 'Anna'
# Con iloc per posizione
print(df.iloc[0, 0])  # Risultato: 'Anna'
```

## Applicazione di `DataFrame.loc[]` in Pandas

Il metodo `loc[]` in Pandas ti permette di **estrarre sottoinsiemi dal tuo DataFrame**. L’estrazione può riguardare righe o colonne, singole o multiple: `loc[]` permette quindi di mettere in pratica diversi vari casi d’uso.

### Selezione di una singola riga

Nelle parti seguenti è riportato un DataFrame di esempio con i seguenti dati:

```python
import pandas as pd
data = {
    'Nome': ['Anna', 'Bruno', 'Cristiano'],
    'Età': [23, 35, 30],
    'Città': ['Roma', 'Torino', 'Milano']
}
df = pd.DataFrame(data)
print(df)
```

Il DataFrame risultante si presenta così:

```none
Nome    Età   Città
0   Anna     23   Roma
1   Bruno    35   Torino
2  Cristiano 30   Milano
```

Per selezionare i dati della riga con l’indice 1 (che corrisponde a Bruno), è possibile utilizzare `loc[]` in Pandas:

```python
dati_bruno = df.loc[1]
print(dati_bruno)
```

Il risultato è quello previsto:

```none
Nome       Bruno
Età        35
Città      Torino
Nome: 1, dtype: object
```

### Selezione di più colonne

`DataFrame.loc[]` è adatto anche per selezionare un sottoinsieme di colonne. Il codice seguente permette di selezionare le colonne “Nome” e “Città” per tutte le righe:

```python
nome_città = df.loc[:, ['Nome', 'Città']]
print(nome_città)
```

Il risultato è un sottoinsieme del DataFrame originale:

```none
Nome     Città
0   Anna      Roma
1   Bruno     Torino
2  Cristiano  Milano
```

### Selezione condizionale

Con `loc[]` in Pandas è anche possibile selezionare le righe in base a una condizione. A tal fine è sufficiente utilizzare gli [operatori di confronto booleani](https://www.ionos.it/digitalguide/online-marketing/analisi-web/operatori-booleani-da-conoscere/). Ad esempio, il codice seguente serve a filtrare tutte le persone che hanno più di 25 anni:

```python
maggiore_di_25 = df.loc[df['Età'] > 25]
print(maggiore_di_25)
```

Lo snippet di codice precedente dà come risultato il seguente DataFrame, che contiene solo i dati delle persone che hanno più di 25 anni:

```none
Nome     Età     Città
1   Bruno     35     Torino
2  Cristiano  30     Milano
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/python-pandas-dataframe-loc/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/python-pandas-dataframe-loc/) for AI/LLM consumption.