Delo z datotekami csv v Pythonu
A Datoteka CSV (vrednosti, ločene z vejico). je datoteka z navadnim besedilom, kjer vsaka vrstica predstavlja podatkovni zapis, polja znotraj vsakega zapisa pa so ločena z vejicami. Zaradi svoje preprostosti in berljivosti se pogosto uporablja za preglednice in zbirke podatkov.
Spodaj je nekaj operacij, ki jih izvajamo med delom z datotekami Python CSV v Pythonu
Branje datoteke CSV
Branje iz datoteke CSV poteka z uporabo predmeta reader. Datoteka CSV se odpre kot besedilna datoteka z vgrajeno Pythonovo funkcijo open(), ki vrne predmet datoteke. V tem primeru najprej odpremo datoteko CSV v načinu READ, datotečni objekt se pretvori v objekt csv.reader in izvede se nadaljnja operacija. Koda in podrobna razlaga sta podani spodaj.
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 ' )
Izhod
Zgornji primer uporablja datoteko CSV aapl.csv ki jih je mogoče prenesti s tukaj .
Pojasnilo:
- z odprtim (...) varno odpre datoteko CSV v načinu branja z upraviteljem konteksta.
- csv.reader(csvfile) spremeni datoteko v predmet bralnika CSV.
- naslednji (csvreader) ekstrahira prvo vrstico kot naslove stolpcev.
- Skozi zanko csvreader da dodate vsako vrstico (kot seznam) vrsticam.
- Natisni skupne glave vrstic in prvih 5 podatkovnih vrstic v oblikovanem pogledu.
Branje datotek CSV v slovar s csv
Datoteko CSV lahko preberemo v slovar z uporabo modula csv v Pythonu in razreda csv.DictReader. Tukaj je primer:
Recimo, da imamo a zaposleni.csv datoteka in vsebina v njej bosta:
imeoddelkarojstni_dan_mesec
John SmithHRJulij
Alice Johnson oktober
Bob WilliamsFinanceJanuar
primer: To prebere vsako vrstico kot slovar (glave kot ključe), nato pa jo doda seznamu.
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 )
Izhod:
{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'julij'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'oktober'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'januar'}
Pojasnilo:
- z odprtim (...) odpre datoteko z upraviteljem konteksta.
- csv.DictReader(datoteka) prebere vsako vrstico kot slovar z uporabo glav kot ključev.
- data_list.append(vrstica) shrani vsak slovar na seznam.
Pisanje v datoteko CSV
Za pisanje v datoteko CSV najprej odpremo datoteko CSV v načinu WRITE. Objekt datoteke se pretvori v objekt csv.writer in izvedejo se nadaljnje operacije. Koda in podrobna razlaga sta podani spodaj.
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
Pojasnilo:
- polja definira glave stolpcev in vrstice, ki vsebujejo podatke kot seznam seznamov.
- z odprto (... 'w') odpre datoteko v načinu pisanja z upraviteljem konteksta.
- csv.writer(csvfile) ustvari pisalni objekt za pisanje v CSV.
- writerow(polja) zapiše naslovno vrstico v datoteko.
- pisne vrstice (vrstice) zapiše vse podatkovne vrstice v CSV hkrati.
Pisanje slovarja v datoteko CSV
Za pisanje slovarja v datoteko CSV se objekt datoteke (csvfile) pretvori v objekt DictWriter. Podroben primer z razlago in kodo je podan spodaj.
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 )
Izhod
csv datoteko Upoštevajte, da je datoteka CSV v navadnem besedilu videti takole:
univerzitetni zapis Pojasnilo:
- z odprtim (...) varno odpre datoteko z upraviteljem konteksta.
- csv.DictWriter(... ) preslika slovarske ključe v stolpce CSV.
- pisna glava() piše naslove stolpcev.
- writerows(mydict) zapiše vse slovarje kot vrstice CSV.
Branje datotek CSV s Pandas
Lahko preberemo a Python CSV datoteke z uporabo Pandas pandas.read_csv() funkcijo. Tukaj je primer:
Recimo, da imamo datoteko zaposlenih.csv in vsebina v njej bo:
imeoddelkarojstni_dan_mesec
John SmithHRJulij
Alice Johnson oktober
Bob WilliamsFinanceJanuar
V tem primeru pd.read_csv() prebere datoteko CSV v Pandas DataFrame. Nastali DataFrame se lahko uporablja za različne naloge obdelave podatkov in analize.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Izhod:
ime oddelka rojstni dan_mesec
0 John Smith HR julij
1 Alice Johnson IT oktober
2. Bob Williams Finance januar
S funkcijo pandas DataFrame lahko dostopamo do podatkov filtriranja določenih stolpcev in izvajamo različne operacije. Na primer, če želimo dostopati do stolpca 'name', lahko uporabimo df['name'].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Izhod :
0 John Smith
1 Alice Johnson
2 Bob Williams
Ime: ime dtip: predmet
Pisanje datotek CSV s Pandas
Pande lahko uporabimo za pisanje datotek CSV. To je mogoče storiti z uporabo pd.DataFrame() funkcijo. V tem primeru je Pande knjižnica se uporablja za pretvorbo seznama slovarjev (mydict) v DataFrame, ki predstavlja tabelarične podatke. DataFrame se nato zapiše v datoteko Python CSV z imenom 'output.csv' z uporabo metode to_csv, ki ustvari strukturirano in berljivo podatkovno datoteko za nadaljnjo analizo ali skupno rabo.
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 )
Izhodna datoteka CSV:
vejacgpanameyear
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Shranjevanje e-pošte v datoteke CSV
Začnemo z uvozom modula csv in ga uporabimo za shranjevanje imen in e-poštnih naslovov kot vrednosti, ločenih z vejico. S funkcijo open() ustvarimo datoteko CSV in nato vsako vrstico zapišemo s predmetom pisca z ločenimi stolpci za imena in e-poštna sporočila.
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 )
Izhod:
E-pošta v csv Ustvari kviz