Anteprima
Vedrai una selezione di 5 pagine su 18
Programmazione python e R Pag. 1 Programmazione python e R Pag. 2
Anteprima di 5 pagg. su 18.
Scarica il documento per vederlo tutto.
Programmazione python e R Pag. 6
Anteprima di 5 pagg. su 18.
Scarica il documento per vederlo tutto.
Programmazione python e R Pag. 11
Anteprima di 5 pagg. su 18.
Scarica il documento per vederlo tutto.
Programmazione python e R Pag. 16
1 su 18
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

IF (THEN) ELSE

In Python si utilizzano le parole chiave if ed else per determinare le regioni di codice condizionale

If N%2==1: 5

print “N dispari”

elif N==0:

print “N uguale a zero”

else:

print “N pari”

il ramo else è opzionale, non sempre è necessario entrambe le istruzioni if ed else si concludono

con i due punti esattamente come nelle funzioni, il codice appartenente all'if è denotato

dall'indentazione. Lo stesso vale per l'else.

L'istruzione elif consente di aggiungere ulteriori condizioni al codice elif funziona come if , quindi la

porzione ci codice associata viene eseguita se è verificato il predicato Tuttavia, un elif viene

considerato se e solo se le precedenti condizioni non sono verificate (altrimenti viene ignorato) Si

possono utilizzare tutti gli elif che si desidera

Cicli for

Molto spesso, nei nostri programmi, dobbiamo ripetere un blocco di istruzioni più volte In

particolare, effettuare un numero ben preciso di ripetizioni Questo ruolo è svolto in Python

dall'istruzione for Un ciclo for scorre uno per uno gli elementi di una lista. Ogni elemento viene

assegnato a una variabile e poi viene eseguita una porzione di codice

for i in lista_elementi:

# porzione di codice

Questo codice va letto "per ogni elemento i contenuto in lista_elementi fai…"

Cicli while

I cicli for sono fatti per eseguire un numero definito di volte una certa azione. Tuttavia, in alcune

situazioni, potremmo desiderare di rimanere in un loop infinito I cicli while funzionano proprio in

questa maniera: finché la condizione è verificata rimaniamo nel ciclo. Altrimenti, usciamo Anche

while richiede l'indentazione per il codice da ripetere all'infinito

Sia i cicli for che i cicli while possono essere interrotti in qualunque momento usando l'istruzione

break

Sia i cicli for che i cicli while possono saltare una iterazione in qualunque momento usando

l'istruzione continue

Aprire file di testo

In python per leggere un file di testo si usa la funzione open() 6

fd = open("nome_del_file.txt")

Con questa istruzione otteniamo un "descrittore di file" chiamato fd: è una nuova variabile che

contiene il riferimento al file "nome_del_file.txt" Possiamo chiudere il file con il comando

fd.close()

Possiamo ottenere una lista di tutte le linee di testo contenute nel file con il metodo readlines()

del descrittore.

fd = open("esempio.txt")

linee = fd.readlines()

Possiamo poi usare un ciclo for sulla lista delle linee per elaborarle una per una (ad esempio,

stamparle con print)

fd = open("esempio.txt")

linee = fd.readlines()

for linea in linee:

print linea

Le operazioni che abbiamo appena visto sono così comuni che python mette a disposizione una

sintassi molto compatta (con with) per eseguirle

Prestate attenzione all'indentazione di with: significa che in tutto il blocco indentato il file è aperto.

Dopo la parte indentata per with, il file viene automaticamente chiuso e non può più essere letto (a

meno di non riaprirlo)

Salvare file di testo

Simmetricamente alla lettura, esiste una sintassi per scrivere su un file di testo Nella open,

dobbiamo specificare l'argomento aggiuntivo "w" (i.e., write) Usiamo il metodo .write() del

descrittore per scrivere sul file le stringhe Ogni stringa deve terminare con \n, che è il codice per il

ritorno a capo

NumPy

NumPy è un package di python per il calcolo scientifico (si installa a parte) è utilissimo perché

fornisce funzionalità matematiche avanzate, liste potenziate (array), generatori di numeri casuali,

trasformate di Fourier, funzioni statistiche, e via elencando è molto ben integrato con altre librerie

potenti come SciPy e matplotlib (che vedremo in seguito)

MEDIA E DEVIAZIONE STANDARD

Con NumPy possiamo calcolare media e deviazione standard di una lista (di numeri) con le

funzioni

average() e std() 7

