logo

Práca so súbormi csv v Pythone

A Súbor CSV (Comma Separated Values). je obyčajný textový súbor, kde každý riadok predstavuje dátový záznam a polia v každom zázname sú oddelené čiarkami. Bežne sa používa pre tabuľky a databázy kvôli svojej jednoduchosti a čitateľnosti.

Nižšie sú uvedené niektoré operácie, ktoré vykonávame pri práci so súbormi Python CSV v Pythone

Čítanie súboru CSV

Čítanie zo súboru CSV sa vykonáva pomocou objektu reader. Súbor CSV sa otvorí ako textový súbor so vstavanou funkciou open() Pythonu, ktorá vráti objekt súboru. V tomto príklade najprv otvoríme súbor CSV v režime READ objekt súboru sa skonvertuje na objekt csv.reader a prebehne ďalšia operácia. Kód a podrobné vysvetlenie je uvedené nižšie.



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') 

Výstup

Práca so súbormi csv v Pythone

Vyššie uvedený príklad používa súbor CSV aapl.csv z ktorej sa dá stiahnuť tu .

Vysvetlenie:

  • s otvoreným (...) bezpečne otvorí súbor CSV v režime čítania pomocou kontextového manažéra.
  • csv.reader(csvfile) zmení súbor na objekt čítačky CSV.
  • ďalší(csvreader) extrahuje prvý riadok ako hlavičky stĺpcov.
  • Prejdite cez slučku csvreader pridať každý riadok (ako zoznam) k riadkom.
  • Vytlačte hlavičky celkového počtu riadkov a prvých 5 riadkov s údajmi vo formátovanom zobrazení.

Čítanie súborov CSV do slovníka s csv

Súbor CSV môžeme načítať do slovníka pomocou modulu csv v Pythone a triedy csv.DictReader. Tu je príklad:

Predpokladajme, že máme a zamestnanci.csv súbor a obsah v ňom budú:

namedepartmentbirthday_month
John SmithHRJúl
Alice JohnsonITOktóber
Bob Williams Finance Január

Príklad: Toto prečíta každý riadok ako slovník (hlavičky ako kľúče) a potom ho pripojí k zoznamu .

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) 

výstup:

{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'Júl'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'Október'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'Január'}

Vysvetlenie:

definovať počítač
  • s otvoreným (...) otvorí súbor pomocou kontextového manažéra.
  • csv.DictReader(súbor) prečíta každý riadok ako slovník s použitím hlavičiek ako kľúčov.
  • data_list.append(riadok) ukladá každý slovník do zoznamu.

Zápis do súboru CSV

Aby sme mohli zapisovať do súboru CSV, najprv súbor CSV otvoríme v režime WRITE. Objekt súboru sa skonvertuje na objekt csv.writer a prebiehajú ďalšie operácie. Kód a podrobné vysvetlenie je uvedené nižšie.

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 

Vysvetlenie:

  • poliach definuje hlavičky stĺpcov a riadky obsahuje údaje ako zoznam zoznamov.
  • s otvoriť (... 'w') otvorí súbor v režime zápisu pomocou kontextového manažéra.
  • csv.writer(csvfile) vytvorí objekt Writer na zápis do CSV.
  • writerow(polia) zapíše riadok hlavičky do súboru.
  • spisovatelia (riadky) zapíše všetky dátové riadky do CSV naraz.

Zápis slovníka do súboru CSV

Ak chcete zapísať slovník do súboru CSV, objekt súboru (csvfile) sa skonvertuje na objekt DictWriter. Podrobný príklad s vysvetlením a kódom je uvedený nižšie.

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) 

Výstup

Práca so súbormi csv v Pythonecsv súbor

Zvážte, že súbor CSV vyzerá ako obyčajný text takto:

univerzitný záznam' loading='lazy' title=univerzitný záznam

Vysvetlenie:

  • s otvoreným (...) bezpečne otvorí súbor pomocou kontextového manažéra.
  • csv.DictWriter(... ) mapuje kľúče slovníka na stĺpce CSV.
  • writeheader() píše hlavičky stĺpcov.
  • spisovatelia (mydict) zapíše všetky slovníky ako riadky CSV.

Čítanie súborov CSV s Pandami

Môžeme čítať a Python CSV súbory s použitím Pandas pandas.read_csv() funkciu. Tu je príklad:

Predpokladajme, že máme súbor staff.csv a obsah v ňom bude:

namedepartmentbirthday_month
John SmithHRJúl
Alice JohnsonITOktóber
Bob Williams Finance Január

V tomto príklade pd.read_csv() načíta súbor CSV do Pandas DataFrame. Výsledný DataFrame možno použiť na rôzne úlohy manipulácie s údajmi a analýzy.

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

výstup:

názov oddelenia narodeniny_mesiac
0 John Smith HR Júl
1 Alice Johnson IT október
2 Bob Williams Finance Január

Pomocou funkcie pandas DataFrame môžeme pristupovať k špecifickým stĺpcom, filtrovať dáta a vykonávať rôzne operácie. Napríklad, ak chceme získať prístup k stĺpcu 'name', môžeme použiť df['name'].

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

Výstup :

0 John Smith
1 Alice Johnsonová
2 Bob Williams
Name: name dtype: object

Písanie CSV súborov s Pandas

Pandy môžeme použiť na písanie CSV súborov. Dá sa to urobiť pomocou pd.DataFrame() funkciu. V tomto príklade pandy knižnica sa používa na konverziu zoznamu slovníkov (mydict) do DataFrame reprezentujúceho tabuľkové údaje. DataFrame sa potom zapíše do súboru Python CSV s názvom „output.csv“ pomocou metódy to_csv, čím sa vytvorí štruktúrovaný a čitateľný súbor údajov na ďalšiu analýzu alebo zdieľanie.

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) 

Výstupný súbor CSV:

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

ako spustiť skript

Ukladanie e-mailov do súborov CSV

Začneme importovaním modulu csv a použijeme ho na ukladanie mien a e-mailov ako hodnoty oddelené čiarkou. Pomocou funkcie open() vytvoríme súbor CSV a potom napíšeme každý riadok pomocou objektu Writer so samostatnými stĺpcami pre mená a e-maily.

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) 

výstup:

E-maily vo formáte csv' loading='lazy' title=E-maily vo formáte csv Vytvoriť kvíz