SlideShare a Scribd company logo
1 of 21
Download to read offline
Corso Python e R per Data Mining
giugno - luglio 2017
Custom function
Funzioni
Una funzione è un blocco di istruzioni isolate dal resto del
programma che accetta come input uno o più parametri e
restituisce un output, ottenuto dall’esecuzione delle
istruzioni
Programma
Blocco di
istruzioni
INPUT OUTPUT
Funzioni: dichiarazione
def NomeFunzione(P1, P2,…….PN) :
Istruzione 1
Istruzione 2
…………….
Istruzione R
return O1, O2,..... OM
indentazione
INPUT
(parametri)
OUTPUT
(risultato)
Funzioni: chiamata (esecuzione)
R1, R2, … RM = NomeFunzione(A1, A2,…….AN)
INPUT
(argomenti)
OUTPUT
(assegnazione)
Funzioni: parametri e argomenti
def NomeFunzione(P1, P2...) :
…………….
return O1, O2,..... OM
Dichiarazione
PARAMETRI
R1= NomeFunzione(‘tt’, 24 ..)
Chiamata
ARGOMENTI
le variabili di assegnazione possono essere una oppure
tante quante sono i valori passati dall’istruzione return. Se
il numero è uguale, allora alle variabili sono assegnati i
diversi valori secondo una logica posizionale. Altrimenti
alla variabile di assegnazione è assegnata una tupla
contenente la sequenza dei risultati.
Argomenti assegnati
per posizione
Funzioni: parametri predefiniti e argomenti chiave
def NomeFunzione(P1, P2, P3=25, P4=’Italia’ ) :
………..
return O1, O2,..... OM
Dichiarazione
R1= NomeFunzione(‘tt’, 24, P3=60)
Chiamata
In fase di chiamata non è
necessario passare gli argomenti
corrispondenti ai parametri
predefiniti. In caso di assenza di
argomento essi assumono il
valore di default. Si può chiamare
una funzione modificando il valore
di uno o più parametri predefiniti
Funzioni: argomenti a lunghezza variabile
def NomeFunz.(*L) :
……..
Dichiarazione
R1= NomeFunz.(10,20)
Chiamata
R1= NomeFunz.(10,20,30)
R1= NomeFunz.(10,20,......123)
def NomeFunz.(**D) :
……..
Dichiarazione
R1= NomeFunz.(A=10)
Chiamata
R1= NomeFunz.(A=10,B=20)
LEZIONE 1..
www.fordatascientist.org
B00-PyBase
B53-Custom-Function
Funzioni ricorsive
E’ possibile scrivere la chiamata di una funzione all’interno di se stessa
def Indietro(N):
if N == 0: return
print(N)
Indietro(N-1)
Questa funzione chiama
se stessa con un
argomento
decrementato
progressivamente di
uno
def Fattoriale(n):
if n == 0:
#print('n è uguale a 0')
return 1
else:
R=n * Fattoriale(n-1)
#print(n,R)
return R
Funzione
call 1
call 2
call n
return 2
return 1
return n
Questa funzione chiama recorsivamente se
stessa fino a che N è uguale a zero. Quindi
assegna ricorsivamente il valore R alla
chiamante
Corso Python e R per Data Mining giu-lug 2017
PYTHON BASE
Classi e oggetti
Classi e oggetti
Classe Oggetto
Istanziare un
nuovo oggetto dalla
classe…...
Oggetti
Cassetta di attrezzi Schedario
Programmazione ad oggetti
Programmare ad oggetti significa disegnare le diverse
classi, definendo i loro attributi e i loro metodi. Quindi
utilizzare le classi per istanziare gli oggetti desiderati.
Una volta instanziati, gli oggetti avranno vita propria. In
particolare potranno essere modificati in modo dinamico i
loro attributi.
Attributi e metodi
Gli strumenti/documenti contenuti nella cassetta/schedario
possono essere di due tipi:
Gli attributi sono dei dati
(informazioni) che può essere
utile tenere nella
cassetta/schedario
ATTRIBUTI METODI
I metodi sono gli strumenti con i quali
si possono compiere delle azioni. I
metodi possono essere considerati
delle funzioni utili per il dato contesto
in cui è utilizzata la cassetta/schedario.
Classi e oggetti: un esempio
Classe Oggetto
class AnnualTS:
'''La Classe AnnualTS serve ad istanziare un oggetto
per la gestione/descrizione di una serie storica.
'''
def __init__(BASE, START, END, DATA):
BASE.LYEAR = [I for I in range(START,END+1)]
BASE.DATA = DATA
BASE.TS= dict(zip(BASE.LYEAR,BASE.DATA))
def __str__(BASE):
STR=""
for YEAR in BASE.LYEAR:
STR=STR+'Anno {0}: {1} n'.format(
YEAR,BASE.TS[YEAR])
return STR
TS1=AnnualTS(2000, 2005, [22,33,42,34,28,33])
TS1.TS
print(TS1)
Classi ed oggetti: un esempio
def mean(BASE):
SUM=0
LNUM=0
for YEAR in BASE.LYEAR:
SUM=SUM+BASE.TS[YEAR]
LNUM +=1
RIS=1.0*SUM/LNUM
return RIS
def max(BASE):
MAX=0
for YEAR in BASE.LYEAR:
if BASE.TS[YEAR]>MAX:
MAX=BASE.TS[YEAR]
return MAX
Classe Oggetto
TS1.mean()
TS1.max()
LEZIONE 1..
www.fordatascientist.org
B00-PyBase
B80-ClassObject
Alcuni esempi di classi e oggetti
Modulo Numpy Modulo Pandas
Series
Ndarray
Array
DataFrame
LEZIONE 1..
www.fordatascientist.org
B00-PyBase
B32-Data-Structures-Other
Analisi di un oggetto
Shell ipython Celle jupyter
dir(Object) dir(Object)
Object.method??
Object?
%pdoc Object
%pinfo Object
lista componenti
descrizione
contenuti %pfile Object
CONTATTI TELEFONO
051 22 35 20
EMAIL
WORKSHOP@VICEM.IT

