logo

Rad s csv datotekama u Pythonu

A CSV (vrijednosti odvojene zarezima) datoteka je obična tekstualna datoteka u kojoj svaki redak predstavlja zapis podataka, a polja unutar svakog zapisa odvojena su zarezima. Obično se koristi za proračunske tablice i baze podataka zbog svoje jednostavnosti i čitljivosti.

Ispod su neke operacije koje izvodimo tijekom rada s Python CSV datotekama u Pythonu

Čitanje CSV datoteke

Čitanje iz CSV datoteke vrši se pomoću objekta čitača. CSV datoteka otvara se kao tekstualna datoteka s Pythonovom ugrađenom funkcijom open() koja vraća objekt datoteke. U ovom primjeru prvo otvaramo CSV datoteku u načinu rada READ, objekt datoteke pretvara se u objekt csv.reader i odvija se daljnja operacija. Kod i detaljno objašnjenje dani su u nastavku.



Python
import csv filename = 'aapl.csv' # File name fields = [] # Column names rows = [] # Data rows with open(filename 'r') as csvfile: csvreader = csv.reader(csvfile) # Reader object fields = next(csvreader) # Read header for row in csvreader: # Read rows rows.append(row) print('Total no. of rows: %d' % csvreader.line_num) # Row count print('Field names are: ' + ' '.join(fields)) print('nFirst 5 rows are:n') for row in rows[:5]: for col in row: print('%10s' % col end=' ') print('n') 

Izlaz

Rad s csv datotekama u Pythonu

Gornji primjer koristi CSV datoteku aapl.csv koji se može preuzeti sa ovdje .

Obrazloženje:

  • s otvorenim (...) otvara CSV datoteku u načinu čitanja sigurno pomoću upravitelja konteksta.
  • csv.čitač(csvdatoteka) pretvara datoteku u objekt čitača CSV-a.
  • sljedeći (csvreader) izdvaja prvi redak kao zaglavlja stupaca.
  • Prođite kroz petlju csvreader za dodavanje svakog retka (kao popisa) redovima.
  • Ispis ukupnih zaglavlja redaka i prvih 5 podatkovnih redaka u formatiranom prikazu.

Čitanje CSV datoteka u rječnik pomoću csv

Možemo pročitati CSV datoteku u rječnik pomoću csv modula u Pythonu i klase csv.DictReader. Evo primjera:

Pretpostavimo da imamo a zaposlenici.csv datoteka i sadržaj unutar nje bit će:

ime odjela rođendan_mjesec
John SmithHR Srpanj
Alice JohnsonITO listopad
Bob WilliamsFinancesiječanj

Primjer: Ovo čita svaki redak kao rječnik (zaglavlja kao ključeve), a zatim ga dodaje popisu.

Python
import csv with open('employees.csv' mode='r') as file: csv_reader = csv.DictReader(file) # Create DictReader data_list = [] # List to store dictionaries for row in csv_reader: data_list.append(row) for data in data_list: print(data) 

Izlaz:

{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'srpanj'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'listopad'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'siječanj'}

Obrazloženje:

'kruskalov algoritam'
  • s otvorenim (...) otvara datoteku pomoću upravitelja konteksta.
  • csv.DictReader(datoteka) čita svaki redak kao rječnik koristeći zaglavlja kao ključeve.
  • popis_podataka.dodaj(redak) pohranjuje svaki rječnik na popis.

Zapisivanje u CSV datoteku

Za pisanje u CSV datoteku najprije otvorimo CSV datoteku u WRITE modu. Objekt datoteke pretvara se u objekt csv.writer i odvijaju se daljnje operacije. Kod i detaljno objašnjenje dani su u nastavku.

Python
import csv # Define header and data rows fields = ['Name' 'Branch' 'Year' 'CGPA'] rows = [ ['Nikhil' 'COE' '2' '9.0'] ['Sanchit' 'COE' '2' '9.1'] ['Aditya' 'IT' '2' '9.3'] ['Sagar' 'SE' '1' '9.5'] ['Prateek' 'MCE' '3' '7.8'] ['Sahil' 'EP' '2' '9.1'] ] filename = 'university_records.csv' with open(filename 'w') as csvfile: csvwriter = csv.writer(csvfile) # Create writer object csvwriter.writerow(fields) # Write header csvwriter.writerows(rows) # Write multiple rows 

Obrazloženje:

  • polja definira zaglavlja stupaca i retke sadrži podatke kao popis popisa.
  • s otvoriti (... 'w') otvara datoteku u načinu pisanja pomoću upravitelja konteksta.
  • csv.writer(csvfile) stvara objekt pisca za pisanje u CSV.
  • redak za pisanje (polja) zapisuje redak zaglavlja u datoteku.
  • pisci (redovi) zapisuje sve retke podataka u CSV odjednom.

Pisanje rječnika u CSV datoteku

Za pisanje rječnika u CSV datoteku objekt datoteke (csvfile) pretvara se u objekt DictWriter. Detaljan primjer s objašnjenjem i kodom dan je u nastavku.

