Piton

Cum să gestionați fișierele CSV în Python

Cum să gestionați fișierele CSV în Python
Acest articol va acoperi un tutorial despre gestionarea fișierelor „csv” folosind Python. Termenul „csv” înseamnă „valori separate prin virgulă” în care fiecare rând sau linie conține valori bazate pe text delimitate prin virgule. În unele cazuri, „punct și virgulă” este de asemenea utilizat în loc de „virgulă” pentru a separa valorile. Cu toate acestea, acest lucru nu face mare diferență în ceea ce privește regulile de formatare a fișierelor, iar logica pentru gestionarea ambelor tipuri de separatoare rămâne aceeași.

Formatul de fișier CSV este cel mai frecvent utilizat pentru întreținerea bazelor de date și a foilor de calcul. Prima linie dintr-un fișier CSV este folosită cel mai frecvent pentru a defini câmpurile coloanei, în timp ce orice alte linii rămase sunt considerate rânduri. Această structură permite utilizatorilor să prezinte date tabulare utilizând fișiere CSV. Fișierele CSV pot fi editate în orice editor de text. Cu toate acestea, aplicații precum LibreOffice Calc oferă instrumente avansate de editare, sortare și funcții de filtrare.

Citirea datelor din fișiere CSV folosind Python

Modulul CSV din Python vă permite să citiți, să scrieți și să manipulați orice date stocate în fișiere CSV. Pentru a citi un fișier CSV, va trebui să utilizați metoda „reader” din modulul „csv” al Python care este inclus în biblioteca standard a Python.

Luați în considerare faptul că aveți un fișier CSV care conține următoarele date:

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

Primul rând al fișierului definește fiecare categorie de coloane, numele fructelor în acest caz. A doua linie stochează valorile sub fiecare coloană (stoc în mână). Toate aceste valori sunt delimitate de o virgulă. Dacă ar fi să deschideți acest fișier într-o aplicație de foaie de calcul precum LibreOffice Calc, ar arăta astfel:

Acum să citim valorile din „fructe.csv ”folosind modulul„ csv ”al Python, va trebui să utilizați metoda„ reader ”în următorul format:

