Arbeide med csv-filer i Python
EN CSV-fil (Comma Separated Values). er en ren tekstfil der hver linje representerer en datapost og felt i hver post er atskilt med komma. Den brukes ofte til regneark og databaser på grunn av sin enkelhet og lesbarhet.
Nedenfor er noen operasjoner som vi utfører mens vi jobber med Python CSV-filer i Python
Leser en CSV-fil
Lesing fra en CSV-fil gjøres ved å bruke leserobjektet. CSV-filen åpnes som en tekstfil med Pythons innebygde open()-funksjon som returnerer et filobjekt. I dette eksemplet åpner vi først CSV-filen i READ-modus. Filobjektet konverteres til csv.reader-objektet og videre operasjon finner sted. Kode og detaljert forklaring er gitt nedenfor.
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 ' )
Produksjon
Eksempelet ovenfor bruker en CSV-fil aapl.csv som kan lastes ned fra her .
Forklaring:
- med åpen(...) åpner CSV-filen i lesemodus trygt ved hjelp av en kontekstbehandling.
- csv.reader(csvfil) gjør filen til et CSV-leserobjekt.
- neste(csvreader) trekker ut den første raden som kolonneoverskrifter.
- Sløyfe gjennom csvreader å legge til hver rad (som en liste) til rader.
- Skriv ut totalt radoverskrifter og første 5 datarader i en formatert visning.
Lese CSV-filer i en ordbok med csv
Vi kan lese en CSV-fil inn i en ordbok ved å bruke csv-modulen i Python og csv.DictReader-klassen. Her er et eksempel:
Anta at vi har en ansatte.csv fil og innhold i den vil være:
navnavdelingbursdag_måned
John SmithHR juli
Alice Johnson I oktober
Bob WilliamsFinansJanuar
Eksempel: Dette leser hver rad som en ordbok (overskrifter som nøkler) og legger den til i listen .
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 )
Produksjon:
{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'juli'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'oktober'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'January'}
Forklaring:
- med åpen(...) åpner filen ved hjelp av en kontekstbehandling.
- csv.DictReader(fil) leser hver rad som en ordbok ved å bruke overskrifter som taster.
- data_list.append(row) lagrer hver ordbok i en liste.
Skriver til en CSV-fil
For å skrive til en CSV-fil åpner vi først CSV-filen i WRITE-modus. Filobjektet konverteres til csv.writer-objekt og videre operasjoner finner sted. Kode og detaljert forklaring er gitt nedenfor.
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
Forklaring:
- felt definerer kolonneoverskriftene og radene inneholder dataene som en liste over lister.
- med åpen(... 'w') åpner filen i skrivemodus ved hjelp av en kontekstbehandling.
- csv.writer(csvfile) oppretter et forfatterobjekt for å skrive til CSV-en.
- skriverad(felt) skriver overskriftsraden til filen.
- Writerows (rader) skriver alle datarader til CSV-en samtidig.
Skrive en ordbok til en CSV-fil
For å skrive en ordbok til en CSV-fil konverteres filobjektet (csvfile) til et DictWriter-objekt. Detaljert eksempel med forklaring og kode er gitt nedenfor.
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 )
Produksjon
csv-fil Tenk på at en CSV-fil ser slik ut i ren tekst:
universitetsrekord Forklaring:
- med åpen(...) åpner filen trygt ved hjelp av en kontekstbehandling.
- csv.DictWriter(... ) tilordner ordboknøkler til CSV-kolonner.
- skrivehode() skriver kolonneoverskrifter.
- Writerows (mydict) skriver alle ordbøker som CSV-rader.
Lese CSV-filer med pandaer
Vi kan lese en Python CSV filer med Pandaer som bruker pandas.read_csv() funksjon. Her er et eksempel:
Anta at vi har en ansatte.csv-fil og innholdet i den vil være:
navnavdelingbursdag_måned
John SmithHR juli
Alice Johnson I oktober
Bob WilliamsFinansJanuar
I dette eksemplet leser pd.read_csv() CSV-filen inn i en Pandas DataFrame. Den resulterende DataFrame kan brukes til ulike datamanipulasjons- og analyseoppgaver.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Produksjon:
navneavdeling bursdag_måned
0 John Smith HR juli
1 Alice Johnson IT oktober
2 Bob Williams finans januar
Vi kan få tilgang til spesifikke kolonnefiltreringsdata og utføre ulike operasjoner ved å bruke pandas DataFrame-funksjonalitet. For eksempel hvis vi ønsker å få tilgang til 'navn'-kolonnen, kan vi bruke df['navn'].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Produksjon :
0 John Smith
1 Alice Johnson
2 Bob Williams
Navn: navn dtype: objekt
Skrive CSV-filer med pandaer
Vi kan bruke Pandas til å skrive CSV-filer. Det kan gjøres ved å bruke pd.DataFrame() funksjon. I dette eksemplet Pandaer bibliotek brukes til å konvertere en liste over ordbøker (mydict) til en DataFrame som representerer tabelldata. DataFrame skrives deretter til en Python CSV-fil kalt 'output.csv' ved å bruke to_csv-metoden for å lage en strukturert og lesbar datafil for videre analyse eller deling.
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 )
Utdata CSV-fil:
branchcgpanameår
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5 Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Lagre e-poster i CSV-filer
Vi starter med å importere csv-modulen og bruker den til å lagre navn og e-post som kommadelte verdier. Ved å bruke open()-funksjonen lager vi en CSV-fil og skriver deretter hver rad ved å bruke et writer-objekt med separate kolonner for navn og e-post.
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 )
Produksjon:
E-post i csv Lag quiz