Python, esercitazione
Created: 2024-02-01 gio 20:30
Perche' imparare Python?
Perche' e' intuitivo e veloce da imparare;
Permette di concentrarsi sul problem solving e preoccuparsi meno delle "formalita'" del codice;
Perche'…lo usano tutti, e' disponibile molto codice scritto da altri;
Cos'hanno in comune queste compagnie?
Al colloquio di lavoro vi chiedono di risolvere problemi di programmazione simili a quelli visti nell'Advent of code!
L'idea e' che vogliono capire se sapete ragionare su problemi nuovi o simili a problemi gia' visti;
Per cosa si usa Python?
Oggi con una piccola esercitazione ci occuperemo di """data science""";
Vogliamo estrarre informazioni utili usando grosse quantita' di dati;
Le parole preferite di … Dante!
Su classroom troverete un file di testo chiamato "commedia.txt";
Lo scopo dell'esercitazione e' quello di trovare le parole piu' usate da Dante nella sua opera;
In particolare ci limiteremo ad analizzare le prime 10 mila parole, altrimenti python potrebbe avere problemi a processare i dati;
Cercate di estrapolare informazioni utili!
Per prima cosa, leggiamo il file e creiamo una lista contenente tutte le parole:
frasi = f.read().replace("\n" ," ")
parole = frasi.split(" ")
Se stampiamo parole, scopriamo che compaiono dei caratteri vuoti (' ').
Usiamo una list comprehension per tenere solo le parole diverse dal carattere nullo;
Teniamo solo le prime 10k parole per evitare che esploda il computer!
frasi = f.read().replace("\n" ," ")
parole = [x for x in frasi.split(" ") if x != ""][:10000]
Meglio!
Creiamo un dizionario che associa a ogni parola quante volte compare nella lista di parole;
Per ragioni di efficienza (per velocizzare il codice) ogni volta che contiamo le occorrenze di una parola controlliamo di non aver gia' contato (e salvato) le occorrenze di quella parola;
diz = {}
for parola in parole:
if parola not in diz:
diz[parola] = parole.count(parola)
Spiegazione visuale nella prossima slide!
parole = ["cielo", "mondo", "terra", "cielo", "porta", "porta"]
Iteriamo su parole:
cielo \(\rightarrow\) diz['cielo'] = 2
mondo \(\rightarrow\) diz['mondo'] = 1
terra \(\rightarrow\) diz['terra'] = 1
cielo \(\rightarrow\) gia' fatto il conto, skip
porta \(\rightarrow\) diz['porta'] = 2
porta \(\rightarrow\) gia' fatto il conto, skip
Ora salviamo in usate soltanto le parole che compaiono piu' di 15 volte:
usate = [key for key,value in diz.items() if value > 15]
for word in usate:
print(word)
Escludendo congiunzioni/articoli ecc… scopriamo che a dante piacciono (ad esempio):