Skip to content

investigare gli open data del ministero dell'istruzione con python, jupyter notebook e pandas

License

Notifications You must be signed in to change notification settings

napo/opendatamiur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Tutorial per imparare python/pandas investigando i dati del MIUR

Il tutorial è stato sviluppato all'interno dell'evento "Laboratorio sulle competenze Open Data all’Opificio Golinelli"

Setup

il tutorial si sviluppa utilizando jupyter notebook per python.

Per iniziare si consiglia di installare l'ambiente anaconda ed eseguire così jupyter notebook. Anacoda è disponibile per i sistemi operativi Linux, Windows e Apple.

HOWTO

Il tutorial viene veicolato aprendo il file MIUR OpenData e da lì seguire i comandi presentati passo-passo.
I singoli comandi si trovano nelle celle grigie e sono introdotti dal testo del tutorial.
Lo studente può aprire il proprio jupyter notebook sul proprio computer e copiare e incollare i comandi presentati per testarli e capirli.

Il tutorial guida lo studente a conoscere come interrogare le varie tabelle messe a disposizione dal MIUR attraverso pandas (una libreria python molto potente per l'analisi dati).
L'analisi dei dati aiuta anche a capire come è strutturata la scuola in Italia.

Lo studente sarà così in grado di interrogare i dati, effettuare qualche calcolo e manipolazione e creare grafici

Il tutorial è strutturao in modo che poi, il docente, possa delegare gli studenti a lavorare in gruppo in modo da ripetere quanto acquisito.

Oltre a pandas vengono introdotti, in maniera molto semplice, le librerie geocoder e folium con cui poter geocodificare dati e creare mappe.

Riassunto python

ecco un piccolo riassunto di cosa viene veicolato dal tutorial riguardo python pandas (ed altro)

importare moduli

vanno caricati (import) e in alcuni casi installati

questi i moduli usati

     import requests
     import io
     import pandas as panda
     import geocode
     import folium

metodi per interrogare un DataFrame (tabella) pandas

(nell'esempio nometabella)

conoscere le prime 3 righe (ma il valore possiamo cambiarlo

   nometabella.head(3)

la forma della tabella (numero di righe e numero di colonne)

   nometabella.shape
e da lì il numero di righe
   nometabella.shape[0]
e il numero di colonne
   nometabella.shape[1]
i nomi delle colonne
   nometabella.columns
e contare quante sono
   nometabella.columns.size
avere una descrizione su come è fatta una colonna di un dataframe partendo dal suo nome

(es. nomecolonna))

   nometabella.nomecolonna.describe()

unire più DataFrame

   panda.concat([tabella1, tabella2])

confrontare colonne fra tabelle diverse

(es. tabella1 e tabella2)

   tabella1.columns.equals(tabella2.columns)

vedere cosa cambia fra le colonne delle due tabelle

   tabella1.columns.difference(tabella2.columns)

individuare i valori univoci all'interno di una colonna

   nometabella.nomecolonna.unique()

contare il numero di volte in cui compare ogni valore della colonna

   nometabella.groupby(nometabella.nomecolonna).size()

ordinare una tabella per i valori di una colonna

   nometabella.sort_values("nomecolonna")

filtrare una tabella per un valore di una colonna

   nometabella[nometabella.nomeoclonna == 'valore da cercare']

trasformare tutti i valori di una tabella con un altro

Esempio: trasformare tutti i "SI" in "1"

    nometabella.eq('SI').mul(1)

ribaltare righe con colonne (pivot)

scegliendo quale colonna usare come indice

   nometabella.pivot_table(index='colonnacomeindice')
e se necessario assegnare il valore zero dove i valori mancano
   nometabella.pivot_table(index='colonnasceltacomeindice').fillna(0)
ed anche più complesse dove sommare i valori presenti in una colonna
   nometabella.pivot_table(index='colonnasceltacomeindice', columns='colonnescelte', values='colonnaconivalori',
                aggfunc='sum', fill_value=0)

rappresentare i valori di un dataframe in grafico a barre verticali

e con dimensioni 10x10 in DPI punti per pollice e assegnare un titolo

   nometabella.plot.bar(title='titolo',figsize[10,10])

e a barre orizzontali

   nometabella.plot.barh(title='titolo',figsize[10,10])

e a barre orizzontali a segmenti

    nometabella.plot.bar(stacked=True,figsize=(10,10))

e a barre verticali a segmenti scegliendo i colori

colormap è una variabile che può essere in ogni grafico.

l'elenco dei colori si trova qui https://matplotlib.org/examples/color/colormaps_reference.html

    nometabella.plot.hbar(stacked=True,figsize=[10,10],colormap='Pastel2')

usare un geocoder

con komoot

geocoder.komoot("Via Paolo Nanni Costa, 14, Bologna, Italia")

con google

geocoder.google("Opificio Golinelli")

ed estrarre latitudine e longitudine

   opificio_gollinelli = geocoder.komoot("Opificio Gollinelli")
   latitudine = opificio_gollinelli.latlng[0]
   longitudine = opificio_gollinelli.latlng[1]

rappresentare un punto su una mappa

es. latitudine = 44.5082397 longitudine = 11.3066287

    mappa = folium.Map(location=[44.5082397, 11.3066287])
    folium.Marker([44.5082397, 11.3066287]).add_to(mappa)

About

investigare gli open data del ministero dell'istruzione con python, jupyter notebook e pandas

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published