Arbejder med csv-filer i Python
EN CSV-fil (Comma Separated Values). er en almindelig tekstfil, hvor hver linje repræsenterer en datapost, og felter inden for hver post er adskilt med kommaer. Det er almindeligt brugt til regneark og databaser på grund af dets enkelhed og læsbarhed.
Nedenfor er nogle handlinger, som vi udfører, mens vi arbejder med Python CSV-filer i Python
Læser en CSV-fil
Læsning fra en CSV-fil sker ved hjælp af reader-objektet. CSV-filen åbnes som en tekstfil med Pythons indbyggede open() funktion, som returnerer et filobjekt. I dette eksempel åbner vi først CSV-filen i READ-tilstand. Filobjektet konverteres til csv.reader-objektet og yderligere betjening finder sted. Kode og detaljeret forklaring er givet 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 ' )
Produktion
Ovenstående eksempel bruger en CSV-fil aapl.csv som kan downloades fra her .
Forklaring:
- med åben(...) åbner CSV-filen i læsetilstand sikkert ved hjælp af en konteksthåndtering.
- csv.reader(csvfil) gør filen til et CSV-læserobjekt.
- næste(csvreader) udtrækker den første række som kolonneoverskrifter.
- Sløjfe igennem csvreader at tilføje hver række (som en liste) til rækker.
- Udskriv de samlede rækkeoverskrifter og de første 5 datarækker i en formateret visning.
Læsning af CSV-filer i en ordbog med csv
Vi kan læse en CSV-fil ind i en ordbog ved hjælp af csv-modulet i Python og klassen csv.DictReader. Her er et eksempel:
Antag, at vi har en medarbejdere.csv fil og indhold i den vil være:
navnafdeling fødselsdag_måned
John SmithHR juli
Alice Johnson I oktober
Bob WilliamsFinansJanuar
Eksempel: Dette læser hver række som en ordbog (overskrifter som nøgler) og føjer den derefter til 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 )
Produktion:
{'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 åben(...) åbner filen ved hjælp af en konteksthåndtering.
- csv.DictReader(fil) læser hver række som en ordbog med overskrifter som nøgler.
- data_list.append(row) gemmer hver ordbog på en liste.
Skrivning til en CSV-fil
For at skrive til en CSV-fil åbner vi først CSV-filen i WRITE-tilstand. Filobjektet konverteres til csv.writer-objekt, og yderligere handlinger finder sted. Kode og detaljeret forklaring er givet 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:
- felter definerer kolonneoverskrifterne og rækker indeholder dataene som en liste over lister.
- med åben(... 'w') åbner filen i skrivetilstand ved hjælp af en konteksthåndtering.
- csv.writer(csvfil) opretter et skribentobjekt til at skrive til CSV'en.
- skriverække(felter) skriver overskriftsrækken til filen.
- Writerows (rækker) skriver alle datarækker til CSV'en på én gang.
Skrivning af en ordbog til en CSV-fil
For at skrive en ordbog til en CSV-fil konverteres filobjektet (csvfile) til et DictWriter-objekt. Detaljeret eksempel med forklaring og kode er givet 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 )
Produktion
csv-fil Overvej, at en CSV-fil ser sådan ud i almindelig tekst:
universitetsrekord Forklaring:
- med åben(...) åbner filen sikkert ved hjælp af en konteksthåndtering.
- csv.DictWriter(... ) knytter ordbogsnøgler til CSV-kolonner.
- skrivehoved() skriver kolonneoverskrifter.
- Writerows (mydict) skriver alle ordbøger som CSV-rækker.
Læsning af CSV-filer med pandaer
Vi kan læse en Python CSV filer med Pandaer ved hjælp af pandas.read_csv() fungere. Her er et eksempel:
Antag, at vi har en ansatte.csv-fil, og indholdet i den vil være:
navnafdeling fødselsdag_måned
John SmithHR juli
Alice Johnson I oktober
Bob WilliamsFinansJanuar
I dette eksempel læser pd.read_csv() CSV-filen ind i en Pandas DataFrame. Den resulterende DataFrame kan bruges til forskellige datamanipulations- og analyseopgaver.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Produktion:
navn afdeling fødselsdag_måned
0 John Smith HR juli
1 Alice Johnson IT oktober
2 Bob Williams Finans januar
Vi kan få adgang til specifikke kolonnefiltreringsdata og udføre forskellige operationer ved hjælp af pandas DataFrame-funktionalitet. For eksempel, hvis vi ønsker at få adgang til kolonnen 'navn', kan vi bruge df['navn'].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Produktion :
0 John Smith
2 Bob Williams
Navn: navn dtype: objekt
Skrivning af CSV-filer med pandaer
Vi kan bruge Pandas til at skrive CSV-filer. Det kan gøres ved at bruge pd.DataFrame() fungere. I dette eksempel Pandaer bibliotek bruges til at konvertere en liste over ordbøger (mydict) til en DataFrame, der repræsenterer tabeldata. DataFrame skrives derefter til en Python CSV-fil med navnet 'output.csv' ved hjælp af to_csv-metoden, hvilket skaber en struktureret og læsbar datafil til yderligere 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 )
COE9.0Nikhil2
COE9.1Sanchit2
SE9.5 Sagar1
Lagring af e-mails i CSV-filer
Vi starter med at importere csv-modulet og bruger det til at gemme navne og e-mails som kommaseparerede værdier. Ved at bruge funktionen open() opretter vi en CSV-fil og skriver derefter hver række ved hjælp af et writer-objekt med separate kolonner til navne og e-mails.
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 )
Produktion:
E-mails i csv Opret quiz