Работа с csv файлове в Python

Работа с csv файлове в Python

А CSV (стойности, разделени със запетая) файл е обикновен текстов файл, където всеки ред представлява запис с данни и полетата във всеки запис са разделени със запетаи. Обикновено се използва за електронни таблици и бази данни поради своята простота и четливост.

По-долу са някои операции, които извършваме, докато работим с Python CSV файлове в Python

Четене на CSV файл

Четенето от CSV файл се извършва с помощта на обекта reader. CSV файлът се отваря като текстов файл с вградената функция open() на Python, която връща файлов обект. В този пример първо отваряме 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 файлове в Python

Горният пример използва 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': 'Боб Уилямс' 'department': 'Финанси' '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(csvfile) създава обект за писане за запис в CSV.
  • запис на ред (полета) записва заглавния ред във файла.
  • 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 файлове в Pythoncsv файл

Помислете, че CSV файл изглежда така в обикновен текст:

университетски рекордуниверситетски рекорд

Обяснение:

  • с отворен (...) отваря файл безопасно с помощта на контекстен мениджър.
  • csv.DictWriter(... ) картографира речникови ключове към CSV колони.
  • writeheader() записва заглавки на колони.
  • writerows(mydict) записва всички речници като CSV редове.

Четене на CSV файлове с Pandas

Можем да прочетем а Python CSV файлове с използване на Pandas pandas.read_csv() функция. Ето един пример:

Да предположим, че имаме файл zaposlenih.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 Alice Johnson IT октомври
2 Боб Уилямс Финанси януари

Можем да имаме достъп до данни за филтриране на конкретни колони и да извършваме различни операции, използвайки функционалността на pandas DataFrame. Например, ако искаме да имаме достъп до колоната „име“, можем да използваме df[„име“].

Python
   # Access the 'name' column   names   =   df  [  'name'  ]   print  (  names  )   

Изход :

0 Джон Смит
1 Алис Джонсън
2 Боб Уилямс
Име: име dtype: обект

Писане на CSV файлове с Pandas

Можем да използваме Pandas за писане на CSV файлове. Може да се направи с помощта на pd.DataFrame() функция. В този пример, панди библиотеката се използва за преобразуване на списък от речници (mydict) в DataFrame, представяща таблични данни. След това DataFrame се записва в CSV файл на Python, наречен „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.8Prateek3
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Имейли в csv Създаване на тест