You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: episodes/08-data-frames.md
+30-52Lines changed: 30 additions & 52 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,30 +23,24 @@ exercises: 15
23
23
24
24
## Nota sui DataFrames/Series di Pandas
25
25
26
-
Un [DataFrame][pandas-dataframe] è un insieme di [Series][pandas-series]; il DataFrame è
27
-
il modo in cui Pandas rappresenta una tabella e Series è la struttura dati che Pandas
26
+
Un [DataFrame][pandas-dataframe] è un insieme di [Series][pandas-series]; il DataFrame è il modo in cui Pandas rappresenta una tabella e Series è la struttura dati che Pandas
28
27
usa per rappresentare una colonna.
29
28
30
-
Pandas è costruito sulla base della libreria [Numpy][numpy], il che in pratica significa
31
-
che la maggior parte dei metodi definiti per gli array Numpy si applicano alle
32
-
serie/dataframe di Pandas.
29
+
Pandas è costruito sulla base della libreria [Numpy][numpy], il che in pratica significa che la maggior parte dei metodi definiti per gli array Numpy si applicano alle serie/dataframe di Pandas.
33
30
34
31
Ciò che rende Pandas così interessante è la potente interfaccia per accedere ai singoli
35
32
record della tabella, la corretta gestione dei valori mancanti e le operazioni di
36
33
database relazionale tra DataFrames.
37
34
38
35
## Selezione di valori
39
36
40
-
Per accedere a un valore nella posizione `[i,j]` di un DataFrame, abbiamo due opzioni, a
41
-
seconda del significato di `i` in uso. Ricordiamo che un DataFrame fornisce un *indice*
42
-
per identificare le righe della tabella; una riga, quindi, ha una *posizione*
37
+
Per accedere a un valore nella posizione `[i,j]` di un DataFrame, abbiamo due opzioni, a seconda del significato di `i` in uso. Ricordiamo che un DataFrame fornisce un *indice* per identificare le righe della tabella; una riga, quindi, ha una *posizione*
43
38
all'interno della tabella e una *etichetta*, che identifica in modo univoco la sua
44
39
*entrata* nel DataFrame.
45
40
46
41
## Usare `DataFrame.iloc[..., ...]` per selezionare i valori in base alla loro posizione (di ingresso)
47
42
48
-
- Può specificare la posizione tramite un indice numerico, analogamente alla versione 2D
49
-
della selezione dei caratteri nelle stringhe.
43
+
- Può specificare la posizione tramite un indice numerico, analogamente alla versione 2D della selezione dei caratteri nelle stringhe.
50
44
51
45
```python
52
46
import pandas as pd
@@ -94,7 +88,7 @@ gdpPercap_2007 5937.029526
94
88
Name: Albania, dtype: float64
95
89
```
96
90
97
-
-Otterrebbe lo stesso risultato stampando `data.loc["Albania"]` (senza un secondo
91
+
-Si otterrebbe lo stesso risultato stampando `data.loc["Albania"]` (senza un secondo
- Si otterrebbe lo stesso risultato stampando `data["gdpPercap_1952"]`
117
-
- Si ottiene lo stesso risultato anche stampando `data.gdpPercap_1952` (non consigliato,
118
-
perché facilmente confondibile con la notazione `.` per i metodi)
111
+
- Lo stesso risultato si otterrebbe anche stampando `data.gdpPercap_1952` (non consigliato,perché facilmente confondibile con la notazione `.` per i metodi)
119
112
120
113
## Seleziona più colonne o righe usando `DataFrame.loc` e una slice con nome.
Nel codice sopra riportato, scopriamo che **l'affettatura con `loc` è inclusiva ad
137
-
entrambe le estremità**, a differenza dell'affettatura con `iloc`**, in cui
138
-
l'affettatura indica tutto fino all'indice finale escluso.
129
+
Nel codice riportato sopra, scopriamo che **l’operazione di slicing con loc è inclusiva a entrambe le estremit**à, a differenza di quella con iloc, in cui vengono selezionati tutti gli elementi fino all’indice finale escluso.
139
130
140
-
## Il risultato dell'affettatura può essere usato in altre operazioni.
131
+
## Il risultato dello slicing può essere usato in altre operazioni.
141
132
142
-
- Di solito non si stampa solo una fetta.
143
-
- Tutti gli operatori statistici che lavorano su interi dataframe funzionano allo stesso
144
-
modo sulle fette.
145
-
- Ad esempio, calcolare il massimo di una fetta.
133
+
- Di solito non si stampa solo una slice.
134
+
- Tutti gli operatori statistici che lavorano su interi DataFrame funzionano allo stesso modo anche sulle slice.
135
+
- Ad esempio, possiamo calcolare il valore massimo di una slice.
@@ -443,9 +429,7 @@ Esaminiamo questo pezzo di codice riga per riga.
443
429
first = pd.read_csv('data/gapminder_all.csv', index_col='country')
444
430
```
445
431
446
-
Questa riga carica il dataset contenente i dati sul PIL di tutti i paesi in un dataframe
447
-
chiamato `first`. Il parametro `index_col='country'` seleziona quale colonna utilizzare
448
-
come etichetta di riga nel dataframe.
432
+
Questa riga carica il dataset contenente i dati sul PIL di tutti i paesi in un dataframe chiamato `first`. Il parametro `index_col='country'` seleziona quale colonna utilizzare come etichetta di riga nel dataframe.
449
433
450
434
```python
451
435
second = first[first['continent'] =='Americas']
@@ -454,8 +438,7 @@ second = first[first['continent'] == 'Americas']
454
438
Questa riga effettua una selezione: vengono estratte solo le righe di `first` per le
455
439
quali la colonna 'continente' corrisponde a 'Americhe'. Si noti come l'espressione
456
440
booleana all'interno delle parentesi, `first['continent'] == 'Americas'`, venga
457
-
utilizzata per selezionare solo le righe in cui l'espressione è vera. Provate a stampare
458
-
questa espressione! È possibile stampare anche i singoli elementi Vero/Falso?
441
+
utilizzata per selezionare solo le righe in cui l'espressione è vera. Provate a stampare questa espressione! È possibile stampare anche i singoli elementi Vero/Falso?
459
442
(suggerimento: prima assegnate l'espressione a una variabile)
Anche in questo caso applichiamo la funzione drop, ma in questo caso non eliminiamo una
474
-
riga ma un'intera colonna. Per farlo, è necessario specificare anche il parametro `axis`
475
-
(vogliamo eliminare la seconda colonna che ha indice 1).
457
+
riga ma un'intera colonna. Per farlo, è necessario specificare anche il parametro `axis` (vogliamo eliminare la seconda colonna che ha indice 1).
476
458
477
459
```python
478
460
fourth.to_csv('result.csv')
@@ -554,9 +536,7 @@ data.loc['Denmark',:]
554
536
data.loc[:,'gdpPercap_1985':]
555
537
```
556
538
557
-
Pandas è abbastanza intelligente da riconoscere il numero alla fine dell'etichetta della
558
-
colonna e non dà errore, anche se non esiste alcuna colonna denominata `gdpPercap_1985`.
559
-
Questo è utile se in seguito vengono aggiunte nuove colonne al file CSV.
539
+
Pandas è abbastanza intelligente da riconoscere il numero alla fine dell'etichetta della colonna e non dà errore, anche se non esiste alcuna colonna denominata `gdpPercap_1985`. Questo è utile se in seguito vengono aggiunte nuove colonne al file CSV.
560
540
561
541
4:
562
542
@@ -756,8 +736,7 @@ Questo comando restituisce:
756
736
'zfill']
757
737
```
758
738
759
-
È possibile utilizzare `help()` o <kbd>Shift</kbd>\+<kbd>Tab</kbd> per ottenere maggiori
760
-
informazioni sulle funzioni di questi metodi.
739
+
È possibile utilizzare `help()` o <kbd>Shift</kbd>\+<kbd>Tab</kbd> per ottenere maggiori informazioni sulle funzioni di questi metodi.
761
740
762
741
Si supponga che Pandas sia stato importato e che i dati del PIL di Gapminder per
763
742
l'Europa siano stati caricati come `data`. Quindi, utilizzare `dir()` per trovare la
0 commit comments