More Related Content

Similar to Data mining 04-funzionicustom-classioggetti

Similar to Data mining 04-funzionicustom-classioggetti (20)

Python base lezione 4
Python base lezione 4Python base lezione 4
Python base lezione 4
 
R Vectors
R VectorsR Vectors
R Vectors
 
What's new in C# 7
What's new in C# 7What's new in C# 7
What's new in C# 7
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
SQL Unità 1 linguaggio DDL; DML, funzioni di aggregazione
SQL Unità 1 linguaggio DDL; DML, funzioni di aggregazioneSQL Unità 1 linguaggio DDL; DML, funzioni di aggregazione
SQL Unità 1 linguaggio DDL; DML, funzioni di aggregazione
 
Funzioni
FunzioniFunzioni
Funzioni
 
7 Sottoprogrammi
7   Sottoprogrammi7   Sottoprogrammi
7 Sottoprogrammi
 
Pe t2 perl-caratteristiche
Pe t2 perl-caratteristichePe t2 perl-caratteristiche
Pe t2 perl-caratteristiche
 
Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)
 
Py t3 python-oggetti
Py t3 python-oggettiPy t3 python-oggetti
Py t3 python-oggetti
 
Lezione 4 ogetti-vba
Lezione 4 ogetti-vbaLezione 4 ogetti-vba
Lezione 4 ogetti-vba
 
primi comandi SQL con Mysql
primi comandi SQL con Mysqlprimi comandi SQL con Mysql
primi comandi SQL con Mysql
 
Vb.Net
Vb.NetVb.Net
Vb.Net
 
Template
TemplateTemplate
Template
 
Py a3 python-metaprogramming
Py a3 python-metaprogrammingPy a3 python-metaprogramming
Py a3 python-metaprogramming
 
