Darbas su csv failais Python
A CSV (kableliais atskirtų reikšmių) failą yra paprasto teksto failas, kuriame kiekviena eilutė žymi duomenų įrašą, o laukai kiekviename įraše yra atskirti kableliais. Dėl savo paprastumo ir skaitomumo jis dažniausiai naudojamas skaičiuoklėms ir duomenų bazėms.
Toliau pateikiamos kelios operacijos, kurias atliekame dirbdami su Python CSV failais Python
CSV failo skaitymas
Skaitymas iš CSV failo atliekamas naudojant skaitymo objektą. CSV failas atidaromas kaip tekstinis failas su Python integruota open() funkcija, kuri grąžina failo objektą. Šiame pavyzdyje pirmiausia atidarome CSV failą READ režimu, failo objektas konvertuojamas į csv.reader objektą ir atliekama tolesnė operacija. Kodas ir išsamus paaiškinimas pateikti žemiau.
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 ' )
Išvestis
Aukščiau pateiktame pavyzdyje naudojamas CSV failas aapl.csv iš kurios galima parsisiųsti čia .
Paaiškinimas:
- su atvira (...) saugiai atidaro CSV failą skaitymo režimu, naudojant konteksto tvarkyklę.
- csv.reader(csvfile) paverčia failą CSV skaitytuvo objektu.
- kitas (csvreader) ištraukia pirmąją eilutę kaip stulpelių antraštes.
- Persukite kilpą csvreader pridėti kiekvieną eilutę (kaip sąrašą) prie eilučių.
- Suformatuotame rodinyje spausdinkite visų eilučių antraštes ir pirmas 5 duomenų eilutes.
CSV failų skaitymas į žodyną naudojant csv
CSV failą galime perskaityti į žodyną naudodami Python programoje esantį csv modulį ir klasę csv.DictReader. Štai pavyzdys:
Tarkime, kad turime a darbuotojai.csv failas ir turinys jame bus:
vardo skyriaus gimtadienis_mėnesis
Johnas Smithas, liepos mėn
Alice JohnsonITOspalio mėn
Bob WilliamsFinanceSausio mėn
Pavyzdys: Kiekviena eilutė nuskaitoma kaip žodynas (antraštės kaip raktai), tada pridedama prie sąrašo .
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 )
Išvestis:
{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'Liepos'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'Sausis'}
Paaiškinimas:
- su atvira (...) atidaro failą naudodamas konteksto tvarkyklę.
- csv.DictReader(failas) skaito kiekvieną eilutę kaip žodyną, naudodamas antraštes kaip klavišus.
- data_list.append(row) saugo kiekvieną žodyną sąraše.
Rašoma į CSV failą
Norėdami rašyti į CSV failą, pirmiausia atidarome CSV failą WRITE režimu. Failo objektas konvertuojamas į csv.writer objektą ir vyksta tolesnės operacijos. Kodas ir išsamus paaiškinimas pateikti žemiau.
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
Paaiškinimas:
- laukus apibrėžia stulpelių antraštes, o eilutėse pateikiami duomenys kaip sąrašų sąrašas.
- su atidaryti (... 'w') atidaro failą rašymo režimu, naudodamas konteksto tvarkyklę.
- csv.writer(csvfile) sukuria rašymo objektą, skirtą rašyti į CSV.
- rašymo eilutė (laukai) į failą įrašo antraštės eilutę.
- rašymo eilutės (eilutės) iš karto įrašo visas duomenų eilutes į CSV.
Žodyno rašymas į CSV failą
Norint įrašyti žodyną į CSV failą, failo objektas (csvfile) konvertuojamas į DictWriter objektą. Žemiau pateikiamas išsamus pavyzdys su paaiškinimu ir 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 )
Išvestis
csv failą Apsvarstykite, kad CSV failas paprastu tekstu atrodo taip:
universiteto rekordas Paaiškinimas:
- su atvira (...) saugiai atidaro failą naudojant konteksto tvarkyklę.
- csv.DictWriter(... ) susieja žodyno raktus į CSV stulpelius.
- rašymo antraštė () rašo stulpelių antraštes.
- raštai (midiktas) rašo visus žodynus kaip CSV eilutes.
CSV failų skaitymas naudojant Pandas
Galime perskaityti a Python CSV failai su Pandas naudojant pandas.read_csv() funkcija. Štai pavyzdys:
Tarkime, kad turime failą darbuotojai.csv, o jo turinys bus:
vardo skyriaus gimtadienis_mėnesis
Johnas Smithas, liepos mėn
Alice JohnsonITOspalio mėn
Bob WilliamsFinanceSausio mėn
Šiame pavyzdyje pd.read_csv() nuskaito CSV failą į Pandas DataFrame. Gautas DataFrame gali būti naudojamas įvairioms duomenų apdorojimo ir analizės užduotims atlikti.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Išvestis:
vardo skyriaus gimtadienis_mėnesis
0 John Smith HR liepos mėn
1 Alice Johnson IT Spalio d
2 Bobo Williamso finansai sausio 2 d
Naudodami pandos DataFrame funkcionalumą galime pasiekti konkrečių stulpelių filtravimo duomenis ir atlikti įvairias operacijas. Pavyzdžiui, jei norime pasiekti stulpelį „pavadinimas“, galime naudoti df['name'].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Išvestis :
0 Džonas Smitas
1 Alisa Džonson
2 Bobas Williamsas
Vardas: pavadinimas dtype: objektas
CSV failų rašymas naudojant Pandas
CSV failams rašyti galime naudoti Pandas. Tai galima padaryti naudojant pd.DataFrame() funkcija. Šiame pavyzdyje Pandos biblioteka naudojama konvertuoti žodynų sąrašą (mydict) į DataFrame, vaizduojantį lentelės duomenis. Tada „DataFrame“ įrašomas į Python CSV failą pavadinimu „output.csv“, naudojant to_csv metodą, sukuriant struktūrizuotą ir skaitomą duomenų failą tolesnei analizei arba bendrinimui.
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 )
Išvesties CSV failas:
filialascgpanamemet
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Laiškų saugojimas CSV failuose
Pirmiausia importuojame csv modulį ir naudojame jį vardams ir el. laiškams saugoti kaip kableliais atskirtas reikšmes. Naudodami funkciją open() sukuriame CSV failą ir įrašome kiekvieną eilutę naudodami rašytuvo objektą su atskirais vardų ir el. pašto stulpeliais.
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 )
Išvestis:
Laiškai csv formatu Sukurti viktoriną