Conținut curs
Gestionarea erorilor și excepțiilor
0/1
Python Intermediar
Despre lecție

Obiective:

  • Înțelegerea importanței formatului CSV și a utilizării sale în prelucrarea datelor
  • Familiarizarea cu biblioteca Python csv
  • Învățarea unor tehnici avansate de manipulare a fișierelor CSV

Introducere

Fișierele CSV (Comma Separated Values) sunt o metodă populară de stocare a datelor într-un format text simplu. Aceste fișiere sunt folosite pe scară largă pentru schimbul de date între diferite aplicații și sisteme. În această lecție, ne vom aprofunda în lucrul cu fișiere CSV și vom învăța cum să prelucrăm datele într-un mod mai avansat.

Biblioteca csv

Python oferă biblioteca csv, care ne permite să citim și să scriem fișiere CSV într-un mod facil și eficient. Înainte de a începe să lucrăm cu fișiere CSV, trebuie să importăm biblioteca folosind comanda import csv.

python
import csv

Citirea fișierelor CSV

Pentru a citi un fișier CSV, putem folosi funcția csv.reader(), care ne va returna un obiect de tip iterator, ce poate fi folosit pentru a parcurge rândurile fișierului.

python
import csv

with open('exemplu.csv', mode='r', encoding='utf-8') as csvfile:
    csv_reader = csv.reader(csvfile)
    for row in csv_reader:
        print(row)

Delimitatorul și citirea fișierelor CSV

Uneori, fișierele CSV pot folosi delimitatori diferiți în loc de virgulă. Pentru a citi un astfel de fișier, trebuie să specificăm delimitatorul folosit în parametrul delimiter al funcției csv.reader().

python
import csv

with open('exemplu.tsv', mode='r', encoding='utf-8') as csvfile:
    csv_reader = csv.reader(csvfile, delimiter='t')
    for row in csv_reader:
        print(row)

Scrierea fișierelor CSV

Pentru a scrie un fișier CSV, putem folosi funcția csv.writer(), care ne va returna un obiect de tip writer, ce poate fi folosit pentru a scrie rânduri în fișier.

python
import csv

data = [['Nume', 'Vârstă', 'Oraș'],
        ['Andrei', 25, 'București'],
        ['Ioana', 30, 'Cluj-Napoca']]

with open('persoane.csv', mode='w', encoding='utf-8', newline='') as csvfile:
    csv_writer = csv.writer(csvfile)
    for row in data:
        csv_writer.writerow(row)

Delimitatorul și scrierea fișierelor CSV

La fel ca în cazul citirii, putem specifica un delimitator diferit pentru scrierea fișierelor CSV, folosind parametrul delimiter al funcției csv.writer().

python
import csv

data = [['Nume', 'Vârstă', 'Oraș'],
        ['Andrei', 25, 'București'],
        ['Ioana', 30, 'Cluj-Napoca']]

with open('persoane.tsv', mode='w', encoding='utf-8', newline='') as csvfile:
    csv_writer = csv.writer(csvfile, delimiter='t')
    for row in data:
        csv_writer.writerow(row)

Tehnici avansate de manipulare a fișierelor CSV

Folosirea obiectelor DictReader și DictWriter

Biblioteca csv oferă și clasele DictReader și DictWriter, care ne permit să lucrăm cu fișiere CSV folosind dicționare în loc de liste. Acest lucru poate fi util atunci când avem de-a face cu fișiere CSV mari și complexe.

python
import csv

with open('exemplu.csv', mode='r', encoding='utf-8') as csvfile:
    csv_reader = csv.DictReader(csvfile)
    for row in csv_reader:
        print(row)

Filtrarea datelor

Putem filtra datele dintr-un fișier CSV în funcție de anumite condiții, folosind construcții Python precum list comprehensions sau funcția filter().

python
import csv

def filtrare_vârstă(vârstă_minimă):
    persoane_filtrate = []
    with open('persoane.csv', mode='r', encoding='utf-8') as csvfile:
        csv_reader = csv.DictReader(csvfile)
        persoane_filtrate = [row for row in csv_reader if int(row['Vârstă']) >= vârstă_minimă]
    return persoane_filtrate

persoane_peste_25 = filtrare_vârstă(25)
print(persoane_peste_25)

Sortarea datelor

Putem sorta datele dintr-un fișier CSV în funcție de o anumită coloană, folosind funcția sorted() și o funcție lambda pentru a specifica cheia de sortare.

python
import csv

def sortare_dupa_vârstă():
    persoane_sortate = []
    with open('persoane.csv', mode='r', encoding='utf-8') as csvfile:
        csv_reader = csv.DictReader(csvfile)
        persoane_sortate = sorted(csv_reader, key=lambda row: int(row['Vârstă']))
    return persoane_sortate

persoane_sortate = sortare_dupa_vârstă()
print(persoane_sortate)

Combinarea datelor din mai multe fișiere CSV

Putem combina datele din mai multe fișiere CSV într-un singur fișier, folosind funcțiile de citire și scriere CSV pe care le-am învățat anterior.

python
import csv

def combină_fișiere_csv(fișiere, fișier_iesire):
    with open(fișier_iesire, mode='w', encoding='utf-8', newline='') as csvfile_iesire:
        csv_writer = csv.writer(csvfile_iesire)
        for fișier in fișiere:
            with open(fișier, mode='r', encoding='utf-8') as csvfile_intrare:
                csv_reader = csv.reader(csvfile_intrare)
                for row in csv_reader:
                    csv_writer.writerow(row)

fișiere = ['persoane1.csv', 'persoane2.csv']
combină_fișiere_csv(fișiere, 'persoane_combinate.csv')

Exerciții

  1. Scrieți o funcție care primește un fișier CSV și o coloană și returnează suma valorilor din acea coloană.

  2. Scrieți o funcție care primește un fișier CSV și o coloană și returnează valoarea maximă din acea coloană.

  3. Scrieți o funcție care primește un fișier CSV și o coloană și returnează valoarea minimă din acea coloană.

  4. Scrieți o funcție care primește un fișier CSV și o coloană și returnează media valorilor din acea coloană.

  5. Scrieți o funcție care primește un fișier CSV și o coloană și returnează mediana valorilor din acea coloană.

Succes în rezolvarea exercițiilor!