Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


PYTHON FUNDAMENTALS FOR DATA SCIENCE (prof Storti), Appunti di Fondamenti di informatica

Gli appunti riguardano la parte del corso tenuta dal Prof. Storti, essenziali per superare l'esame scritto. Includono esercitazioni e esempi che coprono tutti gli argomenti trattati durante le lezioni. Questi appunti sono dettagliati e organizzati in modo chiaro per facilitare lo studio e la comprensione degli argomenti. Sono integrati anche con le slide del professore. Riguardano dunque solo la parte di Python tenuta nella prima metà del corso di PYTHON FUNDAMENTALS FOR DATA SCIENCE AND RELATIONAL DATABASES, è disponibile anche il file della seconda metà del corso, quella riguardante database e tenuta dalla professoressa Diamantini (si trova nel mio profilo).

Tipologia: Appunti

2022/2023

In vendita dal 17/02/2024

marika-salvatori-1
marika-salvatori-1 🇮🇹

3.3

(4)

13 documenti

1 / 81

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
PYTHON
Esistono diversi approcci al data science:
- PROBING REALITY: prima ci si basava su una simulazione, ora ci si basa su dei
test fatti su dati reali à AB TEST (indecisione su dove mettere un bottone, allora si
creano due interfacce e le proponiamo a casa, dopo giorni analizziamo se la
variante più efficace è stata la A o la B)
- PATTERN DISCOVERY: descrivere i dati individuando dei pattern (esempio:
scontrini supermercato: se due o più prodotti vengono spesso acquistati insieme)
[oppure PROFILAZIONE: individuare dei singoli che possono essere raggruppati in
gruppi omogenei]
- PREDICTION
ASSOCIATION for COMPUTING MACHINERY à Scienza della rappresentazione e
dell’elaborazione dell’informazione
COMPUTER: macchina che segue sequenze di semplici istruzioni.il programma parte
sempre da un insieme di dati che verranno trasformati per produrre risultato mediante
delle istruzioni scritte in un linguaggio di programmazione
DATI: fatti grezzi e non organizzati, che devono essere elaborati per essere utili
INFORMAZIONE: diversi dati organizzati
Esempio:
§ Raccolta del dato (mojito, 8)
§ Interpretazione del dato (otto mojito) à informazione
§ Analisi (incasso di oggi) à conoscenza (trovare trend) = COMPRENS
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51

Anteprima parziale del testo

Scarica PYTHON FUNDAMENTALS FOR DATA SCIENCE (prof Storti) e più Appunti in PDF di Fondamenti di informatica solo su Docsity!

PYTHON

Esistono diversi approcci al data science:

  • PROBING REALITY: prima ci si basava su una simulazione, ora ci si basa su dei test fatti su dati reali à AB TEST (indecisione su dove mettere un bottone, allora si creano due interfacce e le proponiamo a casa, dopo giorni analizziamo se la variante più efficace è stata la A o la B)
  • PATTERN DISCOVERY: descrivere i dati individuando dei pattern (esempio: scontrini supermercato: se due o più prodotti vengono spesso acquistati insieme) [oppure PROFILAZIONE: individuare dei singoli che possono essere raggruppati in gruppi omogenei]
  • PREDICTION ASSOCIATION for COMPUTING MACHINERY à Scienza della rappresentazione e dell’elaborazione dell’informazione COMPUTER: macchina che segue sequenze di semplici istruzioni.il programma parte sempre da un insieme di dati che verranno trasformati per produrre risultato mediante delle istruzioni scritte in un linguaggio di programmazione DATI: fatti grezzi e non organizzati, che devono essere elaborati per essere utili INFORMAZIONE: diversi dati organizzati Esempio: § Raccolta del dato (mojito, 8) § Interpretazione del dato (otto mojito) à informazione § Analisi (incasso di oggi) à conoscenza (trovare trend) = COMPRENS

Come vengono presentati i dati in un computer? Con il sistema binario: sequenza di 1 e 0 Perché? Il dispositivo elettronico funziona mediante flussi di corrente, il primo di salvare memoria era attraverso gli strumenti simili al lampadine, quindi gli zero e uno sono semplici da essere mappati sul modello della lampadina: acceso o spento (valvole termoioniche). Ora abbiamo dei transistor (processori che sono molto più piccoli ma funzionano alla stessa maniera) Posso rappresentare le lettere o i numeri associando ognuno diverse sequenze di 0 e 1 Numeri in base binaria: Per arrivare a 8: 1000 dove 1x8 + 0x4 + 0x2 + 0x1 = 8 7 = 111 dove 1x4 + 1x2 + 1x1 = 7

