Darbs ar csv failiem programmā Python
A CSV fails (komatatdalītās vērtības). ir vienkārša teksta fails, kurā katra rinda apzīmē datu ierakstu un katrā ierakstā esošie lauki ir atdalīti ar komatiem. Tā vienkāršības un lasāmības dēļ to parasti izmanto izklājlapām un datu bāzēm.
Tālāk ir norādītas dažas darbības, kuras mēs veicam, strādājot ar Python CSV failiem programmā Python
CSV faila lasīšana
Lasīšana no CSV faila tiek veikta, izmantojot lasītāja objektu. CSV fails tiek atvērts kā teksta fails ar Python iebūvēto open() funkciju, kas atgriež faila objektu. Šajā piemērā vispirms atveram CSV failu READ režīmā faila objekts tiek pārveidots par objektu csv.reader un notiek tālāka darbība. Kods un detalizēts skaidrojums ir sniegts zemāk.
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 ' )
Izvade
Iepriekš minētajā piemērā tiek izmantots CSV fails aapl.csv kuru var lejupielādēt no šeit .
Paskaidrojums:
- ar atvērtu (...) droši atver CSV failu lasīšanas režīmā, izmantojot konteksta pārvaldnieku.
- csv.reader(csvfile) pārvērš failu par CSV lasītāja objektu.
- nākamais (csvreader) izvelk pirmo rindu kā kolonnu galvenes.
- Izvelciet cauri csv lasītājs lai katru rindu (kā sarakstu) pievienotu rindām.
- Drukājiet kopējo rindu galvenes un pirmās 5 datu rindas formatētā skatā.
CSV failu lasīšana vārdnīcā, izmantojot csv
Mēs varam nolasīt CSV failu vārdnīcā, izmantojot Python csv moduli un csv.DictReader klasi. Šeit ir piemērs:
Pieņemsim, ka mums ir a darbinieki.csv fails un saturs tajā būs:
nosaukums nodaļadzimšanas diena_mēnesis
Džons Smits, Jūlijs
Alise Džonsone oktobrī
Bobs ViljamssFinance janvāris
Piemērs: Tas nolasa katru rindu kā vārdnīcu (galvenes kā taustiņus), pēc tam pievieno to sarakstam .
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 )
Izvade:
{'name': 'Džons Smits' 'department': 'HR' 'birthday_month': 'Jūlijs'}
{'name': 'Alise Džonsone' 'department': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'department': 'Finanšu' 'birthday_month': 'janvāris'}
Paskaidrojums:
- ar atvērtu (...) atver failu, izmantojot konteksta pārvaldnieku.
- csv.DictReader(fails) nolasa katru rindu kā vārdnīcu, izmantojot galvenes kā taustiņus.
- datu_saraksts.append(rinda) katru vārdnīcu saglabā sarakstā.
Notiek rakstīšana CSV failā
Lai rakstītu CSV failā, vispirms atveram CSV failu WRITE režīmā. Faila objekts tiek pārveidots par objektu csv.writer un notiek turpmākās darbības. Kods un detalizēts skaidrojums ir sniegts zemāk.
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
Paskaidrojums:
- lauki definē kolonnu galvenes, un rindas satur datus kā sarakstu sarakstu.
- ar atvērts (... 'w') atver failu rakstīšanas režīmā, izmantojot konteksta pārvaldnieku.
- csv.writer(csvfile) izveido rakstīšanas objektu rakstīšanai CSV.
- rakstīšanas rinda (lauki) ieraksta failā galvenes rindu.
- rakstīšanas rindas (rindas) ieraksta visas datu rindas uzreiz CSV.
Vārdnīcas rakstīšana CSV failā
Lai rakstītu vārdnīcu CSV failā, faila objekts (csvfile) tiek pārveidots par DictWriter objektu. Tālāk ir sniegts detalizēts piemērs ar skaidrojumu un kodu.
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 )
Izvade
csv failu Apsveriet, ka CSV fails vienkāršā tekstā izskatās šādi:
universitātes rekords Paskaidrojums:
- ar atvērtu (...) droši atver failu, izmantojot konteksta pārvaldnieku.
- csv.DictWriter(... ) kartē vārdnīcas atslēgas uz CSV kolonnām.
- rakstīšanas galvene () raksta kolonnu galvenes.
- raksti (midikts) raksta visas vārdnīcas kā CSV rindas.
CSV failu lasīšana, izmantojot pandas
Mēs varam lasīt a Python CSV failus ar Pandas, izmantojot pandas.read_csv() funkciju. Šeit ir piemērs:
Pieņemsim, ka mums ir fails darbinieki.csv, un tā saturs būs:
nosaukums nodaļadzimšanas diena_mēnesis
Džons Smits, Jūlijs
Alise Džonsone oktobrī
Bobs ViljamssFinance janvāris
Šajā piemērā pd.read_csv() nolasa CSV failu Pandas DataFrame. Iegūto DataFrame var izmantot dažādiem datu apstrādes un analīzes uzdevumiem.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Izvade:
vārda nodaļas dzimšanas diena_mēnesis
0 Džons Smits HR jūlijā
1 Alise Džonsone IT oktobris
2. Bobs Viljamss, finanses, janvāris
Mēs varam piekļūt konkrētu kolonnu filtrēšanas datiem un veikt dažādas darbības, izmantojot pandas DataFrame funkcionalitāti. Piemēram, ja mēs vēlamies piekļūt kolonnai 'name', mēs varam izmantot df['name'].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Izvade :
0 Džons Smits
1 Alise Džonsone
2 Bobs Viljamss
Nosaukums: nosaukums dtype: objekts
CSV failu rakstīšana, izmantojot Pandas
Mēs varam izmantot Pandas, lai rakstītu CSV failus. To var izdarīt, izmantojot pd.DataFrame() funkciju. Šajā piemērā Pandas bibliotēka tiek izmantota, lai pārvērstu vārdnīcu sarakstu (mydict) DataFrame, kas attēlo tabulas datus. Pēc tam DataFrame tiek ierakstīts Python CSV failā ar nosaukumu “output.csv”, izmantojot metodi to_csv, izveidojot strukturētu un lasāmu datu failu turpmākai analīzei vai koplietošanai.
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 )
Izvadīt CSV failu:
filiālecgpannameyear
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
E-pasta ziņojumu glabāšana CSV failos
Vispirms importējam csv moduli un izmantojam to, lai saglabātu vārdus un e-pasta adreses kā komatu atdalītas vērtības. Izmantojot funkciju open(), mēs izveidojam CSV failu un pēc tam ierakstām katru rindu, izmantojot rakstīšanas objektu ar atsevišķām kolonnām vārdiem un e-pastiem.
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 )
Izvade:
E-pasti csv formātā Izveidojiet viktorīnu