Python base lezione 5
Python base lezione 5Python base lezione 5
Python base lezione 5
 
Programming iOS lezione 3
Programming iOS lezione 3Programming iOS lezione 3
Programming iOS lezione 3
 
08 mapreduce
08   mapreduce08   mapreduce
08 mapreduce
 
Il foglio elettronico a supporto dell’attività professionale [AP03-S]
Il foglio elettronico a supporto dell’attività professionale [AP03-S]Il foglio elettronico a supporto dell’attività professionale [AP03-S]
Il foglio elettronico a supporto dell’attività professionale [AP03-S]
 
What is new in C# 2018
What is new in C# 2018What is new in C# 2018
What is new in C# 2018
 

More from Studiabo

Big data rischi
Big data rischiBig data rischi
Big data rischiStudiabo
 
Big data correlazioni
Big data correlazioniBig data correlazioni
Big data correlazioniStudiabo
 
Ravenna2019 - lezione Big Data
Ravenna2019 - lezione Big DataRavenna2019 - lezione Big Data
Ravenna2019 - lezione Big DataStudiabo
 
Strutture dati 08-reshape
Strutture dati 08-reshapeStrutture dati 08-reshape
Strutture dati 08-reshapeStudiabo
 
Strutture dati 07-multiindex
Strutture dati 07-multiindexStrutture dati 07-multiindex
Strutture dati 07-multiindexStudiabo
 
Strutture dati 06-dataframe
Strutture dati 06-dataframeStrutture dati 06-dataframe
Strutture dati 06-dataframeStudiabo
 
Strutture dati 05-numpypandas
Strutture dati 05-numpypandasStrutture dati 05-numpypandas
Strutture dati 05-numpypandasStudiabo
 
Strutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStrutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStudiabo
 
Strutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStrutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStudiabo
 
Strutture dati 01-numeristringhe
Strutture dati 01-numeristringheStrutture dati 01-numeristringhe
Strutture dati 01-numeristringheStudiabo
 
Strutture dati 00-corso2018-2019
Strutture dati 00-corso2018-2019Strutture dati 00-corso2018-2019
Strutture dati 00-corso2018-2019Studiabo
 
Pres ulisse acciaio-ottobre2018
Pres ulisse acciaio-ottobre2018Pres ulisse acciaio-ottobre2018
Pres ulisse acciaio-ottobre2018Studiabo
 
Strutture dati 08-reshape
Strutture dati 08-reshapeStrutture dati 08-reshape
Strutture dati 08-reshapeStudiabo
 
Pres ulisse acciaio-aprile2018
Pres ulisse acciaio-aprile2018Pres ulisse acciaio-aprile2018
Pres ulisse acciaio-aprile2018Studiabo
 
Strutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStrutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStudiabo
 
Strutture dati 07-multiindex
Strutture dati 07-multiindexStrutture dati 07-multiindex
Strutture dati 07-multiindexStudiabo
 
Strutture dati 05-numpypandas
Strutture dati 05-numpypandasStrutture dati 05-numpypandas
Strutture dati 05-numpypandasStudiabo
 
Strutture dati 06-dataframe
Strutture dati 06-dataframeStrutture dati 06-dataframe
Strutture dati 06-dataframeStudiabo
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStudiabo
 
Strutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStrutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStudiabo
 

More from Studiabo (20)

Big data rischi
Big data rischiBig data rischi
Big data rischi
 
Big data correlazioni
Big data correlazioniBig data correlazioni
Big data correlazioni
 
Ravenna2019 - lezione Big Data
Ravenna2019 - lezione Big DataRavenna2019 - lezione Big Data
Ravenna2019 - lezione Big Data
 
Strutture dati 08-reshape
Strutture dati 08-reshapeStrutture dati 08-reshape
Strutture dati 08-reshape
 
Strutture dati 07-multiindex
Strutture dati 07-multiindexStrutture dati 07-multiindex
Strutture dati 07-multiindex
 