Caso peggiore 100 pagine 100 passi (n) In informatica si può usare un approccio sequenziale, ma anche far svolgere comandi in contemporanea. INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA Per analisi e programmazione si intende l'insieme delle attività volte a risolvere problemi utilizzando un elaboratore, dalla formulazione del problema fino alla predisposizione dell'elaboratore

  • Scopo dell'analisi: definire un algoritmo
  • Scopo della programmazione: definire un programma Fasi processo analisi e programmazione:
    • Analisi problema requisiti
    • Specificazione dati in ingresso in uscita
    • Definizione algoritmo risolutivo
    • Identificazione e formalizzazione di una soluzione, cioè dei contenitori necessari di dati e delle relative operazioni, e descrizione delle operazioni da eseguire con un diagramma di flusso
    • Traduzione del diagramma di flusso in un programma, in un linguaggio di programmazione “ad alto livello” ALGORITMO: elenco finito di istruzioni che specificano le operazioni per risolvere una classe di problemi. Un algoritmo non può essere seguito direttamente dall’elaboratore PROGRAMMA: ricetta che traduce l’algoritmo, immediatamente comprensibile, quindi eseguibile da un elaboratore LINGUAGGIO DI PROGRAMMAZIONE: linguaggio rigoroso che permette la formalizzazione di un algoritmo in un programma

Il programmatore deve:

  • Analizzare il problema, riducendoli in termini astratti e formulando un modello del problema
  • Individuare una strategia risolutiva e ricondurla ad un algoritmo: unica parte creativa (non c’è una regola precisa, si deve analizzare il problema e da lì si parte)
  • Codificarlo in un programma scritto in linguaggio di programmazione per renderlo comprensibile al calcolatore
  • Analizzare il risultato dell’elaborazione evidenziando eventuali errori PROPRIETA’ DEGLI ALGORITMI a. FINITEZZA: ogni algoritmo deve essere finito, cioè ogni singola istruzione deve essere seguita in tempo finito e un numero finito di volte. Limitato nello spazio nel tempo b. GENERALITA’: Deve fornire la soluzione per una classe di problemi quindi deve essere applicabile a qualsiasi insieme di dati appartenenti al dominio di quel lago ritmo e deve produrre risultati che appartengono all’insieme di arrivo o codominio. Valido per una serie di casi, non solo per uno specifico c. NON AMBIGUITA’: vanno definiti univocamente i passi successivi da seguire, vanno evitati paradossi, contraddizioni e ambiguità. Non devi lasciare spazio al dubbio. I dati possono essere strutturati e classificati in base alla loro occupazione di memoria:
  • Strutture dati STATICHE: quantità di memoria necessaria e determinabile a priori (arrey e record)
  • Strutture dati DINAMICHE: la quantità di memoria varia in base al tempo di esecuzione (liste, pile, alberi) VARIABILE à nome usato per indicare una cella di memoria (nome che assegniamo a un dato) Ad esempio, nel linguaggio Python, con l'istruzione: number = 34 li computer alloca una cella di memoria ad un certo indirizzo (es: 1235446) e ci mette dentro il valore 34 Se noi andiamo a scrivere number = 100 , a quel punto il computer va sostituire il 34 col 100: così abbiamo aggiornato il dato. ARREY à insieme organizzato di elementi omogenei, identificati dallo stesso nome e da uno o più indici
  • Schema di interazione: nel primo caso prima mi pongo la domanda poi eseguo le istruzioni, nel secondo, in caso di cicli dunque è importante avere un ramo che ci fa uscire dal ciclo, altrimenti il programma non può terminare. Quando eseguiamo un blocco di controllo ricordiamoci di far congiungere a un certo punto diagrammi TEOREMA DI IACOPINI: ogni algoritmo può essere codificato (rappresentato) usando questi tre elementi: I tre schemi fondamentali possono essere:
  • Concatenati: uno di seguito all’altro
  • nidificati: uno dentro l’altro Ma non possono essere mai: ´ Intrecciati ´ Accavallati

Esercizi

PROGRAMMI

PSEUDO-CODICE: non è un vero e proprio linguaggio di programmazione ma ci si avvicina per poi facilitare la scrittura vera Un programma necessita di istruzioni di controllo:

  • If, then, else : eseguire un’istruzione piuttosto che un’altra
  • For, while : ripetere un’operazione finché una condizione non cambia à LOOP ISTRUZIONI IN LINGUAGGIO MACCHINA Per istruzioni in linguaggio macchina si intende con la codifica binaria, possibili per operazioni semplici. Per istruzioni di alto livello serve un linguaggio di programmazione che fornisce funzioni per compiere operazioni