import csv
cu deschis („fructe.csv ") ca fișier:
data_reader = csv.cititor (fișier)
pentru linie în data_reader:
print (linie)

Prima linie din eșantionul de mai sus importă modulul „csv”. Apoi, declarația „cu deschis” este utilizată pentru a deschide în siguranță un fișier stocat pe hard disk („fructe.CSV ”în acest caz). Un nou obiect „data_reader” este creat apelând metoda „reader” din modulul „csv”. Această metodă „cititor” ia un nume de fișier ca argument obligatoriu, deci referința la „fructe.csv ”i se transmite. Apoi, se execută o instrucțiune buclă „pentru” pentru a imprima fiecare linie din „fructe”.csv ”. După ce rulați exemplul de cod menționat mai sus, ar trebui să obțineți următoarea ieșire:

[„50”, „70”, „30”, „90”]

Dacă doriți să atribuiți numere de linie la ieșire, puteți utiliza funcția „enumerare” care atribuie un număr fiecărui element dintr-un iterabil (începând de la 0 dacă nu este modificat).

import csv
cu deschis („fructe.csv ") ca fișier:
data_reader = csv.cititor (fișier)
pentru index, linie în enumerare (data_reader):
print (index, linie)

Variabila „index” păstrează numărul pentru fiecare element. După ce rulați exemplul de cod menționat mai sus, ar trebui să obțineți următoarea ieșire:

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

Deoarece prima linie dintr-un fișier „csv” conține de obicei titluri de coloană, puteți utiliza funcția „enumerare” pentru a extrage aceste titluri:

import csv
cu deschis („fructe.csv ") ca fișier:
data_reader = csv.cititor (fișier)
pentru index, linie în enumerare (data_reader):
dacă index == 0:
titluri = linie
print (titluri)

Blocul „dacă” din declarația de mai sus verifică dacă indicele este egal cu zero (prima linie din „fructe.csv ”). Dacă da, atunci valoarea variabilei „linie” este alocată unei noi variabile „titluri”. După ce rulați exemplul de cod de mai sus, trebuie să obțineți următoarea ieșire:

[„Mango”, „Banana”, „Apple”, „Orange”]

Rețineți că puteți utiliza propriul delimitator atunci când apelați „csv.cititor ”utilizând un argument opțional„ delimitator ”în următorul format:

import csv
cu deschis („fructe.csv ") ca fișier:
data_reader = csv.cititor (fișier, delimitator = ";")
pentru linie în data_reader:
print (linie)

Deoarece într-un fișier CSV, fiecare coloană este asociată cu valorile dintr-un rând, poate doriți să creați un obiect „dicționar” Python atunci când citiți date dintr-un fișier „CSV”. Pentru a face acest lucru, trebuie să utilizați metoda „DictReader”, așa cum se arată în codul de mai jos:

import csv
cu deschis („fructe.csv ") ca fișier:
data_reader = csv.DictReader (fișier)
pentru linie în data_reader:
print (linie)

După ce rulați exemplul de cod menționat mai sus, ar trebui să obțineți următoarea ieșire:

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

Deci, acum aveți un obiect de dicționar care asociază coloane individuale cu valorile corespunzătoare din rânduri. Acest lucru funcționează bine dacă aveți un singur rând. Să presupunem că „fructele.fișierul CSV ”include acum un rând suplimentar care specifică câte zile va dura până când stocul de fructe va pieri.

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

Când aveți mai multe rânduri, rularea aceluiași eșantion de cod de mai sus va produce rezultate diferite.

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

Este posibil să nu fie ideal, deoarece este posibil să doriți să mapați toate valorile aferente unei coloane la o pereche cheie-valoare într-un dicționar Python. Încercați în schimb acest exemplu de cod:

import csv
cu deschis („fructe.csv ") ca fișier:
data_reader = csv.DictReader (fișier)
data_dict =
pentru linie în data_reader:
pentru cheie, valoarea în linie.articole ():
date_dict.setdefault (cheie, [])
data_dict [cheie].anexa (valoare)
print (data_dict)

După ce rulați exemplul de cod menționat mai sus, ar trebui să obțineți următoarea ieșire:

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

O buclă „pentru” este utilizată pe fiecare element al obiectului „DictReader” pentru a face o buclă peste perechi cheie-valoare. O nouă variabilă de dicționar Python „data_dict” este definită înainte de aceasta. Va stoca mapările de date finale. Sub al doilea bloc buclă „for”, se folosește metoda „setdefault” a dicționarului Python. Această metodă atribuie o valoare unei chei de dicționar. Dacă perechea cheie-valoare nu există, se creează una nouă din argumentele specificate. Deci, în acest caz, o nouă listă goală va fi atribuită unei chei dacă aceasta nu există deja. În cele din urmă, „valoare” este adăugată la cheia corespunzătoare din obiectul final „date_dict”.

Scrierea datelor într-un fișier CSV

Pentru a scrie date într-un fișier „csv”, va trebui să utilizați metoda „writer” din modulul „csv”. Exemplul de mai jos va adăuga un nou rând la „fructele” existente.csv ”.

import csv
cu deschis („fructe.csv "," a ") ca fișier:
data_writer = csv.scriitor (fișier)
data_writer.writerow ([3,1,6,4])

Prima declarație deschide fișierul în modul „adăugați”, notat cu argumentul „a”. Apoi se numește metoda „scriitorului” și referința la „fructe.fișierul csv ”îi este transmis ca argument. Metoda „writerow” scrie sau adaugă un nou rând în fișier.

Dacă doriți să convertiți dicționarul Python într-o structură de fișier „csv” și să salvați rezultatul într-un fișier „csv”, încercați acest cod:

import csv
cu deschis („fructe.csv "," w ") ca fișier:
headings = ["Mango", "Banana", "Apple", "Orange"]
data_writer = csv.DictWriter (fișier, nume de câmp = titluri)
data_writer.antet de scriere ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)

După deschiderea unei „fructe goale.csv ”folosind o instrucțiune„ cu deschis ”, este definită o nouă variabilă„ headings ”care conține titluri de coloană. Un nou obiect „data_writer” este creat prin apelarea metodei „DictWriter” și trecerea acestuia la „fructe”.csv ”și un argument„ nume de câmp ”. În rândul următor, titlurile de coloană sunt scrise în fișier folosind metoda „writeheader”. Ultimele două instrucțiuni adaugă rânduri noi la titlurile corespunzătoare create în pasul anterior.

Concluzie

Fișierele CSV oferă o modalitate îngrijită de a scrie date în format tabelar. Modulul „csv” încorporat al Python facilitează gestionarea datelor disponibile în fișierele „csv” și implementarea logicii suplimentare pe acesta.

AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...
Middle mouse button not working in Windows 10
The middle mouse button helps you scroll through long webpages and screens with a lot of data. If that stops, well you will end up using the keyboard ...
How to change Left & Right mouse buttons on Windows 10 PC
It's quite a norm that all computer mouse devices are ergonomically designed for right-handed users. But there are mouse devices available which are s...