A caccia di date nel Piano Triennale per l’informatica nella Pubblica Amministrazione

Un'esercitazione con bash e pandas

Andrea Borruso
4 min readAug 11, 2017

Nota Bene: il contenuto di questo post ha stimolato una modifica sul sito del Piano Triennale e da oggi — 31 agosto 2017 — i dati sulle date sono esposti in un file json (vedi qui).

Il Piano Triennale per l’informatica nella Pubblica amministrazione è “il documento di indirizzo strategico ed economico attraverso il quale viene declinato il Modello st strategico di evoluzione del sistema informativo della Pubblica amministrazione”.

È diviso in azioni (al momento 115), classificate per Tempi, Attori, Descrizione e Risultati (sotto un esempio).

Al momento sono pubblicate qui in una modalità che non rende semplice una lettura “attiva” e filtrare ad esempio soltanto le azioni in scadenza nei prossimi due mesi, in cui l'attore è il "Dipartimento della Funzione Pubblica".
Inoltre i tempi sono indicati come stringhe di testo e non come date, perché è una pagina pensata per la lettura a video e non per l'elaborazione da parte di un calcolatore.

Volevo poter seguire le azioni in modo più comodo e allora ho scritto una procedura che fa lo scraping della pagina delle azioni e la trasforma in un file di testo strutturato, più leggibile da un PC.
È un breve tutorial/caso d’uso di tecniche di base di scraping e di pandas (una straordinaria libreria Python per l’analisi e la manipolazione di dati).

L’output è un file CSV.

Lo script

Ho usato Jupyter Notebook per scriverlo/eseguirlo, perché è comodo, didattico e consente di mescolare linguaggi di scripting. In questo caso bash e Python.

Requisiti

Le date del piano definite in “Tempi”

Nella pagina del piano le date sono attualmente presenti in due contenitori. Nella proprietà Tempi con diversi significati/modalità:

  • entro dicembre 2018
  • da maggio 2017
  • in corso
  • da maggio 2017 a dicembre 2018

E nella proprietà Risultati (vedi sotto).

Dalla colonna Tempi ho ricavato 4 colonne:

  • entro, per le occorrenze in cui è stata definita un data di fine dell'azione;
  • da, per le occorrenze in cui è stata definita un data di inizio dell'azione;
  • a, per le occorrenze in cui è stata definito un intervallo in cui è presente una fine dei lavori sull'azione;
  • inCorso, per le occorrenze "in corso".

Nelle date presenti nella pagina sono inseriti mese ed anno, non il giorno. Ho scelto di inserire il primo giorno del mese per la colonna da, e l'ultimo per le colonne entro e a (sarà pandas a inserire “30” per aprile e “31” per luglio).

“data di rilascio”, come indicata in “Risultati”

Nella proprietà Risultati sono spesso indicate una o più date di rilascio, nella forma (data di rilascio: ...). Ad esempio per una delle azioni:

Circolare AgID per la qualificazione di un Polo strategico nazionale della PA (data di rilascio: settembre 2017) Risultanze assessment AgID su candidati a Polo strategico nazionale (maggio 2018) Elenco Ufficiale dei Poli strategici nazionali (data di rilascio: giugno 2018) Schema di convenzione AgID-Poli strategici nazionali (data di rilascio: luglio 2018) Stipula convenzioni (entro dicembre 2018) Linee guida per lo sviluppo e la manutenzione di applicazioni per il cloud della PA (data di rilascio: dicembre 2017) Linee guida per la migrazione di applicazioni Legacy verso l’ambiente di cloud della PA (data di rilascio: giugno 2018)

Sono state estratte tutte le stringhe associate a “(data di rilascio: …)”, ma non sono state convertite in date.

Numero dell’azione

Ogni azione è associata a un numero. È stata creata una colonna per raccogliere questa informazione.

Notebook e file di output

A seguire il notebook e qui il file CSV di output.

Andare di conto

Tra le cose che vien voglia subito di fare a partire da una tabella, c’è quella di “andare di conto”. Ad esempio il numero di azioni per ogni attore.

O il numero di azioni in una griglia Anni/Mesi, che evidenzia come due periodi ricchi di azioni portate a termine saranno il prossimo settembre (2017) e dicembre (2017).

Nella griglia solo le azioni elencate nella colonna "entro"

Conclusioni

Voglio sottolineare come con questo post io non voglia “parlare a nuora perché suocera intenda”.
Per me è un’esercitazione condivisa e l’output lo userò per seguire meglio il piano (mi ci farò un feed RSS per essere comodamente avvisato).

Pur non di meno sarebbe utile trovare nel sito del piano un file strutturato “ufficiale” per le azioni (simile a quello che viene già usato per popolare il sito relativo), da pubblicare anche nel portale nazionale dei dati aperti.

--

--

Andrea Borruso

#data #maps #GIS #baci #condivisione. Orgoglioso di essere presidente di @ondatait