Робота з файлами csv на Python
А Файл CSV (значення, розділені комами). це простий текстовий файл, у якому кожен рядок представляє запис даних, а поля в кожному записі розділені комами. Він зазвичай використовується для електронних таблиць і баз даних через його простоту та читабельність.
Нижче наведено деякі операції, які ми виконуємо під час роботи з CSV-файлами Python у Python
Читання файлу CSV
Читання з файлу CSV здійснюється за допомогою об’єкта reader. Файл CSV відкривається як текстовий файл за допомогою вбудованої в Python функції open(), яка повертає об’єкт файлу. У цьому прикладі ми спочатку відкриваємо файл CSV у режимі READ, а об’єкт файлу перетворюється на об’єкт csv.reader і виконується подальша операція. Код і детальне пояснення наведено нижче.
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 ' )
Вихід
У наведеному вище прикладі використовується файл CSV aapl.csv який можна завантажити з тут .
Пояснення:
- з відкритим (...) безпечно відкриває файл CSV у режимі читання за допомогою менеджера контексту.
- csv.reader(csvфайл) перетворює файл на об’єкт читача CSV.
- далі (csvreader) виділяє перший рядок як заголовки стовпців.
- Прокрутити csvreader щоб додати кожен рядок (як список) до рядків.
- Надрукувати загальні заголовки рядків і перші 5 рядків даних у форматованому поданні.
Читання файлів CSV у словнику за допомогою csv
Ми можемо прочитати файл CSV у словник за допомогою модуля csv у Python і класу csv.DictReader. Ось приклад:
Припустимо, ми маємо a співробітники.csv файл і вміст у ньому будуть:
назва відділу день народження_місяць
Джон СмітHRЛипень
Аліса Джонсон Жовтень
Боб ВільямсФінансиСічень
приклад: Це зчитує кожен рядок як словник (заголовки як ключі), а потім додає його до списку.
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 )
Вихід:
{'name': 'Джон Сміт' 'department': 'HR' 'birthday_month': 'липень'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'жовтень'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'січень'}
Пояснення:
- з відкритим (...) відкриває файл за допомогою контекстного менеджера.
- csv.DictReader(файл) читає кожен рядок як словник, використовуючи заголовки як ключі.
- data_list.append(рядок) зберігає кожен словник у списку.
Запис у файл CSV
Щоб записати у файл CSV, ми спочатку відкриваємо файл CSV у режимі WRITE. Файловий об’єкт перетворюється на об’єкт csv.writer і виконуються подальші операції. Код і детальне пояснення наведено нижче.
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
Пояснення:
- поля визначає заголовки стовпців, а рядки містять дані у вигляді списку списків.
- з відкрити (... 'w') відкриває файл у режимі запису за допомогою менеджера контексту.
- csv.writer(csvфайл) створює об’єкт запису для запису в CSV.
- writerow(поля) записує рядок заголовка у файл.
- writerows(рядки) записує всі рядки даних у CSV одночасно.
Запис словника у файл CSV
Щоб записати словник у файл CSV, об’єкт файлу (csvfile) перетворюється на об’єкт DictWriter. Детальний приклад із поясненням і кодом наведено нижче.
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 )
Вихід
файл csv Припустімо, що файл CSV у звичайному тексті виглядає так:
університетський рекорд Пояснення:
- з відкритим (...) безпечно відкриває файл за допомогою контекстного менеджера.
- csv.DictWriter(... ) зіставляє ключі словника зі стовпцями CSV.
- writeheader() записує заголовки стовпців.
- writerows(mydict) записує всі словники як рядки CSV.
Читання файлів CSV за допомогою Pandas
Ми можемо прочитати а Python CSV файли з використанням Pandas pandas.read_csv() функція. Ось приклад:
Припустімо, що у нас є файл employee.csv і вміст у ньому буде таким:
назва відділу день народження_місяць
Джон СмітHRЛипень
Аліса Джонсон Жовтень
Боб ВільямсФінансиСічень
У цьому прикладі pd.read_csv() читає файл CSV у Pandas DataFrame. Отриманий DataFrame можна використовувати для різних завдань обробки та аналізу даних.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Вихід:
назва відділу день народження_місяць
0 Джон Сміт HR Лип
1 Еліс Джонсон IT Жовтень
2 Боб Вільямс Фінанси січень
Ми можемо отримати доступ до даних фільтрації певних стовпців і виконувати різні операції за допомогою функціональності pandas DataFrame. Наприклад, якщо ми хочемо отримати доступ до стовпця 'name', ми можемо використати df['name'].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Вихід :
0 Джон Сміт
1 Еліс Джонсон
2 Боб Вільямс
Ім'я: ім'я dtype: об'єкт
Запис файлів CSV за допомогою Pandas
Ми можемо використовувати Pandas для запису файлів CSV. Це можна зробити за допомогою pd.DataFrame() функція. У цьому прикладі панди Бібліотека використовується для перетворення списку словників (mydict) у DataFrame, що представляє табличні дані. Потім DataFrame записується у файл Python CSV під назвою «output.csv» за допомогою методу to_csv, створюючи структурований і читабельний файл даних для подальшого аналізу або спільного використання.
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 )
Вихідний файл CSV:
філіяcgpanameyear
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Пратік3
EP9.1Sahil2
Зберігання електронних листів у файлах CSV
Ми починаємо з імпортування модуля csv і використовуємо його для зберігання імен і електронних адрес у вигляді значень, розділених комами. Використовуючи функцію open(), ми створюємо файл CSV, а потім записуємо кожен рядок за допомогою об’єкта запису з окремими стовпцями для імен та електронних адрес.
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 )
Вихід:
Електронні листи в csv Створіть вікторину