A CSV-fil (Comma Separated Values). är en vanlig textfil där varje rad representerar en datapost och fält inom varje post separeras med kommatecken. Det används ofta för kalkylblad och databaser på grund av dess enkelhet och läsbarhet.
Nedan är några operationer som vi utför när vi arbetar med Python CSV-filer i Python
Läser en CSV-fil
Läsning från en CSV-fil görs med hjälp av reader-objektet. CSV-filen öppnas som en textfil med Pythons inbyggda open()-funktion som returnerar ett filobjekt. I det här exemplet öppnar vi först CSV-filen i READ-läge. Filobjektet konverteras till csv.reader-objektet och ytterligare operation sker. Kod och detaljerad förklaring ges nedan.
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('nFirst 5 rows are:n') for row in rows[:5]: for col in row: print('%10s' % col end=' ') print('n')
Produktion
Ovanstående exempel använder en CSV-fil aapl.csv som kan laddas ner från här .
Förklaring:
- med öppen(...) öppnar CSV-filen i läsläge på ett säkert sätt med hjälp av en kontexthanterare.
- csv.reader(csvfile) omvandlar filen till ett CSV-läsarobjekt.
- nästa(csvreader) extraherar den första raden som kolumnrubriker.
- Slinga igenom csvreader för att lägga till varje rad (som en lista) till rader.
- Skriv ut totala radrubriker och första 5 datarader i en formaterad vy.
Läsa CSV-filer i en ordbok med csv
Vi kan läsa in en CSV-fil i en ordbok med hjälp av csv-modulen i Python och klassen csv.DictReader. Här är ett exempel:
Anta att vi har en anställda.csv fil och innehåll i den kommer att vara:
namndepartmentbirthday_month
John SmithHR juli
Alice Johnson I oktober
Bob Williams Ekonomi januari
Exempel: Detta läser varje rad som en ordbok (rubriker som nycklar) och lägger sedan till den i listan .
Pythonimport 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': 'januari'}
Förklaring:
hur fungerar en dator
- med öppen(...) öppnar filen med en kontexthanterare.
- csv.DictReader(fil) läser varje rad som en ordbok med rubriker som nycklar.
- data_list.append(row) lagrar varje ordbok i en lista.
Skriver till en CSV-fil
För att skriva till en CSV-fil öppnar vi först CSV-filen i WRITE-läge. Filobjektet konverteras till csv.writer-objekt och ytterligare operationer sker. Kod och detaljerad förklaring ges nedan.
Pythonimport 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
Förklaring:
- fält definierar kolumnrubriker och rader innehåller data som en lista med listor.
- med öppen(... 'w') öppnar filen i skrivläge med hjälp av en kontexthanterare.
- csv.writer(csvfile) skapar ett skribentobjekt för att skriva till CSV.
- Writerow(fields) skriver rubrikraden till filen.
- Writerows (rader) skriver alla datarader till CSV på en gång.
Skriva en ordbok till en CSV-fil
För att skriva en ordbok till en CSV-fil konverteras filobjektet (csvfile) till ett DictWriter-objekt. Detaljerat exempel med förklaring och kod ges nedan.
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-filTänk på att en CSV-fil ser ut så här i vanlig text:
universitetsrekordFörklaring:
- med öppen(...) öppnar filen säkert med en kontexthanterare.
- csv.DictWriter(... ) mappar ordboksnycklar till CSV-kolumner.
- skrivhuvud() skriver kolumnrubriker.
- Writerows (mydict) skriver alla ordböcker som CSV-rader.
Läser CSV-filer med pandor
Vi kan läsa en Python CSV filer med Pandas som använder pandas.read_csv() fungera. Här är ett exempel:
Anta att vi har en anställda.csv-fil och innehållet i den kommer att vara:
namndepartmentbirthday_month
John SmithHR juli
Alice Johnson I oktober
Bob Williams Ekonomi januari
I det här exemplet läser pd.read_csv() CSV-filen till en Pandas DataFrame. Den resulterande DataFrame kan användas för olika datamanipulerings- och analysuppgifter.
Pythonimport pandas as pd # Read the CSV file into a DataFrame df = pd.read_csv('employees.csv') # Display the DataFrame print(df)
Produktion:
namnavdelning födelsedag_månad
0 John Smith HR juli
1 Alice Johnson IT oktober
2 Bob Williams Finans januari
Vi kan komma åt specifika kolumner filtrera data och utföra olika operationer med pandas DataFrame-funktionalitet. Om vi till exempel vill komma åt kolumnen 'namn' kan vi använda df['namn'].
Python# Access the 'name' column names = df['name'] print(names)
Produktion :
vad är undantagshantering i java
0 John Smith
1 Alice Johnson
2 Bob Williams
Namn: namn dtype: objekt
Skriva CSV-filer med Pandas
Vi kan använda Pandas för att skriva CSV-filer. Det kan göras genom att använda pd.DataFrame() fungera. I det här exemplet Pandas bibliotek används för att konvertera en lista med ordböcker (mydict) till en DataFrame som representerar tabelldata. DataFrame skrivs sedan till en Python CSV-fil med namnet 'output.csv' med hjälp av to_csv-metoden som skapar en strukturerad och läsbar datafil för vidare analys eller delning.
Pythonimport 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:
branchcgpanameyear
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Lagra e-postmeddelanden i CSV-filer
Vi börjar med att importera csv-modulen och använder den för att lagra namn och e-postmeddelanden som kommaseparerade värden. Med funktionen open() skapar vi en CSV-fil och skriver sedan varje rad med hjälp av ett writer-objekt med separata kolumner för namn och 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)
Produktion:
E-post i csv Skapa frågesport