SoftPython
Libro introduttivo e gratuito per imparare a programmare e analizzare dati con Python 3.
Ricco di esercizi svolti e strutturati, è adatto sia a principianti che studenti con conoscenze tecnico/scientifiche.
DOWNLOAD: PDF EPUB HTML Github
Al giorno d’oggi sempre più decisioni vengono prese in base a dati fattuali e oggettivi. Tutte le discipline, dall’ingegneria alle scienze sociali, necessitano oramai capacità di elaborare dati ed estrarre informazioni utili dall’analisi di fonti eterogenee. Questo sito di esercizi pratici fornisce quindi un’introduzione alla data science usando Python 3, un linguaggio di programmazione popolare sia nell’industria che nell’ambito della ricerca.
News
26 agosto 2023
Matrici di liste 1: aggiunto paragrafo Visitare con stile
ristrutturato Analitiche con Pandas:
separato fogli in 1. intro e 2. avanzato (raggruppamento, congiunzione, geopandas)
rinominato dataset in
astropi.csv
rimuovendo colonna ROW_ID e sostituendolo con time_stampaggiunto paragrafi ad inizio primo foglio, migliorato sezione matplotlib
aggiunto esercizio intervalli pressione per il meteo
rimosso foglio esercizi, distribuito esercizi negli altri fogli
eliminato esercizio beni culturali umbria (per ora)
formats2-csv: scambiato scrittore/lettore
4 luglio 2023
restyling!
strings1: aggiunto paragrafo su f-string
sets1: aggiunto paragrafo Cosa possiamo cercare?
formats4-chal, sfida personaggi trentini: migliorato soluzione e aggiunto testing
lists3: aggiunto paragrafo copy/deepcopy
Python Tutor adesso mostra sempre strutture dati non nestate
A chi è rivolto
Il materiale in questo sito è rivolto sia a principianti assoluti che a studenti con background più tecnico che desiderino acquisire conoscenze pratiche riguardo l’estrazione, la pulizia, l’analisi e visualizzazione di dati (tra i framework Python usati vi saranno Pandas, Numpy e l’editor Jupyter). Per superare eventuali difficoltà e garantire risultati didattici concreti, le guide presentate sono passo-passo.
Requisiti
Qualche conoscenza base di programmazione, in un qualsiasi linguaggio è utile ma non strettamente necessaria. Tutti i materiali proposti sono in lingua italiana.
Contenuti
Come orientarsi: Approccio e obbiettivi
A - Fondamenti
Introduzione veloce a Python (per chi ha già conoscenze di programmazione)
A.1 Tipi di dato
Basi: 1. variabili e integeri 2. booleani 3. numeri reali 4. challenge
Stringhe: 1. intro 2. operatori 3. metodi base 4. metodi di ricerca 5. challenge
Liste: 1. intro 2. operatori 3. methodi base 4. metodi di ricerca 5. challenge
Tuple: 1. intro 2. challenge
Sets: 1. intro 2. challenge
Dizionari: 1. intro 2. operators 3. methodi 4. classi speciali 5. challenge
A.2 Controllo di flusso
Condizionali if: 1.intro 2. challenge
Cicli for: 1. intro 2. stringhe 3. liste 4. tuple 5. insiemi 6. dizionari
7. cicli annidati 8. challenge
Cicli while 1. intro 2. challenge
Sequenze e comprehension: 1. intro 2. challenges
A.3 Algoritmi di base
Funzioni: 1. intro 2. gestione errori e testing
3. stringhe 4. liste 5. tuple 6. insiemi 7. dizionari 8. challenge
Matrici - liste di liste: 1. intro 2. altri esercizi 3. challenge
Strutture miste: 1. intro 2. challenge
Matrici - numpy: 1. intro 2. esercizi 3. challenge
B - Analisi dati
Formati dei dati: 1. file a linee 2. file CSV 3. file JSON
Visualizzazione dati: intro (grafici in Matplotlib, SVG, UMap) challenge
Analitiche con libreria Pandas: 1. intro 2. operazioni avanzate challenge
Ricerca espressioni regolari in dati testuali, es. fermate autobus trentino
Integrazione dati: scaricamento di un dataset opendata (agritur del Trentino), georeferenziazione punti di interesse su OpenStreetMap
Estrazione Dati: recupero testo rilevante da pagina HTML con BeautifulSoup, es. eventi del Trentino
Information retrieval: Ricerca per rilevanza, per similarità
C - Applicazioni
Interfacce utente:
intro: Creazione di interfacce per analisi interattiva di dati con Jupyter Widgets, discussione alternative (QT, wxWidget)
Integrazione con database: Estrazione di dati da un database SQLite con Pandas, esecuzione di semplici ricerche SQL
Web development: Cenni sviluppo di un semplice server web
D - Progetti
D.1 Progetti svolti
Progetti con esercizi e soluzioni che richiedano qualche preprocessamento dati base, semplici analisi e display di grafici finale.
Vedi progetti svolti su SoftPython in inglese (ne contiene parecchi)
D.2 Realizza il tuo progetto
Come fare un progetto: ambienti virtuali, installazione librerie
D.3 Idee per progetti
Imparare Python può essere molto più interessante se si ha in mente un qualche esempio di analisi da replicare, anche se in misura semplificata.
Kaggle challenge: dataset per tutti i gusti
A prova di hacker: analisi vulnerabilità siti
Pantheon: personaggi culturalmente importanti
Gapminder: analisi socio economiche
OpenParlamento: che fanno i nostri politici?
Filosofi influenti: chi ha ispirato chi?
OEIS: Dataset sequenze di numeri interi, per matematici
RiParco dalla città: mappe e foto dei parchi della vostra città
Astro Tracker: tracciamo i corpi celesti!
Catena di distribuzione: assicuriamoci che i pacchi arrivino per Natale
E - Appendice
Autore
David Leoni (autore principale): Software engineer specializzato in data integration e web semantico, ha realizzato applicazioni in ambito open data e medico in Italia e all’estero. Dal 2019 è presidente dell’associazione CoderDolomiti, con cui insieme a Marco Caresia gestisce il movimento di volontariato CoderDojo Trento dove da anni insegnano programmazione creativa ai ragazzi. Email: david.leoni@unitn.it Sito: davidleoni.it
Contributors
Marco Caresia (assistente Edizione Autunno 2017 @DISI Università di Trento): E’ stato docente di informatica presso la Scuola Professionale Einaudi di Bolzano. E’ presidente della delegazione Trentino Alto Adige Südtirol dell’Associazione Italiana Formatori e vicepresidente dell’associazione CoderDolomiti.
Alessio Zamboni (assistente Edizione Marzo 2018 @Sociologia Università di Trento): Data scientist e software engineer con esperienza in NLP, GIS e gestione del knowledge. Ha collaborato in numerosi progetti di ricerca, collezionando esperienze in Europa e in Asia. Sostiene con convinzione che “la programmazione è una forma d’arte”
Luca Bosotti (assistente edizione Summerschool Data Science 2020 e seminari 2021 @Sociologia, Università di Trento): Developer, scientist e professore. Crede che il mondo stia diventando sempre più complicato e interessante. Perciò quello che dobbiamo fare è studiarlo e per farlo ci tocca sfruttare tutte le potenzialità ed il ragionamento possibile. Ha insegnato a giovani di tutte le età, dalle scuole elementari al livello universitario ed è sempre rimasto colpito da quanto siano differenti le persone che si approcciano alla programmazione.
Massimiliano Luca (docente Edizione Estate 2019 @Sociologia Università di Trento): Adora imparare nuove tecnologie ogni giorno. Particolarmente interessato in knowledge representation, data integration, data modeling e computational social science. Crede fermamente che sia vitale introdurre i giovani alla computer science, a tal fine è mentor al Coder Dojo DISI Master.
Ringraziamo inoltre gli studenti Ludovico Maria Valenti e Ioana Doleanu per i miglioramenti alla pagina numpy e Stefano Moro per le numerose segnalazioni.
Licenza
Questo sito è stato realizzato con stanziamenti dei dipartimenti di Ingegneria e Scienze dell’Informazione (DISI), Sociologia e Matematica dell’Università di Trento.
Salvo diverse indicazioni, il materiale in questo sito è originale e distribuito con licenza CC-BY 4.0 Internazionale https://creativecommons.org/licenses/by/4.0/deed.it. Si può quindi liberamente ridistribuire e modificare il contenuto, basta citare l’Università di Trento / DISI e gli autori
I dataset nelli sezioni Analisi dati e Progetti possono avere delle restrizioni, le fonti sono citate nelle pagine dove sono usate. Altre risorse di terze parti sono citate nel file third-party-licences.txt.
Note tecniche: tutte le pagine del sito sono fogli Jupyter facilmente modificabili - sono stati convertiti in pagine web tramite NBSphinx usando il template Jupman. I sorgenti del testo si trovano su Github all’indirizzo https://github.com/DavidLeoni/softpython-it
Se vi piace il contenuto del libro e volete contribuire esercizi / tutorial, vedere la pagina CONTRIBUTING
Ringraziamenti
Ringraziamo in particolare il professor Alberto Montresor del Dipartimento di Informatica dell’Università di Trento per aver consentito la realizzazione dei corsi dai quali nasce questo materiale, e il progetto Trentino Open Data (dati.trentino.it) per i numerosi dataset forniti.
Gli altri numerosi enti ed aziende che nel tempo hanno contribuito materiale ed idee sono citati in questa pagina