Strutture dati 06-dataframe
Strutture dati 06-dataframeStrutture dati 06-dataframe
Strutture dati 06-dataframe
 
Strutture dati 05-numpypandas
Strutture dati 05-numpypandasStrutture dati 05-numpypandas
Strutture dati 05-numpypandas
 
Strutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStrutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltin
 
Strutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStrutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltin
 
Strutture dati 01-numeristringhe
Strutture dati 01-numeristringheStrutture dati 01-numeristringhe
Strutture dati 01-numeristringhe
 
Strutture dati 00-corso2018-2019
Strutture dati 00-corso2018-2019Strutture dati 00-corso2018-2019
Strutture dati 00-corso2018-2019
 
Pres ulisse acciaio-ottobre2018
Pres ulisse acciaio-ottobre2018Pres ulisse acciaio-ottobre2018
Pres ulisse acciaio-ottobre2018
 
Strutture dati 08-reshape
Strutture dati 08-reshapeStrutture dati 08-reshape
Strutture dati 08-reshape
 
Pres ulisse acciaio-aprile2018
Pres ulisse acciaio-aprile2018Pres ulisse acciaio-aprile2018
Pres ulisse acciaio-aprile2018
 
Strutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltinStrutture dati 02-strutturecontrollo-funzionibuiltin
Strutture dati 02-strutturecontrollo-funzionibuiltin
 
Strutture dati 07-multiindex
Strutture dati 07-multiindexStrutture dati 07-multiindex
Strutture dati 07-multiindex
 
Strutture dati 05-numpypandas
Strutture dati 05-numpypandasStrutture dati 05-numpypandas
Strutture dati 05-numpypandas
 
Strutture dati 06-dataframe
Strutture dati 06-dataframeStrutture dati 06-dataframe
Strutture dati 06-dataframe
 
Strutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggettiStrutture dati 04-funzionicustom-classioggetti
Strutture dati 04-funzionicustom-classioggetti
 
Strutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltinStrutture dati 03-stutturedatibuiltin
Strutture dati 03-stutturedatibuiltin
 

Recently uploaded

Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptcarlottagalassi
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 

Recently uploaded (19)

Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.ppt
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 

