Data Science
La scienza dei dati studia i metodi per estrarre la conoscenza dei dati provenienti da diverse sorgenti:
- Dati aziendali
- Web (Social Network Analysis, Marketing) e Mobile (Context Aware Computing)
- Immagini e Video (sorveglianza, applicazioni mediche, ecc)
- IoT (sensori, ecc), Industry 4.0
L'obiettivo è la creazione di prodotti e servizi basati sull'estrazione di conoscenza dai dati immediatamente utilizzabile nei processi decisionali
Big Data
Si parla Big Data quando si ha a che fare con grandi quantità di dati
La creazione di dati sta seguendo un processo esponenziale: nell'anno 2020 il volume totale di dati creati nel mondo è stato di più di 40 zettabyte (ZB), vale a dire 40 trilioni di gigabyte
Si prevede che entro il 2025 il volume dei dati arriverà fino a 163 ZB (es. rapport Garante Privacy)
- Volume: dimensione dei dataset (oltre le capacità degli odierni DBMS)
- Velocità: rapidità con cui i dati arrivano e dono essere elaborate (streaming, real-time)
-
Varietà: tipologia di dati e sorgenti
- semi-strutturati (XML, tweets, ...)
- destrutturati (documenti, pagine web)
- Veridicità: le sorgenti dei dati non sono controllate
- Variabilità: variazioni sia nella struttura dei dati che nella semantica sottostante;
- Valore: potenzialità dei dati in termini di vantaggi competitivi raggiungibili con la loro analisi
Volume e Velocità sono ancora considerate di gran lunga le caratteristiche più rilevanti nella gestione dei Big Data
La Scalabilità è al cuore delle nuove tecnologie che ci si attende in un futuro prossimo per affrontare le sfide tecnologiche poste dai Big Data
Infrastrutture di calcolo:
- Cloud Computing (Docker, Servizi, Data Center, ecc.)
- Edge/IoT Computing
- High Performance Computing
Data Science e Linguaggi di programmazione:
R, Julia, Python, C++, Javascript, Scala
Professioni:
Data Scientist - cos è, cosa fa e quanto guadagna?
Data Engineer
Data Analyst
Data Protection Officier
Python
Pagina ufficiale: www.python.it
Installazione e download: www.python.org/downloads
PIP: www.pypi.org/project/pip
Attraverso pip si possono installare pachetti facilmente usando pip install package-name
Jupyter: www.jupyter.org
Per usare Jupyter Notebook usare il comando jupyter notebook
Colab: sono jupyter notebook su google cloud accessibili con le proprie credenziali google su colab.research.google.com
Anaconda: www.anaconda.com
Usata moltissimo per statistica e in data science
Python nasce nel 1991, ora alla versione 3 uscita nel 2008, linguaggio semplice, intuitivo e potente, facilmente comprensibile, come l'inglese parlato in grado di consentire tempi di sviluppo brevi, open source con partecipazione collettiva al suo sviluppo.
Python è oggi uno dei linguaggi più diffusi e più usati per la sua facilità di utilizzo.
Python è un linguaggio di programmazione ad alto livello, è un linguaggio interpretato, ovvero le istruzioni sono eseguite da un interprete e permette di eseguire dirottamente il codice sorgente che scriviamo.
Python è detto anche "interattivo": possiamo scrivere le istruzioni dal prompt dei comandi senza la necessità di creare un file sorgente
Interprete Python
Python è considerato un linguaggio interpretato, offre due modalità per usare l'interprete:
Interactive mode
Script mode
Se lanciamo il comando python da riga di comando, in in ambiente Windows che Linux, viene mostrato un nuovo prompt caratterizzato da 3 caratteri di maggiore >>> (interprete interattivo)
L'interprete interattivo è in grado di leggere e valutare man mano le espressioni inserite dall'utente, è anche possibile eseguire script contenenti sequenze di istruzioni Python, digitando il comando: python nome_script.py
IDLE
Per la modalità interattiva: Python Shell
Disponibile anche online: www.python.org/shell
IDLE (Integrated Develpment and Learning Environment): ambiente visuale che permette di modificare, eseguire, e fare il debug di programmi Python da un'unica interfaccia visuale
Python come calcolatrice
Un'istruzione è un operazione che l'interprete di Python è in grado di eseguire
Usando Python come calcolatrice viene stampato a video il valore dell'espressione
2+2 4/2 4//2 divisione intera 4%2 modulo (resto della divisione) 3**2 elevamento a potenza (4-2)*3 precedenza tra operatori e parentesi
Variabili
-
Python è tipizzato dinamicamente
- controlla i tipi solo immediatamente prima dell'esecuzione delle istruzioni
- tutte le variabili sono implementate con puntatori
- Non occorre dichiarare le variabili prima di usarle
- I nomi delle variabili sia lettere che numeri ma devono iniziare con una lettere oppure con un "_"; possono contenere sia lettere maiuscole che minuscole e tiene in conto della differenza (case sensitive) (a!=A)
<variabile>= <espressione>
- Alla variabile che compare alla sinistra dell'= viene assegnato il valore ottenuto dalla valutazione dell'espressione;
- L'istruzione di assegnazione non produce risultati visibili (cioè se la inviate per esecuzione all'interprete interattivo non vi viene "risposto" nulla)
x=7 y=3.14 z=x+y s="ciao"
I dati (valori) sono di tanti tipi diversi
Dal tipo del dato dipendono le operazioni che possiamo fare con esso
8/4 ok "ciao"/2 no
Tipi Semplici:
Booleani (valore di verità): True e False bool
Numeri interi int
Numeri in virgola mobile (metodo di rappresentazione approssimata dei numeri reali) float
Caratteri e Stringhe (sequenze di caratteri che formano un testo) Una string può essere una stringa di lettere, numeri e simboli. Le stringhe sono racchiuse tra '' o tra "" str
x=7 x="7" x=7.0 print(8+4) vs. print("8+4") "ciao"*2 -> "ciaociao" "Py"+"thon" -> "Python"
In Python le variabili assumono il tipo del valore che viene loro assegnato: numero, carattere o serie di caratteri, e lo mantengono fino a quando non viene loro assegnato un valore di tipo diverso
#Quindi si potrebbe fare: x="ciao" x=5
In Python:
def massimo(x,y): if x>y: return x else: return y
può calcolare il massimo tra due numeri interi, due numeri reali, due stringhe, ecc..
L'istruzione di stampa print permette di visualizzare il contenuto delle variabili sullo schermo
print(x) print("ciao") print(7+2) print("5+5 fa ", 5+5)
Type
La funzione type restituisce il tipo di un valore, di una variabile o di una espressione
type(x) type(2) type('ciao') type(1==5)
Operatori di Confronto
== uguale a != diverso da < minore <= minore o uguale a > maggiore di >= maggiore o uguale a
Operatori booleani
and ritorna True se entrambi sono veri or ritorna True se almeno uno è vero not ritorna False se è vero, True se è falso
Python Assegnazione Multipla
Con l'assegnazione multipla ottengo lo scambio dei valori:
a, b = b, a
Input
L'istruzione input (prompt) permette di acquisire valori da tastiera
x=input("inserisci un valore") >>> Inserisci un valore 9 enter
N.B: il valore viene acquisito sempre come string!! convertire il tipo con le funzioni int(), str()...
numero= int(input('inserisic un numero:')) print(numero+7) numero=float(input('inserisci l importo in euro:')) print(numero) numero=str(numero) print(numero)
Script mode
Per eseguire programmi con sequenze di istruzioni usiamo la modalità script
python nome_script.py
Nome programma: HelloWorld.py
print('Hello World')
per eseguirlo da terminale: python HelloWorld.py
per eseguirlo da IDLE: Run -> Run Module (F5)
Commenti
# tutta la riga commentata
I commenti non hanno effetto sul programma (l'interprete ignora la linea commentata
#assegno a b il valore 7 b=7
Commenti su più righe
"""
commento
dentro
"""
Istruzioni condizionali
if <condizione>: <istruzione> if x==2: print('x è uguale a 2')
Se x è uguale a 2 viene effettuata la stampa, altrimenti non fa nulla.
Indentazione
Le istruzioni nel corpo devono essere "rientrate" cioè stare più all'interno/più a destra della riga che contiene l'if
Si dice che devono essere "indentate"
La prima istruzione che non è più "indentata" segnala la fine del blocco di istruzioni che devono essere eseguite se la condizione è soddisfata
Se il corpo è costituito da una sola istruzione può essere scritto sulla stessa riga (come negli esempi precedenti)
x=int(input('inserisci un numero')) if(x==5): print('sono dentro if') print('sono ancora dentro if') print('sono fuori if')
If-else
età=int(input('inserisci la tua età')) if età >= 18: print('sei maggiorenne') else: print('sei minorenne')
Cicli
I cicli sono usati per eseguire azioni ripetitive
Ci sono due tipi di cicli:
while: usato quando non si sa a priori il numero esatto di volte che una azione deve essere ripetuta
for: quando si sa in anticipo quante volte si dovrà ripetere l'azione
While
Ripete le istruzioni nella sequenza fino a quando la condizione è soddisfata
while<condizione>: <sequenza di istruzioni> x=10 while(x>0): print(x) x=x-1 print("0! sono fuori dal ciclo")
For
Assegna alla variabile il primo elemento della sequenza
Esegue le istruzioni nel corpo
Fintantoché ci sono elementi nella sequenza assegna alla variabile l'elemento successivo e torna al passo 2.
Spesso la lista che si usa nel for è generata dalla funzione range:
for <variabile> in <sequenza>: <sequenza di istruzioni> #stampare i numeri tra 0 e 10 for i in range(11): print(i) #stampare i numeri tra 1 e 10 for i in range(1,11): print(i)
Break
Se eseguo l'istruzione break dentro un ciclo while o for, "uccido" il ciclo e ne esco immediatamente
Continue
Idem per continue, prosegue al passo successivo.
For/Else
I cicli for hanno anche una clausola else
La clausola else viene eseguita dopo il completamento normale del ciclo. Ciò significa che il loop non ha riscrontrato un'istruzione break
for item in container: if (search_something(item): #Found it! process(item) break else: #Didn't find anything... not_found_in_container()
Esempi:
#!/usr/bin/env python # coding: utf-8 # **** Jupyter Notebook con esempi introduttivi **** # In[ ]: print("Hello world") # In[ ]: print("Espressioni",2,4/2,5//2,5%2,3**2,(4-2)*3) # In[ ]: x=7 y=3.14 z=x+y s="ciao" b=(1 == 2) b1=(1 <= 2) print(x,y,z,s,b,b1) x="python"+"3" print(x,type(x)) print(y,type(y)) print(s,type(s)) print(b,type(b)) print(b1,type(b1)) # In[ ]: def massimo(x,y): if x>y: return x else: return y print(massimo(12,15)) print(massimo("ciao","roma")) print(massimo(3.4,6.7)) # In[ ]: x=10 y=11 x ^= y y ^= x x ^= y print(x,y) # In[ ]: x,y=y,x print(x,y) # In[ ]: x=int(input('inserisci un numero')) if(x==5): print('sono dentro if') print('sono ancora dentro if') print('sono fuori if') # In[ ]: x=int(input('inserisci un numero')) if(x==5): print('sono dentro if') print('sono ancora dentro if') print('sono fuori if') # In[ ]: x=int(input("Inserisci un numero")) if x==0: print("numero 0") elif x==1: print("numero 1") elif x==2: print("numero 2") else: print("Un altro numero") # **** Costrutti **** # In[ ]: x=10 while(x>0): print(x) x=x-1 print("0! Qui sono fuori dal ciclo") # In[ ]: while True: print("Hello, World!") print("Qui") # In[ ]: for i in range(10): print("A"+str(i),end=", ") print("A10.") # In[ ]: for a in range(1,11): for b in range(1,11): print(a*b) # In[ ]: for a in range(4): for b in range(4): print("*",end=' ') print("\n") # In[ ]: for i in range(2): x=int(input()) if (x>10): print("Trovato!") break else: print("Niente da fare") # In[ ]: for i in range(2): for j in range(2): x=int(input()) if (x>10): print("Trovato!") break else: continue break else: print("Niente da fare") print(i,j) # **** Strutture dati: liste e tuple ****
Recommended Comments
There are no comments to display.