Usiamo Python per importare i dati contenuti in un file con la estensione .csv per poi analizzarli con le potenti funzioni statistiche peculiari di questo linguaggio.
La prima regola per elaborare dati è importarli!
Seppure sia banale dirlo, per avere elaborazioni “serie” sui dati dei vostri dispositivi IOT o del vostro ecommerce bisogna quotidianamente importare e conservare i dati. Non basta fare grafici in real time ma serve il confronto con i periodi precedenti. Inoltre dovrai spesso importare file dati prepararati da terzi o magari disponibili gratuitamente su Internet. Per rendere automatico tutto questo puoi usare la nostra piattaforma REST Silicon App che conserva i dati su un database Mysql, ma per il momento vogliamo sciogliere un nodo fondamentale: la lettura dei file dati csv con Python.
Cosa sono i file csv
L’acronimo viene direttamente dall’inglese “Comma Separated Values” e cioè valori separati da una virgola. Esistono molti formati per memorizzare i dati e tra gli altri avrai talvolta a che fare con file dati “Tab separated values”. Il formato TAB è sempre meno diffuso a favore del csv ma mantiene una certa rilevanza quando usi Ms Excel. In prospettiva sembra che il mondo della Informatica si stia orientando verso il formato JSON che proviene dall’ universo Javascript, ma di JSON parleremo in una altra occasione. Per provare i nostri programmi useremo questo breve file di esempio scritto solo a scopo dimostrativo:
Team , Allenatore , Anno, Citta Milan, Pioli , 1899, Milano Inter, Conte , 1908, Milano Juve , Sarri , 1897, Torino Lazio, Inzaghi , 1900, Roma
Nel file che vi consiglio di salvare come “1.csv” usando un qualsiasi editor, troviamo tutti gli elementi di file dati più lunghi: una riga di testata che descrive il contenuto delle colonne, una serie di valori numerici o di testo che popolano le righe sottostanti, l’uso obbligatorio della virgola per separare i dati tra di loro.
Come leggere l’anteprima di un file csv con Python
Se volete sapere velocemente cosa potrebbe importare Python e capire cosa contiene il file cvs provate il programma sottostante, che “stampa” la testata del file e alcune righe di dati, non tutte.
import csv with open('1.csv','rt') as f: data = csv.reader(f) line_count = 0 for row in data: if line_count == 0: print("Nomi delle Colonne:") print(row) print('-' * 80) print('Dati:') line_count += 1 else: print(row)
Nomi delle Colonne:
[‘Team ‘, ‘ Allenatore ‘, ‘ Anno’, ‘ CittaDiFondazione’]
————————————————————
Dati: ['Milan', ' Pioli ', ' 1899', ' Milano'] ['Inter', ' Conte ', ' 1908', ' Milano'] ['Juve ', ' Sarri ', ' 1897', ' Torino'] ['Lazio', ' Inzaghi ', ' 1900', ' Roma']
Copiare il contenuto del file csv in un dizionario Python
I dati grezzi prelevati dai file non sono utilizzabili direttamente nei nostri programmi Python: può essere vantaggioso leggere i dati e memorizzarli in una struttura dati standard invece che in una riga di testo. Possiamo convertire i dati in elenchi o dizionari o in una combinazione di entrambi utilizzando le funzioni csv.reader e csv.dictreader oppore manualmente.
import csv filename ="1.csv" with open(filename, 'r') as dati: for linea in csv.DictReader(dati): print(linea)
e il risultato finale automaticamente formattato diventa:
{’ Allenatore ‘: ‘ Pioli ‘, ’ Anno’: ‘ 1899’, ‘Team ‘: ‘Milan’, ‘Città: ‘ Milano’} {’ Allenatore ‘: ‘ Conte ‘, ’ Anno’: ‘ 1908’, ‘Team ‘: ‘Inter’, ‘Città’: ‘ Milano’} {’ Allenatore ‘: ‘ Sarri ‘, ’ Anno’: ‘ 1897’, ‘Team ‘: ‘Juve ‘, ‘Città’: ‘ Torino’} {’ Allenatore ‘: ‘ Inzaghi ‘, ’ Anno’: ‘ 1900’, ‘Team ‘: ‘Lazio’, ‘Città’: ‘ Roma’}
Come copiare il contenuto del file csv in una lista Python
Copia e incolla il programma sottostante nell’IDE Python che usi di solito:
import csv filename = "1.csv" with open(filename,'r') as dati: for linea in csv.reader(dati): print(linea)
con il solito output:
{’ Allenatore ‘: ‘ Pioli ‘, ’ Anno’: ‘ 1899’, ‘Team ‘: ‘Milan’, ‘ Città’: ‘ Milano’} {’ Allenatore ‘: ‘ Conte ‘, ’ Anno’: ‘ 1908’, ‘Team ‘: ‘Inter’, ‘ Città’: ‘ Milano’} {’ Allenatore ‘: ‘ Sarri ‘, ’ Anno’: ‘ 1897’, ‘Team ‘: ‘Juve ‘, ’ Città’: ‘ Torino’} {’ Allenatore ‘: ‘ Inzaghi ‘, ’ Anno’: ‘ 1900’, ‘Team ‘: ‘Lazio’, ‘ Città’: ‘ Roma’}
Liste e Dizionari
Come vedi i 2 programmi si differenziano per una sola istruzione, e sarà tua responsabilità decidere quale struttura dati utilizzare, tieni a mente che le list sono molto flessibili mentre i dict di Python sono forse più adatti a funzionare come un rapido “database” in RAM.