Data mining 04-funzionicustom-classioggetti

  • 1. Corso Python e R per Data Mining giugno - luglio 2017 Custom function
  • 2. Funzioni Una funzione è un blocco di istruzioni isolate dal resto del programma che accetta come input uno o più parametri e restituisce un output, ottenuto dall’esecuzione delle istruzioni Programma Blocco di istruzioni INPUT OUTPUT
  • 3. Funzioni: dichiarazione def NomeFunzione(P1, P2,…….PN) : Istruzione 1 Istruzione 2 ……………. Istruzione R return O1, O2,..... OM indentazione INPUT (parametri) OUTPUT (risultato)
  • 4. Funzioni: chiamata (esecuzione) R1, R2, … RM = NomeFunzione(A1, A2,…….AN) INPUT (argomenti) OUTPUT (assegnazione)
  • 5. Funzioni: parametri e argomenti def NomeFunzione(P1, P2...) : ……………. return O1, O2,..... OM Dichiarazione PARAMETRI R1= NomeFunzione(‘tt’, 24 ..) Chiamata ARGOMENTI le variabili di assegnazione possono essere una oppure tante quante sono i valori passati dall’istruzione return. Se il numero è uguale, allora alle variabili sono assegnati i diversi valori secondo una logica posizionale. Altrimenti alla variabile di assegnazione è assegnata una tupla contenente la sequenza dei risultati. Argomenti assegnati per posizione
  • 6. Funzioni: parametri predefiniti e argomenti chiave def NomeFunzione(P1, P2, P3=25, P4=’Italia’ ) : ……….. return O1, O2,..... OM Dichiarazione R1= NomeFunzione(‘tt’, 24, P3=60) Chiamata In fase di chiamata non è necessario passare gli argomenti corrispondenti ai parametri predefiniti. In caso di assenza di argomento essi assumono il valore di default. Si può chiamare una funzione modificando il valore di uno o più parametri predefiniti
  • 7. Funzioni: argomenti a lunghezza variabile def NomeFunz.(*L) : …….. Dichiarazione R1= NomeFunz.(10,20) Chiamata R1= NomeFunz.(10,20,30) R1= NomeFunz.(10,20,......123) def NomeFunz.(**D) : …….. Dichiarazione R1= NomeFunz.(A=10) Chiamata R1= NomeFunz.(A=10,B=20)
  • 9. Funzioni ricorsive E’ possibile scrivere la chiamata di una funzione all’interno di se stessa def Indietro(N): if N == 0: return print(N) Indietro(N-1) Questa funzione chiama se stessa con un argomento decrementato progressivamente di uno def Fattoriale(n): if n == 0: #print('n è uguale a 0') return 1 else: R=n * Fattoriale(n-1) #print(n,R) return R Funzione call 1 call 2 call n return 2 return 1 return n Questa funzione chiama recorsivamente se stessa fino a che N è uguale a zero. Quindi assegna ricorsivamente il valore R alla chiamante
  • 10. Corso Python e R per Data Mining giu-lug 2017 PYTHON BASE Classi e oggetti
  • 11. Classi e oggetti Classe Oggetto Istanziare un nuovo oggetto dalla classe…...
  • 13. Programmazione ad oggetti Programmare ad oggetti significa disegnare le diverse classi, definendo i loro attributi e i loro metodi. Quindi utilizzare le classi per istanziare gli oggetti desiderati. Una volta instanziati, gli oggetti avranno vita propria. In particolare potranno essere modificati in modo dinamico i loro attributi.
  • 14. Attributi e metodi Gli strumenti/documenti contenuti nella cassetta/schedario possono essere di due tipi: Gli attributi sono dei dati (informazioni) che può essere utile tenere nella cassetta/schedario ATTRIBUTI METODI I metodi sono gli strumenti con i quali si possono compiere delle azioni. I metodi possono essere considerati delle funzioni utili per il dato contesto in cui è utilizzata la cassetta/schedario.
  • 15. Classi e oggetti: un esempio Classe Oggetto class AnnualTS: '''La Classe AnnualTS serve ad istanziare un oggetto per la gestione/descrizione di una serie storica. ''' def __init__(BASE, START, END, DATA): BASE.LYEAR = [I for I in range(START,END+1)] BASE.DATA = DATA BASE.TS= dict(zip(BASE.LYEAR,BASE.DATA)) def __str__(BASE): STR="" for YEAR in BASE.LYEAR: STR=STR+'Anno {0}: {1} n'.format( YEAR,BASE.TS[YEAR]) return STR TS1=AnnualTS(2000, 2005, [22,33,42,34,28,33]) TS1.TS print(TS1)
  • 16. Classi ed oggetti: un esempio def mean(BASE): SUM=0 LNUM=0 for YEAR in BASE.LYEAR: SUM=SUM+BASE.TS[YEAR] LNUM +=1 RIS=1.0*SUM/LNUM return RIS def max(BASE): MAX=0 for YEAR in BASE.LYEAR: if BASE.TS[YEAR]>MAX: MAX=BASE.TS[YEAR] return MAX Classe Oggetto TS1.mean() TS1.max()
  • 18. Alcuni esempi di classi e oggetti Modulo Numpy Modulo Pandas Series Ndarray Array DataFrame
  • 20. Analisi di un oggetto Shell ipython Celle jupyter dir(Object) dir(Object) Object.method?? Object? %pdoc Object %pinfo Object lista componenti descrizione contenuti %pfile Object
  • 21. CONTATTI TELEFONO 051 22 35 20 EMAIL WORKSHOP@VICEM.IT