Come leggere un file CSV usando Python

Dec 6, 2020

Lo leggi in 4 minuti

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.

Come leggere un file CSV usando Python

Il terzo post dedicato a Python, il linguaggio più usato nel controllo dei dispositivi IOT e nella elaborazione dei dati.



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, CittaDiFondazione
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’, ‘ CittaDiFondazione’: ‘ Milano’}
{’ Allenatore  ‘: ‘ Conte       ‘, ’ Anno’: ‘ 1908’, ‘Team ‘: ‘Inter’, ‘ CittaDiFondazione’: ‘ Milano’}
{’ Allenatore  ‘: ‘ Sarri       ‘, ’ Anno’: ‘ 1897’, ‘Team ‘: ‘Juve ‘, ’ CittaDiFondazione’: ‘ Torino’}
{’ Allenatore  ‘: ‘ Inzaghi     ‘, ’ Anno’: ‘ 1900’, ‘Team ‘: ‘Lazio’, ‘ CittaDiFondazione’: ‘ 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’, ‘ CittaDiFondazione’: ‘ Milano’}
{’ Allenatore  ‘: ‘ Conte       ‘, ’ Anno’: ‘ 1908’, ‘Team ‘: ‘Inter’, ‘ CittaDiFondazione’: ‘ Milano’}
{’ Allenatore  ‘: ‘ Sarri       ‘, ’ Anno’: ‘ 1897’, ‘Team ‘: ‘Juve ‘, ’ CittaDiFondazione’: ‘ Torino’}
{’ Allenatore  ‘: ‘ Inzaghi     ‘, ’ Anno’: ‘ 1900’, ‘Team ‘: ‘Lazio’, ‘ CittaDiFondazione’: ‘ 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.

Ti interessa questo articolo e vuoi scoprire a costo zero tutti i segreti della elettronica digitale?

link al corso free di elettronica digitale


Iscriviti ora alla nostra newsletter e dopo avere confermato la tua iscrizione troverai ogni 15 gg nella tua mail un argomento o un progetto pratico da seguire, con la lista dei componenti e il software necessario.

newsletter