Le memorie di massa sono usate per tenere dati a lungo termine, una sostanziale differenza tra loro è la velocità di memorizzazione e quindi di accesso ai dati (CD, DVD, USB) MEMORIE DI MASSA Dispositivi in grado di conservare al loro interno:

  • grandi quantità di informazione
  • in modo persistente (le informazioni non si perdono spegnendo il computer)
  • con un accesso in lettura e scrittura meno rapida della RAM (nell'ordine dei millisecondi) GERARCHIE DI MEMORIE La MEMORIA CENTRALE è composta da:
  • RAM: Random Access Memory, è volatile (: perde il suo contenuto quando si spegne)
  • ROM: Road Only Memory Perché esistono memorie più piccole della RAM? Per ottimizzare i tempi il computer salva le informazioni che usiamo più spesso nelle CACHE à principio di località In questo modo,
  • la prima volta che il microprocessore carica dei dati dalla memoria centrale, tali dati vengono caricati anche sulla cache
  • le volte successive, i dati possono essere letti dalla cache (veloce) invece che dalla memoria centrale (più lenta)
  • Principio di località di dati e istruzioni Ma allora perché non costruire la RAM con memorie più veloci? Perché costano molto CPU: svolge le elaborazioni e il trasferimento dei dati, cioè esegue i programmi E’ composta da:
  • Clock à dà la base dei tempi per mantenere il SINCRONISMO delle operazioni
  • Registri à porzioni di memorie piccolissime ma velocissime
  • ALU (Arithmetic & Logic Unit) à fa solo operazioni aritmetiche
  • Unità di controllo à responsabile di eseguire le istruzioni di ogni programma MULTITASKING: E’ la possibilità che consente a un sistema operativo di eseguire più programmi “allo stesso tempo” Poiché i registri contengono tutto lo stato dell’elaborazione di un certo processo:
  • salvando in memoria il contenuto di tutti i registri è possibile accantonare un processo per passare a svolgerne un altro (salvataggio di contesto)
  • ripristinando dalla memoria il contenuto di tutti i registri precedentemente salvati è possibile ripristinare lo stato di un processo accantonato, riprendendone l’esecuzione come se nulla fosse accaduto.
  • salvataggio e ripristino del contesto avvengono in tempi rapidisissimi, dando l’impressione che più processi sono eseguiti allo stesso tempo (time-sharing) Problema: nell’architettura di Von Neuman le operazioni sono strettamente sequenziali

ISO LATIN- 1

  • Usa 8 bit: 256 caratteri diversi
  • Contiene i codici ASCII come sottoinsieme
  • ISO Latin-1 contiene (posizioni da 160 a 255) vari caratteri accentati e lettere usate dai linguaggi dell’Europa occidentale (italiano, francese, spagnolo, tedesco, danese, ecc.) In assenza di opportune convenzioni, testi generati su un dato sistema possono risultare corrotti se visualizzati in un sistema diverso (non è raro che capiti con la posta elettronica!) La famiglia ISO contiene ben 15 alfabeti standard (es. Latin/Greek) UNICODE
  • Usa 16 bit: la versione 3.0 definisce 49.194 caratteri
  • I primi 256 codici coincidono con quelli di ISO Latin- 1
  • Mentre la famiglia ISO 8859 definisce sottoinsiemi di caratteri adatti a trattare solo alcuni linguaggi alla volta, UNICODE definisce un’insieme di caratteri adatto a trattare tutti i linguaggi
  • Mentre con altri standard lo stesso carattere può avere codifiche diverse (a seconda dell’alfabeto usato), in UNICODE ogni carattere ha una codifica unica
  • Ha una grande diffusione industriale (Microsoft, Apple, Oracle, ecc.) ed è supportato da vari SO e internet browser RAPPRESENTAZIONE DI UN’IMMAGINE Le immagini sono un ‘continuo’ e non sono formate da sequenze di oggetti ben definiti come i numeri e le stringhe. Bisogna quindi prima ‘discretizzarle’ ovvero trasformarle in un insieme di parti distinte che possono essere codificate separatamente con sequenze di bit. L’immagine digitale viene ottenuta campionando una immagine a toni continui attraverso una “griglia discreta” di pixel e quantizzando poi i valori campionati con un numero finito di bit. CAMPIONAMENTO: griglia di elementi detti pixel Intuitivamente: la griglia regolare quadrata (o griglia di campionamento) viene sovrapposta all’immagine da digitalizzare. Ogni quadrato della griglia darà origine ad un pixel e il colore sarà la media dei colori degli oggetti che cadono all’interno di quel quadrato

QUANTIZZAZIONE: la conversione dell'immagine campionata in valori numerici. Ogni pixel viene rappresentato da un certo numero di bit.

  • la rappresentazione in ‘toni di grigio’: un byte per pixel, con 256 gradazioni di grigio per ogni punto (immagini bianco e nero), o più byte per pixel, per avere più gradazioni possibili
  • rappresentazione a colori RGB (red, green, blu): comunemente 3 byte per pixel che definiscono l’intensità di ciascun colore base. In questo modo si hanno circa 16 milioni di colori diversi definibili à combinazione di 3 colori, 3 byte = rosso, verde, blu, ogni colore ha 256 sfumature quindi 3 byte x pixel. I colori in totale sono 16 milioni di combinazioni che ci danno tutte le sfumature
  • Altri tipi di codifica sono possibili (ad esempio HLS (dove una componente dà la tonalità, una la saturazione e una la luminosità), CMYK, etc..) Es. fotocamera da 8Mpx à 1 px = 3 byte à un’immagine occuperà 24 MB Dimensioni in memoria di un’immagine dipende da:
  • numero pixel
  • profondità (codifica del pixel) Richiede generalmente molta memoria, allora per risparmiarne:
  • l’uso di una ‘tavolozza’ (palette) che contiene il sottoinsieme dei colori rappresentabili che compare in una foto
  • tecniche di compressione che non codificano ogni pixel in modo autonomo ma cercano di raggruppare le aree che hanno caratteristiche comuni formati più usati:
  • JPEG
  • GIF