Entrambe le funzioni ritornano un messaggio di warning e un valore speciale nan ("not a

number") se vengono calcolate su una lista vuota

Array

L'array è la struttura dati principale di NumPy Rappresenta un'estensione del concetto di lista

numerica (omogenea, tutti dati dello stesso tipo) caratterizzata da funzionalità matematiche

avanzate Per creare un array basta creare una lista e convertirla con la funzione array() Gli array

supportano operazioni vettoriali: ad es., possiamo raddoppiare tutti i valori degli elementi di un

array semplicemente moltiplicandolo per 2 (diverso dalle liste!)

Esistono funzioni NumPy che creano direttamente degli array numerici

Gli array di NumPy supportano operatori vettoriali (ovvero applicate in automatico su tutti i valori)

per le principali funzioni matematiche, anche combinate tra loro

• sum(), len(), min(), max(), average() e std() supportano gli array

Diversamente dalle liste, la somma di due array non rappresenta più la loro concatenazione, bensì

la somma dei loro elementi (somma vettoriale)

Molti operatori sugli array sono vettoriali, ovvero applicano l'operazione

tra gli elementi dei due array

Matrici

Una funzionalità importante degli array sono le matrici, ovvero array nidificati 8

NumPy mette a disposizione molteplici funzionalità per manipolare matrici

create con gli array. Ad esempio, l'attributo.T dà accesso alla trasposta

della matrice

print A.ndim conoscere le dimensioni della matrice

print A.shape conoscere quanti elementi ci sono su ogni dimensione della

matrice

A.reshape((3,2)) "rimodellare" il numero di righe e colonne di una matrice, a patto

che il numero di elementi rimanga uguale

3 righe e 2 colonne

A.dot(B) moltiplicazione di due matrici A e B o prodotto matrice vettore

cross(A,B) Prodotto vettoriale

Leggere un file strutturato

Molto spesso capita di dover analizzare un file di testo contenente dei dati organizzati in qualche

maniera (magari prodotti da qualche strumento) Ad es., i cosidetti CSV e TSV ovvero,

rispettivamente, dei files in cui i valori sono separati da virgole o caratteri di tabulazione.

Dato che si tratta di una procedura molto frequente, NumPy mette a disposizione una funzione

loadtxt()

Dopo questa chiamata, la variabile "valori" contiene una matrice con i dati. A ogni riga della matrice

corrisponde a una riga del file. Le colonne della matrice corrispondono ai diversi valori su ogni riga,

che nel file erano separati da tabulazioni o virgole

Salvare i dati

A volte vogliamo fare il procedimento inverso, ovvero salvare in un file dei dati prodotti dai nostri

algoritmi Simmetricamente a loadtxt(), NumPy mette a disposizione una funzione

savetxt("nomedelfile.tsv", valori) Questa funzione crea un nuovo file (o sovrascrive uno

precedente) chiamato "nomedelfile.tsv", in cui vengono scritti i dati contenuti nella lista o matrice

"valori", strutturati mediante dei caratteri di tabulazione

Matplotlib

Spesso, al termine di una analisi numerica, siamo interessati a visualizzare graficamente i

risultati per poterli interpretare più facilmente Esiste una libreria di creazione di grafici molto

potente per python chiamata matplotlib (si installa a parte) 9

Possiamo assegnare un'etichetta agli assi x e y mediante le funzioni xlabel() e ylabel() e

possiamo inoltre mettere un titolo

con la funzione title()

Dopo aver specificato i valori sulle

x e sulle y, possiamo usare un

argomento aggiuntivo che dice a

matplotlib come plottare la curva e

con quale colore Possiamo inoltre mostrare una legenda dei

plot Si fa specificando l'argomento "label" ad

ogni plot e chiamando la funzione legend()

prima di plottare La legenda riporta

automaticamente il nome, il tipo e il colore della

curva

R

R è un linguaggio di programmazione e un ambiente di sviluppo specifico per l'analisi statistica

dei dati Creato da due statistici: un canadese (R. Gentleman) e un neozelandese (R. Ihaka) .R è

interpretato, ha tipizzazione dinamica, è fondamentalmente imperativo ed è espandibile con un

vasto numero di moduli aggiuntivi raccolti in un repository chiamato CRAN - "Comprehensive R

Archive Network". Esiste un progetto specifico chiamato Bioconductor che raccoglie un'ampia

libreria di tools per la bioinformatica e la genomica high-throughput

Similmente a quanto visto con Python+IDLE, faremo uso di una IDE anche per il linguaggio R e La

IDE che useremo è RStudio che si presenta suddiviso in una console dove è possibile dialogare

direttamente con l’interprete R, un riquadro editor dove possimo scrivere i nostri file sorgente e

lanciane l’esecuzione previa selezione e tramite il tasto Run. Il riquadro Environment mostra tutti

gli elementi (e.g., variabili, liste, matrici) contenuti nella memoria corrente, Il tab History riassume

tutti i comandi dati all'interprete fino a quel momento. Infine il riquadro in basso a destra riassume i

Files nella directory corrente, consente di creare Plots, elenca i Packages disponibili, fornisce un 10

Help in linea e visualizzare

contenuti web locali (Viewer)

La directory corrente

I file che creiamo con

RStudio, ma anche i

comandi che forniamo,

vengono salvati nella

directory corrente Per sapere

in quale directory stiamo

lavorando usiamo il

comando getwd().

Utilizziamo il comando q()

("quit") per uscire da R

usando questo comando, vengono creati due files chiamati .Rdata e .Rhistory che,

rispettivamente, contengono i dati e i comandi dati in questa sessione di lavoro in questo modo,

alla prossima apertura di R, possiamo riprendere il lavoro fatto R chiederà conferma di salvare il

lavoro fatto: rispondete "y" (yes) se volete farlo

Per conoscere i files contenuti nella directory corrente utilizziamo dir()

Per settare una nuova directory corrente a nostra scelta, utilizziamo il comando

setwd("percorso"), dove l'argomento è la nuova directory da utilizzare per lavorare

alternativamente possiamo utilizzare l’opzione contenuta nella barra del menu(Session  choose

directoty)

L'interprete R

L'interprete R funziona in maniera molto simile a Python ad esempio, possiamo fargli valutare delle

espressioni basate sui classici operatori aritmetici (+, -, *, /) ( Attenzione: l'elevamento a potenza

è ^ e non **). Molte funzioni matematiche avanzate sono nativamente supportate e non

richiedono l'importazione di librerie aggiuntive (ad es., radice quadrata, funzioni trigonometriche,

logaritmi, esponenziali) anche le costanti più importanti sono subito disponibili (ad es., pi per il

pigreco) . R consente al programmatore di creare nuove funzioni

L'assegnamento in R

Diversamente da Python, in

Dettagli
Publisher
A.A. 2016-2017
18 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Alicegi di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano - Bicocca o del prof Besozzi Daniela.