Data Science Intro

Python, esercitazione

Matteo Lugli

Created: 2024-02-01 gio 20:30

Motivazioni

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;

Sull'importanza del problem solving


Cos'hanno in comune queste compagnie?


  • Sono tra le piu' importanti e rivoluzionare al mondo;
  • Gli stipendi dei dipendenti sono incredibilmente alti;
  • Fanno dei colloqui per assumere molto particolari;

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;

Applicazioni

Per cosa si usa Python?


  • Web development;
  • Data science;
  • Web Scraping;
  • Machine Learning & Deep Learning;
  • …

Oggi con una piccola esercitazione ci occuperemo di """data science""";

Vogliamo estrarre informazioni utili usando grosse quantita' di dati;

Esercitazione

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!

Soluzione

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):

  • loco
  • occhi
  • tutto