Come gestire i file CSV in Python

Come gestire i file CSV in Python
Questo articolo coprirà un tutorial sulla gestione dei file "CSV" utilizzando Python. Il termine "CSV" sta per "valori separati da virgola" in cui ogni riga o linea contiene valori basati sul testo delimitati dalle virgole. In alcuni casi, viene anche utilizzato il "punto e virgola invece di" virgola "per separare i valori. Tuttavia, questo non fa molta differenza nelle regole del formato file e la logica per gestire entrambi i tipi di separatori rimane la stessa.

Il formato di file CSV viene più comunemente utilizzato per la manutenzione di database e fogli di calcolo. La prima riga in un file CSV è più comunemente utilizzata per definire i campi di colonna mentre qualsiasi altra riga rimanente è considerata righe. Questa struttura consente agli utenti di presentare dati tabulari utilizzando i file CSV. I file CSV possono essere modificati in qualsiasi editor di testo. Tuttavia, applicazioni come LibreOffice Calc forniscono strumenti di modifica avanzata, ordinamento e funzioni di filtro.

Leggere i dati dai file CSV utilizzando Python

Il modulo CSV in Python ti consente di leggere, scrivere e manipolare tutti i dati archiviati nei file CSV. Per leggere un file CSV, dovrai utilizzare il metodo "Reader" dal modulo "CSV" di Python che è incluso nella libreria standard di Python.

Considera di avere un file CSV contenente i seguenti dati:

Mango, banana, mela, arancione
50,70,30,90

La prima riga del file definisce ogni categoria di colonne, nome dei frutti in questo caso. La seconda riga memorizza i valori in ciascuna colonna (stock in mano). Tutti questi valori sono delimitati da una virgola. Se dovessi aprire questo file in un'applicazione di foglio di calcolo come LibreOffice Calc, sarebbe così:

Ora per leggere i valori di "frutti.File CSV "Usando il modulo" CSV "di Python, dovrai utilizzare il metodo" Reader "nel seguente formato:

Importa CSV
con aperto ("frutti.CSV ") come file:
data_reader = CSV.lettore (file)
per riga in data_reader:
Stampa (linea)

La prima riga nel campione sopra importa il modulo "CSV". Successivamente, l'istruzione "con aperta" viene utilizzata per aprire in modo sicuro un file archiviato sul disco rigido ("Frutti.CSV "in questo caso). Un nuovo oggetto "Data_Reader" viene creato chiamando il metodo "lettore" dal modulo "CSV". Questo metodo "lettore" prende un nome file come argomento obbligatorio, quindi il riferimento a "frutti.CSV ”è passato ad esso. Successivamente, viene eseguita un'istruzione Loop "per" per stampare ogni riga dai "frutti.File CSV ". Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output:

['50', '70', '30', '90']

Se si desidera assegnare i numeri di riga all'output, è possibile utilizzare la funzione "enumerate" che assegna un numero a ciascun elemento in un iterabile (a partire da 0 se non modificato).

Importa CSV
con aperto ("frutti.CSV ") come file:
data_reader = CSV.lettore (file)
Per indice, linea in enumerate (data_reader):
Stampa (indice, linea)

La variabile "indice" mantiene il conteggio per ciascun elemento. Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output:

0 ['Mango', 'Banana', 'Apple', 'Orange']
1 ['50', '70', '30', '90']

Poiché la prima riga in un file "CSV" in genere contiene intestazioni di colonne, è possibile utilizzare la funzione "enumerate" per estrarre queste intestazioni:

Importa CSV
con aperto ("frutti.CSV ") come file:
data_reader = CSV.lettore (file)
Per indice, linea in enumerate (data_reader):
if indice == 0:
Intestazioni = riga
Stampa (intestazioni)

Il blocco "if" nell'istruzione sopra controlla se l'indice è uguale a zero (prima riga in "frutti.File CSV "). Se sì, il valore della variabile "linea" viene assegnato a una nuova variabile "intestazioni". Dopo, eseguendo il campione di codice sopra, è necessario ottenere il seguente output:

['Mango', 'Banana', 'Apple', 'Orange']

Nota che è possibile utilizzare il tuo delimitatore quando chiami "CSV.Metodo lettore "utilizzando un argomento" delimitatore "opzionale nel seguente formato:

Importa CSV
con aperto ("frutti.CSV ") come file:
data_reader = CSV.lettore (file, delimiter = ";")
per riga in data_reader:
Stampa (linea)

