Pitone

Come gestire i file CSV in Python

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

Il formato file CSV è più comunemente usato per la manutenzione di database e fogli di calcolo. La prima riga in un file CSV è più comunemente usata per definire i campi di colonna mentre tutte le altre righe sono considerate righe row. Questa struttura consente agli utenti di presentare dati tabulari utilizzando file CSV. I file CSV possono essere modificati in qualsiasi editor di testo. Tuttavia, applicazioni come LibreOffice Calc forniscono strumenti di modifica avanzati, funzioni di ordinamento e filtro.

Lettura di dati da file CSV utilizzando Python

Il modulo CSV in Python ti consente di leggere, scrivere e manipolare qualsiasi dato memorizzato 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, arancia
50,70,30,90

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

Ora per leggere i valori da "frutti.csv” utilizzando il modulo “csv” di Python, sarà necessario utilizzare il metodo “reader” nel seguente formato:

importa csv
con open("frutti.csv") come file:
data_reader = csv.lettore (file)
per la riga in data_reader:
stampa (linea)

La prima riga nell'esempio sopra importa il modulo "csv". Successivamente, l'istruzione "with open" viene utilizzata per aprire in sicurezza un file archiviato sul disco rigido ("fruits.csv” in questo caso). Viene creato un nuovo oggetto “data_reader” chiamando il metodo “reader” dal modulo “csv”. Questo metodo "reader" accetta un nome file come argomento obbligatorio, quindi il riferimento a "fruits.csv" gli viene passato. Successivamente, viene eseguita un'istruzione di ciclo "for" per stampare ogni riga da "fruits.csv" file. Dopo aver eseguito l'esempio di codice menzionato sopra, dovresti ottenere il seguente output:

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

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

importa csv
con open("frutti.csv") come file:
data_reader = csv.lettore (file)
per index, riga in enumerate(data_reader):
stampa (indice, riga)

La variabile "indice" mantiene il conteggio per ogni elemento. Dopo aver eseguito l'esempio di codice menzionato sopra, dovresti ottenere il seguente output:

0 ['Mango', 'Banana', 'Mela', 'Arancia']
1 ['50', '70', '30', '90']

Poiché la prima riga in un file "csv" contiene in genere intestazioni di colonna, puoi utilizzare la funzione "enumera" per estrarre queste intestazioni:

importa csv
con open("frutti.csv") come file:
data_reader = csv.lettore (file)
per index, riga in enumerate(data_reader):
se indice == 0:
titoli = riga
stampa (intestazioni)

Il blocco "if" nell'istruzione sopra controlla se l'indice è uguale a zero (prima riga in "fruits.csv”). Se sì, il valore della variabile “line” viene assegnato a una nuova variabile “headings”. Dopo, eseguendo l'esempio di codice sopra, dovresti ottenere il seguente output:

['Mango', 'Banana', 'Mela', 'Arancia']

Nota che puoi usare il tuo delimitatore quando chiami "csv.reader" utilizzando un argomento "delimitatore" opzionale nel seguente formato:

importa csv
con open("frutti.csv") come file:
data_reader = csv.lettore(file, delimitatore=";")
per la riga in data_reader:
stampa (linea)

Poiché in un file csv, ogni colonna è associata a valori in una riga, potresti voler creare un oggetto "dizionario" Python durante la lettura dei dati da un file "csv". Per fare ciò, è necessario utilizzare il metodo "DictReader", come mostrato nel codice seguente:

importa csv
con open("frutti.csv") come file:
data_reader = csv.DictReader (file)
per la riga in data_reader:
stampa (linea)

Dopo aver eseguito l'esempio di codice menzionato sopra, dovresti ottenere il seguente output:

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

Quindi ora hai un oggetto dizionario che associa le singole colonne ai loro valori corrispondenti nelle righe. Funziona bene se hai solo una riga. Supponiamo che i “frutti.csv" ora include una riga aggiuntiva che specifica quanti giorni impiegheranno lo stock di frutta a perire.

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

Quando hai più righe, l'esecuzione dello stesso esempio di codice sopra produrrà un output diverso.

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

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

importa csv
con open("frutti.csv") come file:
data_reader = csv.DictReader (file)
data_dict =
per la riga in data_reader:
per chiave, valore in linea.elementi():
data_dict.setdefault(chiave, [])
data_dict[chiave].aggiungi (valore)
stampa (data_dict)

Dopo aver eseguito l'esempio di codice menzionato sopra, dovresti ottenere il seguente output:

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

Un ciclo "for" viene utilizzato su ciascun elemento dell'oggetto "DictReader" per eseguire il ciclo su coppie chiave-valore. Prima è stata definita una nuova variabile del dizionario Python "data_dict". Memorizzerà le mappature dei dati finali. Sotto il secondo blocco del ciclo "for", viene utilizzato il metodo "setdefault" del dizionario Python. Questo metodo assegna un valore a una chiave del dizionario. Se la coppia chiave-valore non esiste, ne viene creata una nuova dagli argomenti specificati. Quindi, in questo caso, verrà assegnato un nuovo elenco vuoto a una chiave se non esiste già. Infine, "value" viene aggiunto alla sua chiave corrispondente nell'oggetto "data_dict" finale.

Scrittura di dati su un file CSV

Per scrivere dati in un file “csv” sarà necessario utilizzare il metodo “writer” dal modulo “csv”. L'esempio seguente aggiungerà una nuova riga ai "frutti" esistenti.csv" file.

importa csv
con open("frutti.csv", "a") come file:
data_writer = csv.scrittore (file)
data_writer.writerow([3,1,6,4])

La prima istruzione apre il file in modalità "append", indicata dall'argomento "a". Successivamente viene chiamato il metodo "scrittore" e il riferimento a "frutti.csv" gli viene passato come argomento. Il metodo "writerow" scrive o aggiunge una nuova riga al file.

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

importa csv
con open("frutti.csv", "w") come file:
intestazioni = ["Mango", "Banana", "Mela", "Arancia"]
data_writer = csv.DictWriter(file, fieldnames=intestazioni)
data_writer.intestazione di scrittura()
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 "frutta" vuoto.csv" utilizzando un'istruzione "with open", viene definita una nuova variabile "headings" che contiene le intestazioni di colonna. Viene creato un nuovo oggetto “data_writer” chiamando il metodo “DictWriter” e passandogli il riferimento al metodo “fruits.csv" e un argomento "fieldnames". Nella riga successiva, le intestazioni delle colonne vengono scritte nel file utilizzando il metodo "writeheader". Le ultime due istruzioni aggiungono nuove righe alle corrispondenti intestazioni create nel passaggio precedente.

Conclusione

I file CSV forniscono un modo semplice per scrivere dati in formato tabulare. Il modulo "csv" integrato di Python semplifica la gestione dei dati disponibili nei file "csv" e l'implementazione di ulteriore logica su di essi.

Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...
Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...
Emula i clic del mouse passando il mouse utilizzando il mouse senza clic in Windows 10
L'uso di un mouse o di una tastiera nella postura sbagliata di un uso eccessivo può causare molti problemi di salute, tra cui tensione, sindrome del t...