Corso Python e Strutture Dati
Pandas DataFrame:
metodi - I
Funzione built-in map
La funzione built-in map consente di costruire una list
trasformando tutti gli elementi di un iterable
L1= map ( Trasf() , ITERABLE)
dove: ITERABLE è un qualunque oggetto iterabile;
Trasf(): può essere: una funzione built-in
una funzione anonima
una funzione custom
Funzione built-in filter
La funzione built-in filter consente di filtrare una lista selezionan-
do solo i valori che soddisfano la condizione imposta.
L1= filter ( Condiz() , ITERABLE)
dove: Condiz() contiene la condizione che deve essere è soddisfatta per inserire
l’elemento dell’oggetto iterable nella lista. Essa può essere espressa tramite:
una funzione anonima una funzione custom
def A(X):
....: if X%2==0: return True
....: else: return False
L1=filter(A, [10,20,31])
L1=filter(lambda x: x%2==0, [10,20,31])
Funzione built-in reduce
La funzione built-in reduce consente di combinare i primi due
elementi di un oggetto iterable e di combinare in modo
ricursivo il risultato all’elemento successivo
reduce ( lambda x,y : x+y, I1)
calcolo la somma degli elementi contenuti nell’iterable I1
Series: metodo map
Il metodo map consente di trasformare i valori di una
serie, sulla base di:
una funzione built-in
S=pandas.Series( [10,20,30,40])Data una serie
una funzione anonima
un dizionario
S.map(str)
S.map(lambda x: x+1)
S.map( DZ ) dove DZ={10:’B’,20:’B’...}
una funzione custom S.map( F1 ) dove F1 è una funzione
custom
Series: metodi - sum, min, max, mean
Il metodo
la sommatoria degli elementi di S
S=pandas.Series( [10,20,30,40])Data una serie
il minimo della serie
la media della serie
S.sum()
il massimo della serie
S.min()
S.max()
S.mean()
calcola
calcola
calcola
calcola
Corso Python e Strutture Dati
maggio 2018
Pandas DataFrame:
metodi - II
DataFrame: metodo concat
Dati due DataFrame (D1 e D2), il metodo pandas.concat crea un
terzo DataFrame accodando il secondo al primo:
V1 V2
0 10 ‘a’
1 20 ‘b’
2 30 ‘c’
3 40 ‘d’
V1 V3
0 110 ‘XX’
1 120 ‘XX’
2 130 ‘YY’
3 140 ‘YY’
pandas.concat( [ DF1, DF2 ] )
V1 V2 V3
0 10 ‘a’ NaN
1 20 ‘b’ NaN
2 30 ‘c’ NaN
3 40 ‘d’ NaN
0 110 NaN ‘XX’
1 120 NaN ‘XX’
2 130 NaN ‘YY’
3 140 NaN ‘YY’
DataFrame: metodo merge
Dati due DataFrame (D1 e D2), il metodo pandas.merge crea un
terzo DataFrame combinando gli elementi dei due dataframe
V1 V2
0 10 ‘RM’
1 20 ‘RM’
2 30 ‘MI’
3 40 ‘MI’
4 50 ‘TO’
V2 V3
0 ‘RM’ ‘ROMA’
1 ‘MI’ ‘MILANO’
2 ‘TO’ ‘TORINO’
pandas.merge(DF1, DF2, on=’V2’ )
V1 V2 V3
0 10 ‘RM’ ‘ROMA’
1 20 ‘RM’ ‘ROMA’
2 30 ‘MI’ ‘MILANO’
3 40 ‘MI’ ‘MILANO’
4 50 ‘TO’ ‘TORINO’
DataFrame: metodo groupby
Dato un DataFrame, il metodo .groupby consente di scomporlo in tanti sottogruppi, di
applicare una trasformata a questi sottogruppi, e di ricomporre un DataFrame finale
impilando i risultati ottenuti
V1 V2
0 10 ‘RM’
1 20 ‘RM’
2 30 ‘MI’
3 40 ‘MI’
4 50 ‘TO’
V1 V2
0 10 ‘RM’
1 20 ‘RM’
V1 V2
2 30 ‘MI’
3 40 ‘MI’
V1 V2
4 50 ‘TO’
V1
30
V1
70
V1
50
V1
V2
‘RM’ 30
‘MI’ 70
‘TO’ 50
DF .groupby( ‘V2’ ) .sum()
DataFrame: metodo applymap
Dato un DataFrame, il metodo .applymap esegue il metodo
map per ogni colonna (vista come una Series) del dataframe
V1 V2
PROV
‘RM’ 30 120
‘MI’ 70 210
‘TO’ 50 160
‘PD’ 40 170
‘BO’ 60 160
DF.applymap(F1)
Index
columns
def F1(X):
Y=...X….
return Y
V1 V2
PROV
‘RM’ F1(30) F1(120)
‘MI’ F1(70) F1(210)
‘TO’ F1(50) F1(160)
‘PD’ F1(40) F1(170)
‘BO’ F1(60) F1(160)
Data una
funzione
DataFrame: metodo apply
Dato un DataFrame, il metodo .apply esegue una
trasformazione di sottoparti di un dataframe, rappresentate:
dalle colonne
dalle righe
da gruppi
opzione axis=0
opzione axis=1
ottenuto con .groupby
La trasformazione può essere definita tramite: a) una funzione
built-in; b) una funzione anonima; c) una funzione custom
DataFrame: metodo apply - esempi
DF =
V1 V2
PROV
‘RM’ 30 120
‘MI’ 70 210
‘TO’ 50 160
‘MI’ 40 170
‘TO’ 60 160
DF.apply(lambda x: x. mean(),
axis=1)
‘RM’ 75
‘MI’ 140
‘TO’ 105
‘MI’ 105
‘TO’ 110
DF.apply(lambda x: x. mean(),
axis=0)
V1 V2
50 62
DF.groupby(level=’PROV’)
.apply(lambda x: x. mean())
V1 V2
PROV
‘RM’ 30 120
‘MI’ 55 185
‘TO’ 55 160
LEZIONE 1..
www.fordatascientist.org
E00-PyData
E06-Pandas-DF-Methods.ipynb
CONTATTI TELEFONO
051 22 35 20
EMAIL
WORKSHOP@VICEM.IT