Poiché in un file CSV, ogni colonna è associata a valori in una riga, potresti voler creare un oggetto Python "Dizionario" quando si legge i dati da un file "CSV". Per fare ciò, è necessario utilizzare il metodo "DicTreader", come mostrato nel codice seguente:

Importa CSV
con aperto ("frutti.CSV ") come file:
data_reader = CSV.Dicttreader (file)
per riga in data_reader:
Stampa (linea)

Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output:

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'

Quindi ora hai un oggetto del dizionario che associa singoli colonne ai loro valori corrispondenti nelle righe. Funziona bene se hai solo una riga. Supponiamo che i "frutti.Il file CSV ”ora include una riga aggiuntiva che specifica quanti giorni ci vorrà per lo stock di frutta per perire.

Mango, banana, mela, arancione
50,70,30,90
3,1,6,4

Quando si dispone di più righe, l'esecuzione dello stesso campione di codice sopra produrrà un output diverso.

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'
'Mango': '3', 'Banana': '1', 'Apple': '6', 'Orange': '4'

Questo potrebbe non essere l'ideale in quanto potresti voler mappare tutti i valori relativi a una colonna a una coppia di valore chiave in un dizionario Python. Prova invece questo campione di codice:

Importa CSV
con aperto ("frutti.CSV ") come file:
data_reader = CSV.Dicttreader (file)
data_dict =
per riga in data_reader:
Per chiave, valore in linea.elementi():
data_dict.setDefault (Key, [])
data_dict [chiave].append (valore)
Stampa (data_dict)

Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output:

'MANGO': ['50', '3'], 'Banana': ['70', '1'], 'Apple': [30 ',' 6 '],' Orange ': ['90 ',' 4 ']

Un ciclo "per" viene utilizzato su ciascun elemento dell'oggetto "dicttreader" per loop su coppie di valore chiave. Una nuova variabile del dizionario di Python "data_dict" è definita prima di. Memorizzerà le mappature dei dati finali. Sotto il secondo blocco ad anello "per", viene utilizzato il metodo "setDefault" di Python Dizionario. Questo metodo assegna un valore a una chiave del dizionario. Se la coppia di valore chiave non esiste, una nuova viene creata dagli argomenti specificati. Quindi in questo caso, un nuovo elenco vuoto verrà assegnato a una chiave se non esiste già. Infine, "valore" è aggiunto alla chiave corrispondente nell'oggetto "data_dict" finale.

Scrivere dati su un file CSV

Per scrivere i dati su un file "CSV", dovrai utilizzare il metodo "Writer" dal modulo "CSV". L'esempio seguente aggiungerà una nuova riga ai "frutti esistenti.File CSV ".

Importa CSV
con aperto ("frutti.csv "," a ") come file:
data_writer = CSV.Writer (file)
data_writer.Writerow ([3,1,6,4])

La prima affermazione apre il file in modalità "Append", indicato dall'argomento "A". Successivamente viene chiamato il metodo "writer" e il riferimento a "frutti.Il file CSV ”è passato ad esso come argomento. Il metodo "Writerow" scrive o aggiunge una nuova riga al file.

Se si desidera convertire il dizionario Python in una struttura di file "CSV" e salvare l'output in un file "CSV", prova questo codice:

Importa CSV
con aperto ("frutti.CSV "," W ") come file:
Headings = ["Mango", "Banana", "Apple", "Orange"]
data_writer = CSV.DictWriter (file, fieldnames = headings)
data_writer.WriteHeader ()
data_writer.Writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.Writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)

Dopo aver aperto un "frutto vuoto.File CSV "Usando un'istruzione" con aperta ", è definita una nuova variabile" intestazioni "che contiene intestazioni di colonne. Un nuovo oggetto "data_writer" viene creato chiamando il metodo "dictwriter" e passando il riferimento ai "frutti.File CSV "e un argomento" fieldnames ". Nella riga successiva, le intestazioni di colonne sono scritte nel file usando il metodo "WriteHeader". Le ultime due dichiarazioni aggiungono nuove righe alle voci corrispondenti create nel passaggio precedente.

Conclusione

I file CSV forniscono un modo pulito per scrivere dati in formato tabulare. Il modulo "CSV" integrato di Python semplifica la gestione dei dati disponibili nei file "CSV" e implementare ulteriori logiche su di esso.