Quando si cerca di dare un senso a un DataFrame di grandi dimensioni in Pandas, potrebbe essere necessario sottoimpostarlo per colonne e righe. In questo tutorial mostreremo i casi d'uso più diffusi del partizionamento di colonne del tuo DataFrame.
Inizieremo impostando il nostro esempio DataFrame, cosa che faremo eseguendo il seguente codice Python nel nostro ambiente preferito (per semplicità, io uso Anaconda e Jupyter Lab).
import pandas as pd # import the pandas library
languages = ({"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
"avg_difficulty_level": [3, 2, 2, 1],
"avg_salary": [120, 100, 120, 80],
"applications": [10,15,14,20]})
# Now let's convert our dict to a DataFrame
languages = pd.DataFrame.from_dict(languages)
Ora, esaminiamo le prime righe di Dataframe usando il metodo head().
languages.head()
Come puoi vedere, questo è un DataFrame piuttosto semplice che useremo come esempio in questo post:
| |
linguaggio |
avg_difficulty_level |
stipendio_media |
applicazioni |
| 0 |
Pitone |
3 |
120 |
10 |
| 1 |
C diesis |
2 |
100 |
15 |
| 2 |
Javascript |
2 |
120 |
14 |
| 3 |
PHP |
1 |
80 |
20 |
Filtraggio di una singola colonna
Inizieremo con il caso più semplice, che consiste nel sottoimpostare una colonna dal nostro set di dati. L'esecuzione del comando seguente creerà un oggetto Series:
Per nome/etichetta
languages["language"]
L'output è una serie:
0 Pitone
1 C diesis
2 Javascript
3 PHP
Nome: lingua, dtype: oggetto
type(languages["language"])
panda.core.series.Series
Per indice
Il comando seguente restituirà anche una serie contenente la prima colonna
languages.iloc[:,0]
Selezione di più colonne
Per nome
Quando si passa un elenco di colonne, Panda restituirà un DataFrame contenente parte dei dati.
languages[["language", "applications"]]
| |
linguaggio |
applicazioni |
| 0 |
Pitone |
10 |
| 1 |
C diesis |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Per etichetta (con loc)
df.loc[:,["language","applications"]]
Il risultato sarà simile.
Per indice
Ora recuperiamo più colonne usando l'indice:
languages.iloc[: ,[0,3]]
| |
linguaggio |
applicazioni |
| 0 |
Pitone |
10 |
| 1 |
C diesis |
15 |
| 2 |
Javascript |
14 |
| 3 |
PHP |
20 |
Per condizione
In questo caso, mostreremo solo le colonne il cui nome corrisponde a un'espressione specifica. Useremo il metodo di filtro abbastanza pratico:
languages.filter(axis = 1, like="avg")
Appunti:
- possiamo anche filtrare in base a una specifica espressione regolare (regex).
- Possiamo applicare il parametro axis=0 per filtrare per valore di riga specifico.
Filtra righe specifiche per condizione
Ecco un modo abbastanza semplice per sottoimpostare DataFrame in base a un valore di riga:
languages[(languages["applications"] > 15)]
Abbiamo un solo risultato:
languages[(languages["applications"] > 15)]
| |
linguaggio |
avg_difficulty_level |
stipendio_media |
applicazioni |
| 3 |
PHP |
1 |
80 |
20 |