Python
# importing the csv module import csv # my data rows as dictionary objects mydict = [{'branch': 'COE' 'cgpa': '9.0' 'name': 'Nikhil' 'year': '2'} {'branch': 'COE' 'cgpa': '9.1' 'name': 'Sanchit' 'year': '2'} {'branch': 'IT' 'cgpa': '9.3' 'name': 'Aditya' 'year': '2'} {'branch': 'SE' 'cgpa': '9.5' 'name': 'Sagar' 'year': '1'} {'branch': 'MCE' 'cgpa': '7.8' 'name': 'Prateek' 'year': '3'} {'branch': 'EP' 'cgpa': '9.1' 'name': 'Sahil' 'year': '2'}] # field names fields = ['name' 'branch' 'year' 'cgpa'] # name of csv file filename = 'university_records.csv' # writing to csv file with open(filename 'w') as csvfile: # creating a csv dict writer object writer = csv.DictWriter(csvfile fieldnames=fields) # writing headers (field names) writer.writeheader() # writing data rows writer.writerows(mydict) 

Izlaz

Rad s csv datotekama u Pythonucsv datoteka

Uzmite u obzir da CSV datoteka izgleda ovako u običnom tekstu:

sveučilišni rekord' loading='lazy' title=sveučilišni rekord

Obrazloženje:

  • s otvorenim (...) sigurno otvara datoteku pomoću upravitelja konteksta.
  • csv.DictWriter(... ) preslikava ključeve rječnika u CSV stupce.
  • zaglavlje pisanja() piše zaglavlja stupaca.
  • writerows(mydict) zapisuje sve rječnike kao CSV retke.

Čitanje CSV datoteka s Pandama

Možemo pročitati a Python CSV datoteke pomoću Panda pandas.read_csv() funkcija. Evo primjera:

Pretpostavimo da imamo datoteku zaposlenih.csv i sadržaj unutar nje će biti:

ime odjela rođendan_mjesec
John SmithHR Srpanj
Alice JohnsonITO listopad
Bob WilliamsFinancesiječanj

U ovom primjeru pd.read_csv() čita CSV datoteku u Pandas DataFrame. Rezultirajući DataFrame može se koristiti za različite zadatke manipulacije podacima i analize.

Python
import pandas as pd # Read the CSV file into a DataFrame df = pd.read_csv('employees.csv') # Display the DataFrame print(df) 

Izlaz:

naziv odjel rođendan_mjesec
0 John Smith HR srpnja
1 Alice Johnson IT listopad
2 Bob Williams Financije Siječanj

Možemo pristupiti podacima filtriranja određenih stupaca i izvoditi razne operacije pomoću funkcionalnosti pandas DataFrame. Na primjer, ako želimo pristupiti stupcu 'name' možemo koristiti df['name'].

puni oblik
Python
# Access the 'name' column names = df['name'] print(names) 

Izlaz :

0 John Smith
1 Alice Johnson
2 Bob Williams
Ime: ime dtip: objekt

Pisanje CSV datoteka s Pandas

Pande možemo koristiti za pisanje CSV datoteka. To se može učiniti korištenjem pd.DataFrame() funkcija. U ovom primjeru Pande biblioteka se koristi za pretvaranje popisa rječnika (mydict) u DataFrame koji predstavlja tablične podatke. DataFrame se zatim zapisuje u Python CSV datoteku pod nazivom 'output.csv' pomoću metode to_csv stvarajući strukturiranu i čitljivu podatkovnu datoteku za daljnju analizu ili dijeljenje.

Python
import pandas as pd mydict = [ {'branch': 'COE' 'cgpa': '9.0' 'name': 'Nikhil' 'year': '2'} {'branch': 'COE' 'cgpa': '9.1' 'name': 'Sanchit' 'year': '2'} {'branch': 'IT' 'cgpa': '9.3' 'name': 'Aditya' 'year': '2'} {'branch': 'SE' 'cgpa': '9.5' 'name': 'Sagar' 'year': '1'} {'branch': 'MCE' 'cgpa': '7.8' 'name': 'Prateek' 'year': '3'} {'branch': 'EP' 'cgpa': '9.1' 'name': 'Sahil' 'year': '2'} ] # Create a DataFrame from the list of dictionaries df = pd.DataFrame(mydict) # Write the DataFrame to a CSV file df.to_csv('output.csv' index=False) 

Izlazna CSV datoteka:

granacgpanamegodina
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1 Sahil2

Pohranjivanje e-pošte u CSV datoteke

Počinjemo s uvozom csv modula i koristimo ga za pohranjivanje imena i e-mailova kao vrijednosti odvojenih zarezom. Pomoću funkcije open() stvaramo CSV datoteku i zatim pišemo svaki red pomoću objekta pisca s odvojenim stupcima za imena i adrese e-pošte.

Python
# importing the csv module import csv # field names fields = ['Name' 'Email'] # data rows of csv file rows = [ ['Nikhil' '[email protected]'] ['Sanchit' '[email protected]'] ['Aditya' '[email protected]'] ['Sagar' '[email protected]'] ['Prateek' '[email protected]'] ['Sahil' '[email protected]']] # name of csv file filename = 'email_records.csv' # writing to csv file with open(filename 'w') as csvfile: # creating a csv writer object csvwriter = csv.writer(csvfile) # writing the fields csvwriter.writerow(fields) # writing the data rows csvwriter.writerows(rows) 

Izlaz:

E-poruke u csv' loading='lazy' title=E-poruke u csv Napravi kviz