Informatica Anonimo Standard
Informatica Anonimo Standard
APPUNTI
INFORMATICA
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
Un algoritmo è l’insieme completo delle regole che permettono la risoluzione di un
determinato problema; è una qualsiasi procedura effettiva che indichi le istruzioni da seguire
n
per ottenere, a partire dai dati di cui si dispone (input), i risultati voluti (output).
pu
ALGORITMO – LE ISTRUZIONI
Osserviamo che la sequenza delle istruzioni che compongono un algoritmo è importante in
quanto le istruzioni vengono eseguite nella sequenza in cui sono scritte.
ap
Tipi di istruzione possono essere:
★ Istruzioni operative («leggi un numero in input», «calcola la somma di due numeri»)
★ Istruzioni di controllo decisionale («controlla se il numero è positivo» «controlla se
due numeri sono uguali»)
ec
★ Istruzioni di controllo iterativo («esegui un certo blocco di istruzioni finché il valore
di una variabile è inferiore a 10»)
L’esecuzione di ogni singola istruzione è definita passo.
et
Un problema risolvibile mediante un algoritmo si dice computabile; non tutti i problemi sono
risolvibili, non tutto è computabile.
m
ALGORITMO – CARATTERISTICHE
Un algoritmo è una sequenza ordinata e finita di passi che produce un determinato risultato
in un tempo finito.
io
★ Istruzioni univoche e non ambigue, non sono ammessi termini adatti a una
/B
macchina.
★ Determinismo; fatto un passo, il successivo è uno solo, ben determinato.
★ Alternative sono possibili, ma la scelta deve essere univoca.
★ Numero finito di passi.
★ Terminazione, l’esecuzione prima o poi deve finire e produrre il risultato in
0_
tempo finito.
Si descrive un algoritmo cercando di sintetizzare il più possibile la sua sequenza di passi.
La descrizione avviene mediante il diagramma di flusso o lo pseudo-codice
d0
linguaggio di programmazione.
I LINGUAGGI DI PROGRAMMAZIONE
Un linguaggio di programmazione è una lingua che consente di fornire istruzioni (algoritmo)
a un calcolatore. Un programma è quindi un set di istruzioni che un computer segue per
completare un'attività.
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
★ Linguaggi di alto livello: si caratterizzano per un’alta astrazione e sono orientati “al
n
programmatore”, quindi il loro scopo è quello di essere più comprensibili per un uso
pu
più facile da parte degli sviluppatori.
Con il traduttore si passa a
ap
o nessuna astrazione. Sono quindi orientati “alla macchina” e il loro scopo è quello di
essere direttamente eseguibili dal processore.
Uomo -> (pseudo codice o diagramma di flusso) -> algoritmo -> (linguaggio di alto livello) ->
programma -> (traduttore) -> linguaggio macchina -> (esecuzione) -> macchina.
io
TRADUTTORI
/B
I LINGUAGGI DI PROGRAMMAZIONE
0_
I linguaggi di alto livello possono essere divisi in due macro categorie a seconda di come
essi comunichino con il processore.
d0
disponibile la versione tradotta del programma che è però specifica per quella macchina.
Per eseguire il programma basta avere disponibile la versione tradotta (non è necessario
ricompilare). È più veloce.
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
VARIABILI
n
Una variabile è una zona della memoria a cui è stato dato un nome, il computer conosce
pu
solo gli indirizzi della memoria. Il valore di una variabile può essere modificato tramite
un’istruzione di assegnamento.
ap
il valore 5 per finire con il mettere la somma di a+b dentro la variabile c.
ISTRUZIONE DI ASSEGNAMENTO
Una variabile può essere pensata come un contenitore ed è caratterizzata da:
1. Il suo nome
ec
2. Il tipo di valore che può essere contenuto (numerico, testo, …)
3. Il suo valore (o contenuto) che può cambiare nel corso del programma
4. Un’espressione è una combinazione di operatori aritmetici, costanti e variabili che
et
può essere calcolata generando un singolo valore numerico.
Es.: X, X + 1, X + (Y * 3).
m
Se non inizializziamo una variabile e proviamo a usarla, potremmo incontrare errori perché il
programma non sa quale valore utilizzare. È come cercare di usare una scatola vuota
aspettandosi di trovare qualcosa dentro.
d0
★ Numeri interi (Integer): Per numeri senza decimali (42, -7, 1000)
★ Numeri decimali (Float/Double): Per numeri con la virgola (3.14, -0.5, 99.99)
★ Testo (String, Char, Character): Per parole o frasi ("Ciao", "Pizza", "Via Roma 123")
★ Booleani o logici (Boolean, logic): Per valori vero/falso (true, false)
★ Liste/Array: Per conservare più valori insieme ([1, 2, 3], ["mela", "pera", "banana"])
©
È importante usare il tipo giusto per occupare la giusta quantità di memoria e permettere di
fare le operazioni corrette (non si può moltiplicare del testo!)
In linguaggi come R e Python il tipo di dato non viene dichiarato prima, la variabile assume il
tipo in base al valore che gli viene assegnato (assegnazione implicita del tipo di dato).
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
necessario fare una conversione, che non sempre è ammessa.
n
OPERATORI
pu
Quando si scrive un programma sarà necessario utilizzare degli operatori, che possono
essere di tre tipi:
1. Operatori aritmetici (servono per i calcoli matematici)
2. Operatori relazionali (servono a confrontare valori e restituisce true o false)
ap
3. Operatori logici o booleani (Servono a combinare più condizioni relazionali, con
risultato booleano (AND, OR, NOT))
ec
et
m
io
/B
0_
d0
COSTRUTTI FONDAMENTALI
I costrutti fondamentali in informatica sono le strutture base che permettono di controllare il
flusso di esecuzione di un programma.
n4
3. Iterazione (cicli), permette di ripetere delle istruzioni più volte, e può essere while
(finché una condizione è vera) o for (per un numero definito di volte).
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
Tutti i programmi, anche i più complessi, sono costruiti combinando questi elementi base in
ti
modi diversi.
n
FUNZIONE
pu
Una funzione (detta anche routine, subroutine, procedura, sottoprogramma o metodo) è un
particolare costrutto sintattico che permette di raggruppare una sequenza di istruzioni in un
unico blocco, espletando così una specifica operazione.
Essa contiene tutte le istruzioni necessarie a raggiungere uno scopo in modo che a partire
ap
da determinati dati in input si ottiene l’output desiderato.
Quando si vuole eseguire una funzione diciamo che la stiamo chiamando (richiamando,
invocando o attivando)
Una funzione può essere chiamata ogni volta che si vuole con una singola istruzione, in
questo modo si evita di riscrivere tante volte un blocco di istruzioni che viene usato spesso
nel programma. ec
In generale per ogni funzione si definisce un nome, gli input (chiamati parametri od
et
operandi), e l’output (o tipo di ritorno).
Il corpo della funzione sono le istruzioni che sono eseguite quando questa viene chiamata.
m
DIAGRAMMI DI FLUSSO
CONNETTORI
I singoli diagrammi devono essere uniti tramite i connettori, e l’esecuzione delle istruzioni
deve essere fatta sequenzialmente, quindi seguendo i connettori.
d0
Quando si scrive l’algoritmo bisogna fare molta attenzione alla direzione del flusso di
esecuzione.
Ci sono dei momenti in cui il flusso di esecuzione può scegliere tra diverse direzioni;
In genere, questi salti sono subordinati al verificarsi di una condizione (che può risultare vera
o falsa); si parla di istruzioni condizionali.
Permettono anche di impostare i cicli/loop.
©
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
★ Iterazione
ti
Inoltre, esiste un unico punto d’ingresso e un unico punto d’uscita.
n
TEOREMA (Böhm-Jacopini): I tre costrutti fondamentali della NLS sono sufficienti a
pu
descrivere qualunque algoritmo.
INDENTAZIONE
L’indentazione è l’inserimento di una certa quantità di spazio vuoto all’inizio di una riga di
ap
codice. Ogni riga viene indentata di un certo numero di spazi che dipende dalla sua
posizione all’interno della struttura logica del programma e questo rende il programma più
leggibile.
In certi linguaggi di programmazione l’indentazione è obbligatoria, e in ogni caso è sempre
raccomandata.
INTRODUZIONE A R
ec
R è un linguaggio di programmazione usato particolarmente per l'analisi statistica dei dati in
et
molti settori, tra cui l'econometria, la finanza, la ricerca biomedica e l'epidemiologia.
PACCHETTI R
m
RSTUDIO
Rstudio è un ambiente di sviluppo integrato (IDE) per R, e racchiude in un unico programma
diverse funzioni che consentono tra le altre cose di:
★ Scrivere e salvare programmi (script) nel linguaggio R
★ Scrivere delle espressioni e valutarne il corrispondente valore, mediante un prompt
dei comandi
★ Visualizzare lo spazio di tutte le variabili definite (environment)
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
★ Consultare pagine di aiuto per comprendere cosa fa e cosa restituisce una funzione
ti
di un pacchetto
★ Visualizzare plot e grafici prodotti da uno script R.
n
pu
BASI DEL LINGUAGGIO
Le istruzioni (o comandi) in R possono essere eseguiti in due modi:
★ Digitando sul prompt dei comandi il comando desiderato (premendo INVIO per
eseguirlo)
ap
★ Eseguendo l’istruzione nell’editor di testo + pulsante Run
Ogni istruzione deve essere separata dalla successiva o usando il ; oppure andando a capo
(scelta consigliata).
Il carattere # è utilizzato all’interno di un programma o di uno script per indicare che ciò che
ec
segue nella stessa riga è un commento e quindi non verrà eseguito dal calcolatore.
Se si richiama una variabile per nome, ma a questa non è mai stata definita in precedenza R
restituisce un errore.
R è un linguaggio case-sensitive, ovvero sensibile alle maiuscole, e il nome di una
io
variabile non può contenere alcuni caratteri, detti speciali, quali «!», «"», «$» e «%».
Il punto «.» non è un carattere speciale e l’utilizzo è incoraggiato quando una variabile ha un
/B
vettore di stringhe);
★ Factor: sequenze di stringhe o interi, simili ai vettori e usati per rappresentare valori
categoriali.
★ Matrix: matrice, ovvero una tabella a due dimensioni (righe e colonne) con dati dello
stesso tipo (ad es. matrice di interi, matrice di valori booleani);
©
★ Array: tabella multidimensionale (con tre o più dimensioni) con dati dello stesso tipo.
★ List: lista di dati che possono essere di tipo diverso (ad es. una lista formata da un
booleano, da un vettore di interi e da una matrice di booleani);
★ [Link]: una tabella, chiamata data frame, in cui ogni colonna contiene i valori di
una certa variabile e ogni riga (chiamata anche osservazione) contiene un set di
valori, uno per ogni colonna. Le colonne possono avere dati eterogenei tra loro
(interi, stringhe, booleani, ecc...).
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
VALORI SPECIALI
ti
Possono essere presenti già nei dati (ad es. in una matrice o un data frame) o originarsi in
seguito a calcoli effettuati.
n
★ Valore NULL: viene restituito quando un’espressione o una funzione restituiscono un
pu
valore indefinito.
★ Valore NA: indica un valore mancante.
★ Valore NaN: sta per “Not A Number” e indica un valore numerico indefinito, che può
avere origine da operazioni aritmetiche (ad es. la divisione 0/0).
ap
★ Valori Inf and –Inf: indicano +∞ o −∞ e si originano quando occorre memorizzare un
numero troppo grande o troppo piccolo per il calcolatore oppure in seguito a
operazioni aritmetiche (ad es. 3/0).
variabile.
[Link]() o [Link]();
[Link]() o [Link]();
io
[Link]() o [Link]()
VISUALIZZAZIONE DI DATI
/B
La visualizzazione del contenuto di una variabile può essere fatta in due modi:
1) Scrivendo sul prompt dei comandi il nome della variabile;
2) Usando View(nomeVariabile) per visualizzare il contenuto in stile foglio Excel (in RStudio
viene visualizzato in un riquadro a parte nel pannello in alto a sinistra (l’editor di testo).
0_
ENVIRONMENT DI RSTUDIO
L’environment di RStudio (presente nel pannello in alto a destra) è lo spazio che contiene le
variabili definite dall’utente o caricate in memoria e che sono accessibili da quest’ultimo, e
d0
Per le liste e i data frame, una freccia a sinistra consente di visualizzarne i tipi di dati
contenuti.
©
OPERATORI IN R
★ Operatori aritmetici:
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
• + (somma);
ti
• - (sottrazione);
• * (moltiplicazione);
n
• / (divisione);
pu
• ^ (potenza);
• %/% (divisione intera tra due numeri, che restituisce il quoziente della divisione);
• %% (resto della divisione intera tra due numeri)
• sqrt() (Radice quadrata)
ap
• exp() (Esponenziale)
• log() (Logaritmo, di default base 10, diverse basi possono essere specificate)
★ Operatori relazionali:
• == (uguale);
• != (diverso);
• < (minore);
ec
• > (maggiore);
et
• <= (minore o uguale);
• >= (maggiore o uguale);
m
Ogni volta che si applica un operatore relazionale si ottiene come risultato un valore
booleano TRUE o FALSE, che possono essere successivamente convertiti in 1 e 0,
rispettivamente.
io
★ Operatori logici:
/B
COSTRUTTI FONDAMENTALI
0_
COSTRUTTO IF-THEN-ELSE
Permette di eseguire una o più istruzioni a patto che una condizione logica specificata
tramite la parola chiave «if» sia verificata.
d0
CICLO WHILE
©
CICLO FOR
Permette di eseguire un blocco di istruzioni ripetutamente.
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
Per indicare il numero di volte che il blocco viene eseguito si utilizza una variabile di
ti
appoggio, la variabile contatore, che assume valori diversi all’interno di un vettore di numeri,
partendo dal primo valore della sequenza fino all’ultimo.
n
La sintassi del for è:
pu
ap
FUNZIONI
Le funzioni in R servono a strutturare, organizzare e riutilizzare il codice.
Scrivere una funzione offre una serie di vantaggi:
ec
★ Astrazione: le funzioni in R permettono di raggruppare un gruppo di istruzioni
necessarie a completare un sotto task all’interno del nostro programma.
Tale gruppo di istruzioni sarà generico e applicabile a diversi input.
★ Riutilizzabilità: le funzioni R consentono di eseguire ripetutamente un determinato
et
blocco di codice senza doverlo riscrivere ogni volta. Così facendo si risparmia tempo
e si riduce la tendenza agli errori.
m
• Parametri: le variabili che servono per elaborare le istruzioni dalla funzione stessa. Una
funzione può accettare un numero di parametri a piacere (e anche nessuno).
• Corpo della funzione: contiene il codice che viene eseguito all’interno della funzione ed è
racchiuso fra parentesi graffe. Questo codice può accedere ai parametri ed elaborarli.
• Valore restituito: la maggior parte delle funzioni in R restituisce un valore che rappresenta il
0_
risultato del calcolo per mezzo di return(). Questo valore restituito può essere usato per
utilizzare il risultato della funzione in altre parti del codice.
d0
n4
10
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
R dispone di una vasta raccolta di funzioni preinstallate che sono disponibili e utilizzabili in R
ti
senza doverle definire in precedenza.
Il comando help() può essere utilizzato per avere informazioni (prese dal manuale di R) su
n
una funzione preistallata di R. In alternativa è possibile usare «?» Seguito dal nome della
pu
funzione.
Se non si conosce il nome esatto della funzione, ma solo una parte di esso oppure si
vogliono cercare informazioni su tutte le funzioni che contengono una certa stringa, si può
usare la funzione [Link]().
ap
Nel pannello Help di RStudio (in basso a destra) apparirà il contenuto del manuale sulla
funzione.
CARICAMENTO DI PACCHETTI
Alcune funzioni sono disponibili all’interno di pacchetti R esterni, che devono essere prima
richiamati e caricati in R.
0_
Per caricare un pacchetto in R, si usa la funzione library(), e una volta caricato tutte le
funzioni definite al suo interno sono richiamabili dall’utente.
La funzione [Link]() consente di visualizzare l’elenco delle funzioni disponibili in un pacchetto
d0
VETTORI E FACTORS
VETTORI
n4
Un vettore (vector) è una sequenza ordinata di oggetti dello stesso tipo (es. numeri, stringhe,
valori booleani).
★ Il modo più semplice per creare un vettore è concatenare i suoi elementi usando la
funzione di concatenazione c(), mentre per creare una sequenza di interi consecutivi
il modo migliore è usare «:».
©
11
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
complesse) di singoli elementi e/o intere sequenze di elementi.
n
Qualsiasi operazione aritmetica o logica su un vettore produce come risultato un nuovo
pu
vettore in cui l’operazione è applicata a ciascun elemento del vettore.
ap
★ all(): verifica se tutti gli elementi di un vettore soddisfano una condizione.
★ any(): verifica se almeno un elemento di un vettore soddisfa una condizione.
★ max(), min(): calcola il massimo e il minimo di un vettore
★ sum(), prod(): calcola la somma e il prodotto degli elementi di un vettore
★ unique(): restituisce il vettore senza elementi duplicati.
ec
★ table(): restituisce un vettore con le frequenze di ciascun elemento nel vettore di
partenza.
★ rev(): restituisce il vettore capovolto, con gli elementi, nell’ordine dall’ultimo al primo.
et
CAMPIONAMENTO DI ELEMENTI
La funzione sample() consente di campionare N elementi (parametro quantità «size») da un
m
vettore.
★ Di default il campionamento è senza ripetizioni (lo stesso elemento non può essere
campionato più volte), ma impostando il parametro «replace» a TRUE il
io
Elementi con peso maggiore avranno una probabilità più alta di essere campionati.
PARAMETRO «[Link]»
Se un vettore numerico contiene valori NA di default molte delle funzioni viste falliscono
producendo in output il valore NA.
0_
Per risolvere il problema degli NA, molte delle funzioni predefinite in R contengono un
parametro «[Link]» che, impostato a TRUE, consente di effettuare il calcolo escludendo i
valori NA.
d0
ORDINAMENTO DI VETTORI
sort() restituisce un vettore con gli elementi ordinati dal più piccolo al più grande.
Impostando il parametro «decreasing» a TRUE è possibile ordinare dal più grande al più
n4
piccolo, questa operazione non modifica il vettore di partenza, per ordinarlo occorre
riassegnare il risultato di sort() al vettore stesso.
★ union(): prende due vettori e restituisce un nuovo vettore con gli elementi presenti
nell’uno o nell’altro (senza ripetizioni di valori).
★ setdiff(): prende due vettori e restituisce un nuovo vettore con gli elementi presenti
nel primo ma non nel secondo vettore.
12
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
L’accesso a un elemento del vettore avviene per
posizione (da 1), specificata all’interno di
n
parentesi quadre [ ].
pu
E’ possibile anche selezionare più elementi
specificando tra parentesi quadre [ ] un vettore
di posizioni (mediante funzione di
concatenazione c(), oppure i «:», oppure seq()).
ap
Il risultato è un vettore con gli elementi nelle
posizioni richieste.
Un metodo alternativo per selezionare elementi sulla base di una condizione booleana
consiste nell’usare la funzione which() che restituisce un vettore con le posizioni nel vettore
degli elementi che soddisfano la condizione. ec
Usando il segno meno «-» è possibile selezionare tutti gli elementi di un vettore eccetto
et
quelli specificati tra parentesi quadre [ ].
All’interno delle parentesi quadre [ ] è anche possibile specificare una condizione che avrà
come effetto quello di restituire il vettore degli elementi che soddisfano la condizione.
m
massimi o i minimi siano più di uno, la posizione del primo massimo o minimo osservato nel
vettore viene restituita.
/B
Usando la notazione posizionale tramite parentesi quadre, possiamo quindi ottenere gli
elementi del primo vettore che sono presenti anche nel secondo vettore.
d0
VETTORI NAMED
©
Agli elementi di un vettore possono essere associati dei nomi (named vectors), tramite la
funzione names(). In un named vector, i nomi sono chiavi che possiamo usare per accedere
agli elementi, e la funzione unname() consente di rimuovere i nomi associati.
13
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
FACTOR
ti
I factor sono speciali vettori in cui gli elementi sono trattati come livelli, e sono ordinati,
quindi a ciascun livello è associato un numero (1 associato al primo livello, 2 al secondo,
n
ecc...).
pu
La funzione factor() consente di trasformare un vettore in factor.
ap
★ La funzione levels() restituisce un vettore con i livelli del factor.
★ E’ possibile cambiare, tramite assegnamento a levels(), l’ordine dei livelli.
MATRICI
Una matrice (matrix) è una tabella di elementi dello stesso tipo (es. interi, stringhe,
booleani). ec
Ciascun elemento occupa una riga e una colonna ben precisa della matrice.
La funzione matrix() consente di creare una matrice a partire da un vettore di elementi e i
et
parametri «nrow» e «ncol» permettono di specificare il numero di righe e colonne che la
matrice deve avere.
Di default, gli elementi del vettore vengono sistemati nella matrice colonna per colonna,
m
Inoltre, per la creazione di una matrice a partire da un vettore, è sufficiente specificare una
/B
sola delle due dimensioni (numero di righe o numero di colonne), l’altra viene derivata
automaticamente.
In alternativa, una matrice può essere creata per concatenazione di vettori per riga (tramite
la funzione rbind() o per colonna tramite funzione cbind(), a patto che i vettori abbiano la
stessa lunghezza e lo stesso tipo di dati. Possono essere usate per concatenare una
0_
matrice con un vettore oppure due matrici, allo scopo di aggiungere righe o colonne.
Alle righe e alle colonne di una matrice possono essere associati dei nomi, che, come nel
caso dei vettori, possono essere usati per accedere agli elementi della matrice.
Le funzioni rownames() e colnames() possono essere usate sia per assegnare nomi a righe
e colonne, sia per accedere alla lista dei nomi.
n4
«,».
E’ possibile lasciare non specificato l’indice di riga (o di colonna) se si vogliono selezionare
tutte le righe (o tutte le colonne) di una matrice nella selezione, mentre usando vettori di
indici, è possibile estrarre molteplici righe o colonne.
Il segno «-» è usato per escludere righe e/o colonne dalla selezione.
14
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
La selezione può essere fatta anche specificando condizioni booleane che devono
ti
soddisfare tutti gli elementi della matrice, gli elementi di una o più righe o gli elementi di una
o più colonne. Per specificare condizioni su righe o colonne della matrice bisogna prima
n
estrarle dalla matrice e poi sul risultato dell’estrazione applicare la condizione booleana.
pu
Se le righe e le colonne hanno un nome associato, possiamo accedere a esse tramite i loro
nomi anziché le loro posizioni.
ap
★ nrow() ed ncol() restituiscono il numero di righe e colonne della matrice.
★ dim() restituisce un vettore con entrambe le informazioni.
★ length() restituisce il numero di elementi della matrice.
★ diag() restituisce un vettore con gli elementi della diagonale.
★ t() calcola la trasposta della matrice, ovvero la matrice in cui l’elemento alla posizione
ec
[i,j] viene scambiato con l’elemento alla posizione [j,i].
★ La funzione solve() calcola l’inversa della matrice (se la matrice è invertibile).
et
OPERAZIONI SU MATRICI
Le funzioni max(), min(), sum(), mean() già viste per i vettori si possono applicare anche alle
matrici, restituendo il massimo, il minimo, la somma e la media degli elementi.
m
Altre operazioni invece operano separatamente sulle righe o le colonne della matrice:
rowSums() e colSums() ritornano un vettore con le somme degli elementi di ciascuna riga o
ciascuna colonna e analogamente, rowMeans() e colMeans() restituiscono un vettore con le
io
L’operatore «*» effettua il prodotto puntuale (ovvero tra elementi della stessa riga e della
stessa colonna) tra due matrici.
Il prodotto matriciale (ovvero riga per colonna) si esegue con l’operatore «%*%».
LISTE
0_
15
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
Per estrarre un elemento da un oggetto della lista occorre prima estrarre l’oggetto dalla lista,
ti
facendo riferimento alla posizione o al nome dell’oggetto e poi usare le singole per accedere
all’elemento.
n
pu
L’estrazione degli oggetti della lista può essere fatta in due modi:
★ • Usando le doppie parentesi quadre e indicando all’interno la posizione nella lista o il
nome dell’oggetto (se l’oggetto ha un nome associato);
★ • Usando il dollaro «$» seguito dal nome dell’oggetto (solo nel caso in cui all’oggetto
ap
è associato un nome).
Le stesse notazioni possono essere usate per modificare o aggiungere elementi alla lista.
Per rimuovere un oggetto dalla lista basta assegnargli il valore NULL.
dell’elemento nell’oggetto.
/B
DATA FRAME
I data frame sono tabelle contenenti dati di vario tipo in
ciascuna colonna.
Le righe vengono chiamate osservazioni, mentre le colonne vengono chiamate anche
variabili.
0_
«V1», «V2», ecc… Anche le righe di un data frame possono essere identificate con
nomi univoci.
★ La funzione per assegnare nomi alle righe di un data frame è rownames().
n4
16
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
più data frame. Richiamata senza parametri consente di visualizzare la lista dei dataframe
ti
già disponibili nei pacchetti base di R
n
ES: Visualizza i dataframe contenuti nel pacchetto «rpart»: > data(package="rpart")
pu
ESTRAZIONE DI ELEMENTI DA [Link]
La selezione di elementi da un data frame si basa sulla stessa notazione posizionale già
vista per vettori, matrici e array. Se le colonne hanno nomi associati, si può far riferimento a
ap
essi tramite «[..]» Oppure «$».
★ L’estrazione di elementi può avvenire anche sulla base di condizioni booleane sui
valori di una o più colonne, al fine di operare una selezione delle righe.
★ La notazione posizionale col segno «-» può essere usata per rimuovere righe e
ec
colonne dal data frame, a patto di memorizzarne il risultato in una variabile.
★ Per rimuovere una colonna basta assegnargli valore NULL.
et
AGGIUNGERE RIGHE AL [Link]
Come per le matrici, la funzione rbind() serve ad aggiungere righe a un data frame, passato
m
data frame.
17
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
Per visualizzare la cartella di lavoro corrente si usa il metodo getwd(), mentre per modificarla
ti
si usa setwd()
n
LETTURA DA FILE
pu
I CSV (Comma Separated Values) sono file di testo semplici che contengono elenchi di dati.
Questo formato consente di esportare facilmente i dati e importarli in altri programmi, per
poterli visualizzare e riutilizzare.
ap
Per leggere questo tipo di dati si può usare la funzione [Link]().
I parametri principali sono:
★ «file»: nome del file di testo da cui leggere i dati;
★ «sep»: carattere separatore dei dati nel file (ad es. « », «\t», «,»);
★ «header»: booleano che indica se la prima riga del file è una riga di intestazione con i
nomi delle colonne; ec
Per salvare il contenuto di una matrice o di un data frame su file di testo, il metodo migliore è
et
usare la funzione [Link]().
I parametri principali sono:
★ «x»: matrice o data frame da scrivere sul file;
m
doppi apici o meno (di default quote=TRUE, dunque i dati sono racchiusi tra doppi
apici);
/B
★ «[Link]»: booleano che indica se includere o meno nel file (di default sono
inclusi) anche i nomi delle righe (se presenti) o gli indici di riga (se i nomi delle righe
non sono presenti).
Per salvare su file in formato CSV, si può usare la funzione [Link](), che ha gli stessi
0_
parametri di [Link]() dove però il parametro «sep» è impostato di default al valore «,».
GRAFICI IN R
d0
basso a destra.
18
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
★ boxplot() per i box plot (diagrammi a scatola e baffi).
n
La funzione plot() permette di creare diversi tipi di grafici a seconda del numero e della
pu
tipologia di parametri passati.
I due parametri principali sono:
★ «x»: vettore contenente i valori dell’asse x del grafico;
★ «y»: vettore contenente i valori dell’asse y del grafico.
ap
A seconda del tipo di vettore passato a «x», il parametro «y» può non essere specificato.
Gli altri parametri della funzione plot() consentono di personalizzare il plot e ogni nuovo plot
creato con la funzione plot() va a sovrascrivere il precedente.
Anche passando due vettori numerici, la funzione plot() produce uno scatter plot.
0_
In questo caso, i valori dell’asse x sono quelli del primo vettore, mentre quelli dell’asse y
sono quelli del secondo vettore.
d0
19
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
Passando solo un factor, plot() produce un grafico a barre contenente, per ogni livello, il
numero di volte che il livello è presente nel factor.
n
pu
ap
BOXPLOT CON PLOT()
ec
et
Il diagramma a scatole e baffi (boxplot)
permette di visualizzare la distribuzione di
uno o più campioni di dati, evidenziando in
m
PARAMETRI DI PLOT()
Tra i parametri più importanti di plot():
★ «type»: tipologia di grafico («l»=solo linee, «p»=solo punti, «b»=entrambi);
d0
Il primo grafico va creato con plot(), i successivi da sovrapporre vanno aggiunti con la
funzione points() o lines().
20
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
L’unica differenza tra le due funzioni è che di default lines() crea un grafico a linee, mentre
ti
points() un grafico a punti, ma può essere variato mediante il parametro «type».
I parametri grafici sono gli stessi della funzione plot().
n
pu
ap
ec
et
ISTOGRAMMI
Il parametro «probability», se
impostato al valore TRUE, tratta le
frequenze dei valori come frequenze relative, ovvero probabilità.
d0
GRAFICI A TORTA
n4
21
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
il parametro «beside» permette di leggerle affiancate.
E’ possibile modificare i colori delle barre tramite il parametro «col» e i nomi relativi ad ogni
n
barra col parametro «[Link]». Tramite «legend» impostiamo una legenda del grafico, in
pu
modo da associare i valori ai corrispondenti colori.
La funzione barplot() può essere usata anche per creare grafici a barre rispetto a due
variabili, passando come dati una matrice di frequenze anziché un vettore.
ap
La funzione table() applicata a più vettori restituisce il numero di elementi per ciascuna
combinazione di valori dei vettori, e passando il risultato a barplot() otteniamo il grafico
desiderato.
★ Il primo
parametro («formula»)
è una formula del tipo
io
contenente valori
numerici e c2 è il
nome di una colonna di tipo factor.
★ Il secondo parametro («data») è il data frame che contiene le colonne c1 e c2.
★ Il parametro opzionale «names» consente di assegnare nomi diversi ai valori
0_
sull’asse x.
Il risultato è un grafico con diversi boxplot, uno per ogni livello del factor.
d0
★ Simboli (tramite «pch»), linee (tramite «lty» e «ltw») e, se presenti, i loro colori
(tramite «col») solo per grafici a linee e punti;
★ Colori di riempimento (tramite parametro «fill») solo per boxplot, grafici a barre,
grafici a torta;
22
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
1) Richiamare il metodo opportuno in base all’estensione del file, e indicare percorso e nome
n
del file: Tutti questi metodi consentono di regolare le dimensioni dell’immagine tramite
pu
«height» e «width».
2) Creare il grafico (mediante plot() o una delle funzioni specializzate). Il grafico non verrà
mostrato nel pannello in basso a destra, ma direttamente salvato sul file indicato;
3) Usare il comando [Link]() per chiudere la connessione al file e rilasciare la risorsa
ap
occupata.
PYTHON
COMMENTI IN PYTHON
ec
I commenti di Python permettono di inserire del testo all'interno del codice.
Vengono utilizzati per descrivere il codice e per renderlo più comprensibile e fa comodo
avere dei punti di riferimento.
et
Per inserire un commento in Python, basta utilizzare il carattere # all'inizio di una riga: tutto
ciò che lo segue (sulla stessa riga) non verrà eseguito.
m
dell'uguale =.
La funzione type() ci restituisce il tipo di dato contenuto in una variabile (equivalente a
/B
class() in R).
TIPI DI DATO
DATI PRIMITIVI
★ int: numeri interi, sia positivi che negativi, senza parte frazionaria (es. 2, -3, 10, …)
0_
★ float: numeri decimali, ovvero numeri con una parte frazionaria (ad es. 2.5, -3.14, …)
★ str: stringhe di caratteri (ad es. «home», «the end»)
★ bool: valori logici booleani (TRUE oppure T e FALSE oppure F)
d0
DATI STRUTTURATI
Sono tipi di dato che organizzano un insieme di dati in una certa modalità, possono essere
composti da dati semplici o primitivi (int, float, bool e str).
n4
Ciascun tipo di dato strutturato è caratterizzato dalla sua modalità di accesso e di modifica
dei singoli valori registrati.
★ Tuple
★ Set
★ Dizionari
VALORI SPECIALI
Possono essere presenti già nei dati o originarsi a seguito di calcoli effettuati.
★ Valore NoneType: rappresenta l'assenza di valore
23
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
0/0) , qualsiasi operazione con NaN risulta in NaN. Si usa [Link]() per
verificarlo.
n
★ Valore float('inf') o [Link] (Infinito): rappresenta l'infinito positivo
pu
★ Valore -float('inf’): rappresenta l'infinito negativo.
Entrambi si originano quando occorre memorizzare un numero troppo grande o
troppo piccolo per il calcolatore oppure a seguito di operazioni aritmetiche (ad es.
3/0)
ap
★ Valore NotImplemented: Usato nelle classi per indicare che un'operazione non è
supportata
★ Valori NA (Not Available) e NULL: Python nativamente non ha questi valori. In
pandas esiste [Link] per dati mancanti e in numpy esiste [Link] per valori mancanti
numerici
LA FUNZIONE ISINSTANCE()
ec
Questa funzione viene utilizzata per verificare se un oggetto è di un certo tipo o se è una sua
et
sottoclasse.
La sintassi è: isinstance(object, type)
Dove object è l'oggetto da verificare e type è il tipo o la classe da confrontare. è molto utile
m
STRINGHE
Le stringhe sono valori di tipo testuale, cioè un insieme di caratteri inseriti tra apici o doppi
/B
OPERATORI ARITMETICI
d0
n4
©
24
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
OPERATORI RELAZIONALI
ti
Ogni volta che si applica un operatore relazionale si ottiene come
risultato un valore booleano TRUE o FALSE.
n
Questi rappresentano sostanzialmente i valori binari 0 ed 1.
pu
OPERATORI LOGICI (O BOOLEANI)
L'Algebra di Boole è quel ramo dell'Algebra in cui non si
utilizzano numeri ma solamente due valori detti Valori di Verità
ap
che mediante i suoi operatori permette di effettuare calcoli logici.
Il tipo di dato booleano ha solo due valori possibili, e questi sono
True e False, che rappresentano sostanzialmente i valori binari 0
ed 1.
ec
et
m
io
/B
COSTRUTTI FONDAMENTALI
INDENTAZIONE
In Python l’indentazione è obbligatoria, e non rispettarla comporta la comparsa di errori.
0_
L’indentazione è l'aggiunta di 4 spazi o tab (pressioni del tasto corrispondente nella tastiera)
usati per delimitatore della nuova porzione di codice (quindi per dividere le istruzioni in
blocchi).
d0
L'ISTRUZIONE ELIF
CICLO WHILE
Il ciclo while ci permette di eseguire un blocco di
codice finché una determinata condizione è e resta
True.
25
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
L'istruzione break serve per terminare un ciclo while prematuramente: non appena
quest'espressione viene letta e processata all'interno del ciclo, Python blocca il loop
n
istantaneamente.
pu
L'istruzione continue invece di interrompere il ciclo fa saltare tutto il codice dopo l'istruzione
e fa ripartire Python dalla prima riga del ciclo.
ap
CICLO FOR E LA FUNZIONE RANGE
Una volta che si entra all'interno del loop, il codice viene eseguito in loop fino a che non si
arriva alla fine dell'intervallo di range(), momento in cui il ciclo termina.
La funzione range ci permette di impostare oltre a un punto di inizio dell'intervallo anche un
punto di fine personalizzato, e un passo di avanzamento.
n4
FUNZIONI
Le funzioni sono quindi create per fare in modo di ridurre il numero di volte che un pezzo di
codice deve essere scritto in un programma e per mantenere il nostro software ordinato.
Per definire una funzione utilizziamo la parola chiave def seguita dal nome che vogliamo
©
Talvolta è necessario avere dei parametri opzionali per le nostre funzioni, ovvero fare in
modo che queste funzionino con o senza l'aggiunta di valori in questi specifici parametri.
26
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
Per rendere questo possibile, possiamo associare a questi parametri un valore di default.
ti
L'ISTRUZIONE RETURN
n
L’istruzione return in Python è obbligatoria.
pu
Se proviamo ad assegnare il risultato della funzione a una variabile otterremo un il tipo di
dato nullo di Python, il NoneType.
Per fare in modo che la nostra funzione restituisca il risultato dobbiamo utilizzare il comando
return. Questo ci permetterà anche di poter assegnare il risultato della funzione a una
ap
variabile.
IL DOCSTRING
Una docstring è una stringa di testo che viene inserita all'inizio di una funzione che serve a
documentare il codice.
ec
A differenza dei commenti, le docstring sono considerate parte del codice e vengono
utilizzate per generare la documentazione automaticamente: questo significa che possono
essere utilizzate per generare documentazione HTML e PDF. Le docstring si scrivono
et
inserendo il testo all’interno di stringhe multiriga definite con tripli apici “”” “””
Le docstring possono essere utilizzate anche per documentare i parametri di una funzione.
m
Quando si utilizza una funzione che ha una docstring, è possibile visualizzarla attraverso la
funzionalità IntelliSense dell'editor. Questo significa che quando si digita il nome della
funzione, verrà mostrato un suggerimento che include la docstring della funzione, compresi i
io
"salvati" in due ambienti diversi chiamati local scope e global scope, si può pensare a questi
due ambienti come a dei contenitori distinti in cui vengono definite e assegnate le variabili,
un contenitore globale e uno locale.
d0
Quando uno di questi contenitori viene distrutto, anche le variabili in esso salvate vengono
dimenticate.
Un ambito locale viene creato ogni volta che una funzione viene chiamata, e distrutto dopo
n4
che la funzione restituisce un valore con return, come se ogni volta che una funzione viene
processata, Python le fornisse un contenitore.
Possono quindi esistere tanti Local Scope quante funzioni abbiamo in esecuzione.
Le variabili dichiarate all'interno di qualsiasi funzione, sono chiamate variabili locali.
Al contrario delle globali, è possibile accedere alle variabili locali solamente dall'ambito
©
locale della funzione in cui sono contenute, quindi non è possibile accedervi dal global scope
o dal local scope di un'altra funzione.
Dall'altro lato invece, esiste e può esistere un unico Ambiente Globale, che viene creato
automaticamente da Python all'avvio del programma e distrutto alla chiusura del
programma.
27
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
È l'ambito principale e tutte le variabili che vengono dichiarate qui, quindi all'esterno di una
ti
funzione, sono chiamate proprio variabili globali, e restano pertanto in vita dall'avvio del
programma "principale" fino alla sua chiusura.
n
È possibile accedere alle variabili globali da qualsiasi parte del programma, mentre è
pu
possibile accedere alle variabili locali solamente dall'ambito locale della funzione in cui sono
contenute.
È possibile utilizzare le variabili di una funzione solo se queste ci vengono passate dal return
della funzione.
ap
I MODULI DELLA STANDARD LIBRARY
Finora abbiamo visto che ciascun programma che scriviamo può usare una serie di funzioni
integrate di Python, in aggiunta a queste Python dispone di una collezione di moduli pronti
all'uso in quella che viene chiamata la Standard Library.
ec
Ciascun modulo è come una libreria (un insieme) di funzioni scritte da altri sviluppatori,
realizzate per svolgere compiti comuni come ad esempio la generazione di numeri casuali o
funzioni matematiche.
et
COME IMPORTARE UN MODULO
Ci sono tre diversi modi per importare un modulo nei nostri script di Python.
m
IL MODULO RANDOM
Questo modulo fornisce una serie di funzioni per generare numeri casuali.
d0
I numeri ottenuti con random possono essere utili in molte situazioni, per esempio quando è
necessario simulare eventi, testare algoritmi o selezionare elementi casuali da una lista.
IL MODULO MATH
Questo modulo è utilizzato per eseguire operazioni matematiche e la maggioranza delle sue
funzioni restituiscono valori di tipo float.
★ Il metodo sqrt(x) restituisce la radice quadrata di x
★ Il metodo pow(x, y) restituisce x elevato alla potenza di y
★ Il metodo exp(x) restituisce l’esponenziale di x, cioé e elevato x
28
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
★ I metodi ceil(x) e floor(x), la prima restituisce l’arrotondamento per eccesso di x (il più
ti
piccolo numero intero maggiore o uguale a x), la seconda restituisce
l’arrotondamento per difetto di x (il più grande numero intero minore o uguale a x).
n
pu
LE LISTE
Il tipo di dato Lista di Python, ci permette di raggruppare più elementi tra di loro.
Le liste in Python possono contenere al loro interno diversi tipi di dato e i vari elementi
vengono ordinati in base ad un indice proprio della lista, in modo da semplificarne l'accesso.
ap
Per dichiarare una lista usiamo una coppia di parentesi quadre, e i vari elementi contenuti
sono separati da una virgola.
Per navigare il contenuto di una lista possiamo usare ad esempio i cicli for.
/B
DOPPI INDICI
Le liste sono così versatili che volendo possono contenere anche altre liste.
La particolarità dei metodi è che vengono richiamati su dati di un certo tipo, dunque tipi di
dato diversi avranno a disposizione metodi diversi.
★ Volendo aggiungere metodi singoli elementi ad una lista usiamo il metodo append().
©
★ Mentre per aggiungere elementi ad una lista da una seconda lista usiamo il metodo
extend().
★ Gli indici delle liste sono fondamentali perché identificano la posizione degli elementi
al loro interno. Per ottenere l'indice di uno specifico elemento possiamo usare il
metodo index().
★ Possiamo sostituire un elemento passando un nuovo valore all'indice dell'elemento
che intendiamo sostituire, oppure cancellarlo tramite la funzione del.
29
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
★ Con pop() rimuoviamo l'ultimo elemento della lista, mentre con remove() possiamo
ti
rimuovere elementi a partire dal loro valore.
★ Possiamo usare gli operatori in e not in per verificare se un elemento o un carattere
n
sia presente in una lista o stringa.
pu
TIPI DI DATO AVANZATO
TUPLE
Anche il tipo tuple di Python rappresenta un insieme di elementi, definiti stavolta utilizzando
ap
una coppia di parentesi tonde, oppure senza alcuna parentesi ma separati da virgola.
Come per le liste, possiamo accedere agli elementi delle tuple utilizzando l'indice.
La grande differenza tra i tipi di dato tuple e list è che le tuple sono immutabili. Per questo
motivo non possiamo usare l'istruzione del per rimuovere elementi.
SET
ec
I set permettono di creare collezioni di elementi, e vengono definiti con una coppia di
et
parentesi graffe, e i valori sono separati da virgola.
La caratteristica fondamentale dei set è che non possono contenere duplicati al loro interno,
possiamo aggiungere nuovi elementi col metodo add, ma provare ad aggiungere elementi
m
DIZIONARI
io
I dizionari (dict) sono simili al tipo di dato lista, ma nei dizionari ad ogni elemento è associata
una chiave che potrà essere usata per accedere al valore dell'elemento.
/B
I dizionari di Python vengono definiti utilizzando una coppia di parentesi graffe che contenga
al suo interno delle coppie chiave / valore separate da due punti.
Le chiavi nei dizionari sono proprio il corrispettivo degli indici nelle Liste: usiamo le chiavi per
richiamare i valori ad esse associati.
E’ possibile aggiungere nuovi elementi al dizionario o sostituirne di già esistenti.
0_
Esistono tre metodi associati ai dizionari che ci consentono di ottenere in output una lista di
tutte le chiavi presenti, o di tutti i valori presenti, o di entrambi allo stesso tempo: keys(),
n4
values() ed items().
Per ottenere una lista di tutte le chiavi presenti nel nostro dizionario usiamo il metodo
dict_keys.
Per ottenere una lista di tutti i valori presenti usiamo invece values(), e utilizziamo il metodo
©
items() per ottenere una lista di tutte le coppie chiavi-valore presenti, sotto forma di oggetti.
Se abbiamo bisogno di una lista vera e propria possiamo utilizzare anche qui la nostra
funzione list().
Possiamo inoltre utilizzare questi metodi in combinazione con un ciclo for.
Qualora provassimo a richiamare un valore associato a una chiave che non esiste nel nostro
dizionario otterremmo un errore, e nello specifico un'eccezione del tipo KeyError, che se non
30
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
gestita causerà il crash del programma (cioè le istruzioni successive che erano state
ti
previste non verranno più eseguite). I dizionari di Python dispongono di un metodo specifico
ideato proprio per situazioni come queste: il metodo get(), che sfrutta la chiave per il valore
n
che stiamo cercando e quella da fornire qualora non lo trovassimo.
pu
Ci saranno dei momenti in cui potremmo avere la necessità di creare una coppia
chiave-valore, qualora una chiave non sia già presente e associata a un valore nel
dizionario.
ap
Il metodo setdefault() cerca la chiave all'interno del dizionario, e se la chiave non esiste, crea
una coppia chiave-valore col valore da noi passato.
MATRICI
/B
Le matrici sono tabelle di due dimensioni i cui elementi sono tutti dello stesso tipo.
Ci sono sostanzialmente due modi in Python di rappresentare matrici: come liste di liste,
oppure con la libreria esterna numpy.
0_
d0
★ Per creare una matrice usando una lista di liste possiamo ad esempio considerare
una matrice 3x2, quindi, per accedere la prima riga['a','b'], accediamo all’elemento
n4
all’indice 0 della lista esterna m, per accedere il secondo elemento 'b' della prima riga
['a','b'] usiamo invece indice 1.
In una matrice fatta da lista di liste, per prendere le dimensioni della matrice,
possiamo usare normali operazioni su lista.
©
31
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
ti
Il contenuto di mat è rappresentato come una lista di liste, ma in realtà i dati sono
strutturati in una sequenza lineare che permette a Python di accedere ai numeri in
n
modo molto più rapido.
pu
NOTA: non si fa distinzione tra vettori e matrici. Sia per oggetti 1xn che per oggetti nxn il tipo
sarà sempre ndarray.
ap
E per creare una matrice riempita di un numero k usiamo il metodo full().
l’importante differenza che in Numpy è consentito scrivere entrambi gli indici dentro
le stesse quadre, separati da una virgola.
io
Poichè le matrici possono contenere solo elementi tutti di uno stesso tipo se
proviamo ad assegnare un carattere a una matrice di numeri interi la conversione
/B
Per estrarre dati da un ndarray possiamo usare le slice, con la notazione già usata
per le liste normali. La differenza questa volta è che possiamo estrarre sotto-matrici
indicando due range tra le stesse quadre.
0_
Invece per estrarre l’intera riga o colonna si utilizzano i due punti : Ad esempio, per
estrarre tutta la prima righa scriveremmo mat[0, : ] e tutta la seconda colonna
scriveremo mat[ : , 1]
d0
Possiamo anche specificare un passo come terzo parametro dopo i due punti.
Modificare una matrice ottenuta come slice di un’altra matrice significa modificare anche la
n4
matrice originale!
A differenza delle slice di liste che producono sempre nuove liste, per questioni di
efficienza con le slice di numpy otteniamo solo una vista sui dati originari, che
significa che scrivendo nella vista andiamo a scrivere anche nella matrice originale.
©
32
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
Numpy è estremamente flessibile, e permette di usare gli array quasi con le stesse
ti
operazioni dei vettori e matrici che conosciamo dall’algebra. Ad esempio, è possibile
sommare due vettori elemento per elemento utilizzando il classico simbolo di somma
n
‘+’, per ottenere la moltiplicazione matriciale dell’algebra classica bisogna utilizzare
pu
l’operatore @, facendo attenzione ad avere matrici di dimensioni compatibili
ap
ec
et
m
io
/B
ma nel contesto di numpy gli operatori logici and e or vanno scritti usando
rispettivamente i simboli & e |.
33
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
nelle celle che soddisfano una condizione con altri valori che saranno indicati
ti
in due matrici extra ma e mb.
Nel caso la condizione sia soddisfatta, verrà preso un corrispondente valore
n
da ma, altrimenti da mb.
pu
TIPI DI DATO AVANZATO
Pandas è una libreria per la manipolazione di dati in formato sequenziale o tabellare, che
ap
può essere installata tramite da PyPI tramite pip.
Pandas si importa come qualsiasi altro modulo. La sintassi comune è import panda as pd.
Dove as pd permette di riferirsi al modulo con l'abbreviazione pd.
io
Pandas fornisce due tipi di dati molto utili, le Series ed i DataFrame. Series rappresenta dati
sequenziali a una dimensione e DataFrame rappresenta dati a due dimensioni, in forma
/B
tabellare.
Ogni colonna di un DataFrame è una Series.
SERIES DI PANDAS
Una Series è un vettore mono-dimensionale i cui elementi sono etichettati con un index.
0_
Una Series può essere creata tramite la funzione [Link]() o passando un dizionario (le
chiavi diventano gli indici e i valori i dati) o specificando sia dati che indici, oppure passando
solo i dati (gli indici saranno sequenziali a partire da 0).
d0
Si può accedere ad una Series sia tramite indice (come nei dizionari) che fungono da
etichette associate utilizzabili per estrarre porzioni di Series (singolarmente o in lista), sia
tramite posizione (come nelle liste).
n4
OPERAZIONI SU SERIES
Le operazioni aritmetiche e i test logici su una Series si applicano a tutti i suoi elementi
(broadcasting).
E' ovviamente sempre possibile eseguire
un'operazione su un solo elemento riferendosi ad
©
34
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
La somma tra due serie le somma elemento per elemento, allineandole per indice. Se
ti
l’indice non è presente otteniamo Nan, ma è comunque aggiungibile attraverso il metodo
add.
n
pu
DATAFRAME DI PANDAS
Un DataFrame è una tabella di oggetti eterogenei, è l'equivalente bi-dimensionale di una
Series che ha indici sia per le righe che per le colonne.
★ Index rappresenta le etichette delle righe
ap
★ Columns rappresenta le etichette delle colonne (sono considerate series)
Tutte le operazioni viste per le serie possono essere applicate a colonne estratte da un
DataFrame. Inoltre molte delle operazioni definite per le Series possono essere applicate
direttamente su un DataFrame.
Si possono creare o da un dizionario di liste o da un file in formato tabellare, come CSV.
Per accedere a una singola colonna del dataframe bisogna usare le singole parentesi
quadre o il punto: df[‘cond1’] è equivalente a df.cond1. Per accedere a più colonne usiamo le
doppie parentesi quadre.
io
È possibile accedere alle righe del dataframe in due modi, tramite indice, utilizzando
/B
l’attibuto iloc seguito da parentesi quadre o tramite il nome della riga, utilizzando l’attibuto loc
seguito da parentesi quadre. E’ possibile attuare filtri usando esclusivamente le parentesi
quadre.
FILTRARE
0_
Per filtrare i dati sulla base di due o più condizioni si possono chiaramente utilizzare gli
operatori logici & (and) e | (or).
Bisogna però mettere ogni condizione all’interno di parentesi tonde!
d0
preesistente.
35
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
Per importare files csv come array di numpy bisogna usare la funzione genfromtxt() del
ti
modulo numpy:
import numpy as np
n
my_data = [Link]('[Link]', delimiter=',')
pu
Per importare files csv come pandas dataframes bisogna invece utilizzare la funzione
read_csv() del modulo pandas:
import pandas as pd
ap
my_data = pd.read_csv('[Link]', sep=',', header=None)
print(my_data.values)
Per salvare una tabella di tipo ndarray su un file csv bisogna usare la funzione savetxt() del
modulo numpy:
import numpy ec
my_data = [Link]([ [1,2,3], [4,5,6], [7,8,9] ])
[Link](“[Link]", my_data, delimiter = ",")
et
Per salvare files csv a partire da pandas dataframes bisogna utilizzare la funzione to_csv()
del modulo pandas:
m
import pandas as pd
df.to_csv('[Link]')
GRAFICI
io
MATPLOTLIB
Matplotlib è una libreria per la realizzazione di grafici estremamente versatile, che permette
/B
Per salvare su file i grafici generati bisogna utilizzare il metodo savefig di pyplot.
Con xticks e yticks è possible inserire sequenze di valori che, rispettivamente, appariranno
n4
sull'asse delle ascisse e su quella delle ordinate. Dimensionare i tick, con i range, in
riferimento alle sequenze da illustrare è fondamentale per valorizzare la rappresentazione.
Invece [Link]() è utilizzato per visualizzare la griglia di linee che nascono da ogni singolo
tick impresso sugli assi, permettendo di suddividere il piano in quadranti.
©
Con xlabel e ylabel assegniamo il valore agli assi mentre con title fissiamo un nome per il
grafico.
È inoltre possible graficare diversi dati sulla stessa area.
Ad esempio, è possible graficare y in funzione di x, e aggiungere una orizzontale basata
sulla media dei valori di y. Per farlo è sufficiente assegnare più comandi allo stesso oggetto
plt. axhline.
36
Accedi al gruppo “MATRICOLE Biotecnlogie e [Link]” per confrontarti con i tuoi colleghi.
Segui il canale “BIOMETECT appunti” per ottenere tutte le sbobine e materiale didattico GRATUITO!
I metodi di Matplotlib offrono una serie di argomenti per la formattazione degli effetti come c
ti
per l'identificazione del colore (in questo caso "r" sta per red, rosso) e linestyle con cui
indichiamo il tratto della linea (la stringa "--" produce una linea tratteggiata).
n
pu
ap
ec
et
m
io
/B
0_
d0
n4
©
37