Come leggere il file CSV in Python (Modulo, esempi di Panda)

Che cos'è un file CSV?

A file CSV è un tipo semplice di file di testo semplice che utilizza una struttura specifica per organizzare i dati tabulari. Il formato standard di un file CSV è definito dai dati di righe e colonne in cui un ritorno a capo termina ogni riga per iniziare la riga successiva e ogni colonna è separata da una virgola all'interno della riga.

CSV è un formato comune per lo scambio di dati poiché è compatto, semplice e generale. Molti servizi online consentono ai propri utenti di esportare dati tabulari dal sito Web in un file CSV. I file CSV si apriranno in Excel e quasi tutti i database dispongono di uno strumento per consentire l'importazione da file CSV.

File di esempio CSV

I dati sotto forma di tabelle sono anche chiamati CSV (valori separati da virgole) – letteralmente “valori separati da virgole”. Si tratta di un formato di testo destinato alla presentazione di dati tabellari. Ogni riga del file è una riga della tabella. I valori delle singole colonne sono separati da un simbolo separatore: una virgola (,), un punto e virgola (;) o un altro simbolo. CSV può essere facilmente letto ed elaborato da Python.

Considerare la seguente tabella

Dati della tabella

Linguaggio di programmazione Progettato da Apparso Estensione
Python Guido van Rossum 1991 .py
Java Giacomo Gosling 1995 .Giava
C++ Bjarne Stroustrup 1983 cpp

Puoi rappresentare questa tabella in CSV come di seguito.

Dati CSV

Linguaggio di programmazione, Progettato da, Apparso, Estensione

Python, Guido van Rossum, 1991, .py

Java, James Gosling, 1995, .java

C++, Bjarne Stroustrup,1983,.cpp

Come puoi vedere ogni riga è una nuova riga e ogni colonna è separata da una virgola. Questo è un esempio di come appare un file CSV.

Scarica i dati CSV

Python Modulo CSV

Python fornisce un modulo CSV per gestire i file CSV. Per leggere/scrivere dati, è necessario scorrere le righe del CSV. È necessario utilizzare il metodo di suddivisione per ottenere i dati dalle colonne specificate.

Funzioni del modulo CSV

Nella documentazione del modulo CSV puoi trovare le seguenti funzioni:

  • csv.field_size_limit – restituisce la dimensione massima del campo
  • csv.get_dialect – ottiene il dialetto associato al nome
  • csv.list_dialects – mostra tutti i dialetti registrati
  • csv.reader: legge i dati da un file CSV
  • csv.register_dialect – associa il dialetto al nome
  • csv.writer – scrive i dati in un file CSV
  • csv.unregister_dialect – elimina il dialetto associato al nome dal registro dei dialetti
  • csv.QUOTE_ALL – Cita tutto, indipendentemente dal tipo.
  • csv.QUOTE_MINIMAL – Campi delle virgolette con caratteri speciali
  • csv.QUOTE_NONNUMERIC – Racchiude tra virgolette tutti i campi che non contengono valori numerici
  • csv.QUOTE_NONE – Non citare nulla nell'output

In questo tutorial ci concentreremo solo sulle funzioni di lettura e scrittura che consentono di modificare, modificare e manipolare i dati in un file CSV.

Come leggere un file CSV in Python

Di seguito sono riportati i passaggi per leggere il file CSV Python.

Passo 1) Per leggere i dati dai file CSV, è necessario utilizzare la funzione lettore per generare un oggetto lettore.

La funzione di lettura è sviluppata per prendere ogni riga del file e creare un elenco di tutte le colonne. Quindi, devi scegliere la colonna per la quale desideri i dati variabili.

Sembra molto più complicato di quanto non sia. Diamo un'occhiata a questo Python codice per leggere il file CSV e scopriremo che lavorare con il file CSV non è così difficile.

#import necessary modules
import csv
with open('X:\data.csv','rt')as f:
  data = csv.reader(f)
  for row in data:
        print(row)

Passo 2) Quando esegui il programma sopra, l'output sarà:

['Programming language; Designed by; Appeared; Extension']
['Python; Guido van Rossum; 1991; .py']
['Java; James Gosling; 1995; .java']
['C++; Bjarne Stroustrup;1983;.cpp']

Come leggere un file CSV in un dizionario in Python

