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_stamp

    • aggiunto 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

Vecchie news..

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

A - Fondamenti

  1. Installazione

  2. Introduzione veloce a Python (per chi ha già conoscenze di programmazione)

  3. Strumenti e script

A.1 Tipi di dato

  1. Basi: 1. variabili e integeri   2. booleani   3. numeri reali   4. challenge

  2. Stringhe:   1. intro   2. operatori   3. metodi base   4. metodi di ricerca   5. challenge

  3. Liste:   1. intro   2. operatori   3. methodi base   4. metodi di ricerca   5. challenge

  4. Tuple:   1. intro   2. challenge

  5. Sets:   1. intro   2. challenge

  6. Dizionari:   1. intro   2. operators   3. methodi   4. classi speciali   5. challenge

A.2 Controllo di flusso

  1. Condizionali if:   1.intro    2. challenge

  2. Cicli for:   1. intro   2. stringhe   3. liste   4. tuple   5. insiemi   6. dizionari

                       7. cicli annidati   8. challenge

  1. Cicli while   1. intro   2. challenge

  2. Sequenze e comprehension:   1. intro   2. challenges

A.3 Algoritmi di base

  1. Funzioni:   1. intro   2. gestione errori e testing

                       3. stringhe   4. liste   5. tuple 6. insiemi   7. dizionari   8. challenge

  2. Matrici - liste di liste:   1. intro   2. altri esercizi    3. challenge

  3. Strutture miste:   1. intro    2. challenge

  4. Matrici - numpy:   1. intro   2. esercizi    3. challenge

B - Analisi dati

  1. Formati dei dati:   1. file a linee   2. file CSV   3. file JSON

                                  4. challenge: personaggi storici del Trentino

  2. Visualizzazione dati: intro (grafici in Matplotlib, SVG, UMap)    challenge

  3. Analitiche con libreria Pandas: 1. intro    2. operazioni avanzate    challenge

  4. Ricerca espressioni regolari in dati testuali, es. fermate autobus trentino

  5. Integrazione dati: scaricamento di un dataset opendata (agritur del Trentino), georeferenziazione punti di interesse su OpenStreetMap

  6. Estrazione Dati: recupero testo rilevante da pagina HTML con BeautifulSoup, es. eventi del Trentino

  7. Information retrieval: Ricerca per rilevanza, per similarità

C - Applicazioni

  1. Interfacce utente:

    1. intro: Creazione di interfacce per analisi interattiva di dati con Jupyter Widgets, discussione alternative (QT, wxWidget)

    2. mappe interattive

    3. esempio webapp

  2. Integrazione con database: Estrazione di dati da un database SQLite con Pandas, esecuzione di semplici ricerche SQL

  3. 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.

D.2 Realizza il tuo progetto

  1. Come fare un progetto: ambienti virtuali, installazione librerie

  2. Scrivere testo in Markdown / Jupyter

  3. Template progetto

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.

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.

unitn-843724

cc-by-7172829

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.

dati-trentino-9327234823487

Gli altri numerosi enti ed aziende che nel tempo hanno contribuito materiale ed idee sono citati in questa pagina