Strutture dati 06-dataframe

  • 1.
    Corso Python eStrutture Dati Pandas DataFrame: metodi - I
  • 2.
    Funzione built-in map Lafunzione built-in map consente di costruire una list trasformando tutti gli elementi di un iterable L1= map ( Trasf() , ITERABLE) dove: ITERABLE è un qualunque oggetto iterabile; Trasf(): può essere: una funzione built-in una funzione anonima una funzione custom
  • 3.
    Funzione built-in filter Lafunzione built-in filter consente di filtrare una lista selezionan- do solo i valori che soddisfano la condizione imposta. L1= filter ( Condiz() , ITERABLE) dove: Condiz() contiene la condizione che deve essere è soddisfatta per inserire l’elemento dell’oggetto iterable nella lista. Essa può essere espressa tramite: una funzione anonima una funzione custom def A(X): ....: if X%2==0: return True ....: else: return False L1=filter(A, [10,20,31]) L1=filter(lambda x: x%2==0, [10,20,31])
  • 4.
    Funzione built-in reduce Lafunzione built-in reduce consente di combinare i primi due elementi di un oggetto iterable e di combinare in modo ricursivo il risultato all’elemento successivo reduce ( lambda x,y : x+y, I1) calcolo la somma degli elementi contenuti nell’iterable I1
  • 5.
    Series: metodo map Ilmetodo map consente di trasformare i valori di una serie, sulla base di: una funzione built-in S=pandas.Series( [10,20,30,40])Data una serie una funzione anonima un dizionario S.map(str) S.map(lambda x: x+1) S.map( DZ ) dove DZ={10:’B’,20:’B’...} una funzione custom S.map( F1 ) dove F1 è una funzione custom
  • 6.
    Series: metodi -sum, min, max, mean Il metodo la sommatoria degli elementi di S S=pandas.Series( [10,20,30,40])Data una serie il minimo della serie la media della serie S.sum() il massimo della serie S.min() S.max() S.mean() calcola calcola calcola calcola
  • 7.
    Corso Python eStrutture Dati maggio 2018 Pandas DataFrame: metodi - II
  • 8.
    DataFrame: metodo concat Datidue DataFrame (D1 e D2), il metodo pandas.concat crea un terzo DataFrame accodando il secondo al primo: V1 V2 0 10 ‘a’ 1 20 ‘b’ 2 30 ‘c’ 3 40 ‘d’ V1 V3 0 110 ‘XX’ 1 120 ‘XX’ 2 130 ‘YY’ 3 140 ‘YY’ pandas.concat( [ DF1, DF2 ] ) V1 V2 V3 0 10 ‘a’ NaN 1 20 ‘b’ NaN 2 30 ‘c’ NaN 3 40 ‘d’ NaN 0 110 NaN ‘XX’ 1 120 NaN ‘XX’ 2 130 NaN ‘YY’ 3 140 NaN ‘YY’
  • 9.
    DataFrame: metodo merge Datidue DataFrame (D1 e D2), il metodo pandas.merge crea un terzo DataFrame combinando gli elementi dei due dataframe V1 V2 0 10 ‘RM’ 1 20 ‘RM’ 2 30 ‘MI’ 3 40 ‘MI’ 4 50 ‘TO’ V2 V3 0 ‘RM’ ‘ROMA’ 1 ‘MI’ ‘MILANO’ 2 ‘TO’ ‘TORINO’ pandas.merge(DF1, DF2, on=’V2’ ) V1 V2 V3 0 10 ‘RM’ ‘ROMA’ 1 20 ‘RM’ ‘ROMA’ 2 30 ‘MI’ ‘MILANO’ 3 40 ‘MI’ ‘MILANO’ 4 50 ‘TO’ ‘TORINO’
  • 10.
    DataFrame: metodo groupby Datoun DataFrame, il metodo .groupby consente di scomporlo in tanti sottogruppi, di applicare una trasformata a questi sottogruppi, e di ricomporre un DataFrame finale impilando i risultati ottenuti V1 V2 0 10 ‘RM’ 1 20 ‘RM’ 2 30 ‘MI’ 3 40 ‘MI’ 4 50 ‘TO’ V1 V2 0 10 ‘RM’ 1 20 ‘RM’ V1 V2 2 30 ‘MI’ 3 40 ‘MI’ V1 V2 4 50 ‘TO’ V1 30 V1 70 V1 50 V1 V2 ‘RM’ 30 ‘MI’ 70 ‘TO’ 50 DF .groupby( ‘V2’ ) .sum()
  • 11.
    DataFrame: metodo applymap Datoun DataFrame, il metodo .applymap esegue il metodo map per ogni colonna (vista come una Series) del dataframe V1 V2 PROV ‘RM’ 30 120 ‘MI’ 70 210 ‘TO’ 50 160 ‘PD’ 40 170 ‘BO’ 60 160 DF.applymap(F1) Index columns def F1(X): Y=...X…. return Y V1 V2 PROV ‘RM’ F1(30) F1(120) ‘MI’ F1(70) F1(210) ‘TO’ F1(50) F1(160) ‘PD’ F1(40) F1(170) ‘BO’ F1(60) F1(160) Data una funzione
  • 12.
    DataFrame: metodo apply Datoun DataFrame, il metodo .apply esegue una trasformazione di sottoparti di un dataframe, rappresentate: dalle colonne dalle righe da gruppi opzione axis=0 opzione axis=1 ottenuto con .groupby La trasformazione può essere definita tramite: a) una funzione built-in; b) una funzione anonima; c) una funzione custom
  • 13.
    DataFrame: metodo apply- esempi DF = V1 V2 PROV ‘RM’ 30 120 ‘MI’ 70 210 ‘TO’ 50 160 ‘MI’ 40 170 ‘TO’ 60 160 DF.apply(lambda x: x. mean(), axis=1) ‘RM’ 75 ‘MI’ 140 ‘TO’ 105 ‘MI’ 105 ‘TO’ 110 DF.apply(lambda x: x. mean(), axis=0) V1 V2 50 62 DF.groupby(level=’PROV’) .apply(lambda x: x. mean()) V1 V2 PROV ‘RM’ 30 120 ‘MI’ 55 185 ‘TO’ 55 160
  • 14.
  • 15.
    CONTATTI TELEFONO 051 2235 20 EMAIL WORKSHOP@VICEM.IT