Lucrul cu fișiere csv în Python
O Fișier CSV (Valori separate prin virgulă). este un fișier text simplu în care fiecare linie reprezintă o înregistrare de date și câmpurile din fiecare înregistrare sunt separate prin virgule. Este folosit în mod obișnuit pentru foi de calcul și baze de date datorită simplității și lizibilității sale.
Mai jos sunt câteva operațiuni pe care le efectuăm în timp ce lucrăm cu fișiere CSV Python în Python
Citirea unui fișier CSV
Citirea dintr-un fișier CSV se face folosind obiectul cititor. Fișierul CSV este deschis ca fișier text cu funcția încorporată open() a lui Python, care returnează un obiect fișier. În acest exemplu, deschidem mai întâi fișierul CSV în modul READ, obiectul fișierului este convertit în obiectul csv.reader și are loc o operațiune ulterioară. Codul și explicația detaliată sunt date mai jos.
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 ' )
Ieșire
Exemplul de mai sus folosește un fișier CSV aapl.csv care poate fi descărcat de pe Aici .
Explicaţie:
- cu deschis(...) deschide fișierul CSV în modul de citire în siguranță, folosind un manager de context.
- csv.reader(csvfile) transformă fișierul într-un obiect cititor CSV.
- următorul(csvreader) extrage primul rând ca antete de coloană.
- Buclă prin csvreader pentru a adăuga fiecare rând (sub formă de listă) la rânduri.
- Imprimați anteturile de rânduri totale și primele 5 rânduri de date într-o vizualizare formatată.
Citirea fișierelor CSV într-un dicționar cu csv
Putem citi un fișier CSV într-un dicționar folosind modulul csv din Python și clasa csv.DictReader. Iată un exemplu:
Să presupunem că avem un angajaţii.csv fișierul și conținutul din interiorul acestuia vor fi:
namedepartmentbirthday_month
John SmithHRiulie
Alice Johnson în octombrie
Bob WilliamsFinanțeIanuarie
Exemplu: Acest lucru citește fiecare rând ca un dicționar (anteturile ca chei), apoi îl anexează la listă.
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 )
Ieșire:
{'nume': 'John Smith' 'departament': 'HR' 'birthday_month': 'iulie'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'October'}
{'nume': 'Bob Williams' 'departament': 'Finanţe' 'birthday_month': 'ianuarie'}
Explicaţie:
- cu deschis(...) deschide fișierul folosind un manager de context.
- csv.DictReader(fișier) citește fiecare rând ca un dicționar folosind anteturi ca taste.
- data_list.append(rând) stochează fiecare dicționar într-o listă.
Scrierea într-un fișier CSV
Pentru a scrie într-un fișier CSV, deschidem mai întâi fișierul CSV în modul WRITE. Obiectul fișier este convertit în obiect csv.writer și au loc operațiuni ulterioare. Codul și explicația detaliată sunt date mai jos.
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
Explicaţie:
- câmpuri definește anteturile coloanelor și rândurile conțin datele ca o listă de liste.
- cu deschis(... 'w') deschide fișierul în modul de scriere folosind un manager de context.
- csv.writer(csvfile) creează un obiect writer pentru scrierea în CSV.
- scrie rândul (câmpuri) scrie rândul antetului în fișier.
- scrie rânduri (rânduri) scrie toate rândurile de date în CSV simultan.
Scrierea unui dicționar într-un fișier CSV
Pentru a scrie un dicționar într-un fișier CSV, obiectul fișier (csvfile) este convertit într-un obiect DictWriter. Mai jos este dat un exemplu detaliat cu explicație și cod.
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 )
Ieșire
fișier csv Luați în considerare că un fișier CSV arată astfel în text simplu:
palmares universitar Explicaţie:
- cu deschis(...) deschide fișierul în siguranță folosind un manager de context.
- csv.DictWriter(... ) mapează cheile de dicționar la coloanele CSV.
- writeheader() scrie antete de coloană.
- scrie rânduri (mydict) scrie toate dicționarele ca rânduri CSV.
Citirea fișierelor CSV cu Pandas
Putem citi a Python CSV fișiere cu Pandas folosind pandas.read_csv() funcţie. Iată un exemplu:
Să presupunem că avem un fișier employees.csv și conținutul în interiorul acestuia va fi:
namedepartmentbirthday_month
John SmithHRiulie
Alice Johnson în octombrie
Bob WilliamsFinanțeIanuarie
În acest exemplu, pd.read_csv() citește fișierul CSV într-un Pandas DataFrame. DataFrame rezultat poate fi folosit pentru diferite sarcini de manipulare și analiză a datelor.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Ieșire:
nume departament ziua_lună
0 John Smith HR iulie
1 Alice Johnson IT octombrie
2 Bob Williams Finance ianuarie
Putem accesa anumite coloane, filtrează date și putem efectua diverse operațiuni folosind funcționalitatea Pandas DataFrame. De exemplu, dacă dorim să accesăm coloana „nume”, putem folosi df[“nume”].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Ieșire :
0 John Smith
1 Alice Johnson
2 Bob Williams
Nume: nume dtype: obiect
Scrierea fișierelor CSV cu Pandas
Putem folosi Pandas pentru a scrie fișiere CSV. Se poate face folosind pd.DataFrame() funcţie. În acest exemplu, panda biblioteca este folosită pentru a converti o listă de dicționare (mydict) într-un DataFrame reprezentând date tabulare. DataFrame este apoi scris într-un fișier CSV Python numit „output.csv” folosind metoda to_csv, creând un fișier de date structurat și care poate fi citit pentru analiză sau partajare ulterioară.
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 )
Fișier CSV de ieșire:
branchcgpanameyear
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Stocarea e-mailurilor în fișiere CSV
Începem prin a importa modulul csv și îl folosim pentru a stoca nume și e-mailuri ca valori separate prin virgulă. Folosind funcția open() creăm un fișier CSV și apoi scriem fiecare rând folosind un obiect writer cu coloane separate pentru nume și e-mailuri.
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 )
Ieșire:
E-mailuri în csv Creați un test