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 ( ' n First 5 rows are: n ' ) for row in rows [: 5 ]: for col in row : print ( ' %10s ' % col end = ' ' ) print ( ' n ' )
Izlaz
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:
- 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
csv datoteka Uzmite u obzir da CSV datoteka izgleda ovako u običnom tekstu:
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'].
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 Napravi kviz