Puoi anche utilizzare DictReader per leggere file CSV. I risultati vengono interpretati come un dizionario in cui la riga di intestazione è la chiave e le altre righe sono valori.

Considera il seguente codice

#import necessary modules
import csv

reader = csv.DictReader(open("file2.csv"))
for raw in reader:
    print(raw)

Il risultato di questo codice è:

OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')])
OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')])
OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])

Leggere un file CSV in un dizionario

E in questo modo leggere i dati dal file CSV è molto più semplice rispetto al metodo precedente. Tuttavia, questo non è il modo migliore per leggere i dati.

Come scrivere un file CSV in Python

Ecco come scrivere un file CSV in Python:

Quando hai una serie di dati che desideri archiviare in un file CSV devi utilizzare la funzione writer(). Per ripetere i dati sulle righe (linee), devi utilizzare la funzione writerow().

Considerate il seguente esempio. Scriviamo i dati in un file "writeData.csv" dove il delimitatore è un apostrofo.

#import necessary modules
import csv

with open('X:\writeData.csv', mode='w') as file:
    writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    #way to write to csv file
    writer.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])
    writer.writerow(['Python', 'Guido van Rossum', '1991', '.py'])
    writer.writerow(['Java', 'James Gosling', '1995', '.java'])
    writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])

Il risultato nel file CSV è:

Programming language, Designed by, Appeared, Extension 
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C++, Bjarne Stroustrup,1983,.cpp

scrivere il file CSV Python

Leggi il file CSV utilizzando Panda

Pandas è una libreria opensource che ti consente di importare CSV Python ed eseguire la manipolazione dei dati. I panda forniscono un modo semplice per creare, manipolare ed eliminare i dati.

È necessario installare la libreria Pandas con il comando pip install pandas . In Windows, eseguirai questo comando nel prompt dei comandi mentre sei in Linux nel Terminale.

Leggere il CSV in un DataFrame panda è molto semplice e veloce:

#import necessary modules
import pandas
result = pandas.read_csv('X:\data.csv')
print(result)

Risultato del leggi CSV Panda esempio:

Programming language, Designed by, Appeared, Extension 
0    Python, Guido van Rossum, 1991, .py
1    Java, James Gosling, 1995, .java
2    C++, Bjarne Stroustrup,1983,.cpp

Biblioteca molto utile. In sole tre righe di codice ottieni lo stesso risultato di prima. I panda sanno che la prima riga del CSV conteneva nomi di colonne e li utilizzerà automaticamente.

Scrivi file CSV utilizzando Pandas

Scrivere su file CSV con Pandas è facile come leggere. Qui puoi convincerti. Per prima cosa devi creare DataFrame basato su quanto segue Python scrivere nel codice CSV.

from pandas import DataFrame
C = {'Programming language': ['Python','Java', 'C++'],
        'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],
        'Appeared': ['1991', '1995', '1985'],
        'Extension': ['.py', '.java', '.cpp'],
    }
df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension'])
export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be stored
print (df)

Ecco l'output

Programming language, Designed by, Appeared, Extension
0    Python, Guido van Rossum, 1991, .py
1    Java, James Gosling, 1995, .java
2    C++, Bjarne Stroustrup,1983,.cpp

E il file CSV viene creato nella posizione specificata.

Scrivi file CSV utilizzando Pandas

Conclusione

Quindi, ora sai come usare il metodo 'csv' e anche come leggere e scrivere dati in formato CSV. I file CSV sono ampiamente utilizzati nelle applicazioni software perché sono facili da leggere e gestire e le loro piccole dimensioni li rendono relativamente veloci per l'elaborazione e la trasmissione.

Il modulo csv fornisce varie funzioni e classi che ti consentono di leggere e scrivere facilmente. Puoi guardare il funzionario Python documentazione e trova altri suggerimenti e moduli interessanti. CSV è il modo migliore per salvare, visualizzare e inviare dati. In realtà, non è così difficile da imparare come sembra all'inizio. Ma con un po' di pratica, lo padroneggerai.

Pandas è un'ottima alternativa per leggere file CSV.

Inoltre, esistono altri modi per analizzare file di testo con librerie come ANTLR, PLY e PlyPlus. Possono tutti gestire l'analisi pesante e, se la semplice manipolazione delle stringhe non funziona, ci sono espressioni regolari che puoi usare.