Чтение и запись файлов CSV на Python с использованием модуля CSV & Панды

Содержание:

Anonim

Что это за файл CSV?

Файл CSV - это тип простого текстового файла, в котором используется определенная структура для упорядочивания табличных данных. CSV - это распространенный формат для обмена данными, поскольку он компактен, прост и универсален. Многие онлайн-сервисы позволяют пользователям экспортировать табличные данные с веб-сайта в файл CSV. Файлы CSV открываются в Excel, и почти во всех базах данных есть инструмент, позволяющий импортировать из файла CSV. Стандартный формат определяется данными строк и столбцов. Более того, каждая строка заканчивается новой строкой, чтобы начать следующую строку. Также внутри строки каждый столбец разделяется запятой.

В этом руководстве вы узнаете:

  • Что это за файл CSV?
  • Образец файла CSV.
  • Модуль Python CSV
  • Функции модуля CSV
  • Чтение файлов CSV
  • Чтение как словарь
  • Запись в файлы CSV
  • Чтение файлов CSV с помощью Pandas
  • Запись в файлы CSV с помощью Pandas

Образец файла CSV.

Данные в виде таблиц также называются CSV (значения, разделенные запятыми) - буквально «значения, разделенные запятыми». Это текстовый формат, предназначенный для представления табличных данных. Каждая строка файла - это одна строка таблицы. Значения отдельных столбцов разделяются символом-разделителем - запятой (,), точкой с запятой (;) или другим символом. CSV может быть легко прочитан и обработан Python.

Рассмотрим следующую Табе

Табличные данные

Язык программирования Разработано Появившийся Расширение
Python Гвидо ван Россум 1991 г. .py
Ява Джеймс Гослинг 1995 г. .Ява
C ++ Бьярне Страуструп 1983 г. .cpp

Вы можете представить эту таблицу в формате CSV, как показано ниже.

Данные CSV

Язык программирования, Разработано, Появился, Расширение

Python, Гвидо ван Россум, 1991, .py

Java, Джеймс Гослинг, 1995, .java

C ++, Бьярн Страуструп, 1983, .cpp

Как видите, каждая строка представляет собой новую строку, а каждый столбец разделяется запятой. Это пример того, как выглядит файл CSV.

Скачать данные CSV

Модуль Python CSV

Python предоставляет модуль CSV для обработки файлов CSV. Чтобы читать / писать данные, вам нужно пройти по строкам CSV. Вам нужно использовать метод разделения для получения данных из указанных столбцов.

Функции модуля CSV

В документации модуля CSV вы можете найти следующие функции:

  • csv.field_size_limit - вернуть максимальный размер поля
  • csv.get_dialect - получить диалект, связанный с именем
  • csv.list_dialects - показать все зарегистрированные диалекты
  • csv.reader - читать данные из файла csv
  • csv.register_dialect - связать диалект с именем
  • csv.writer - записывает данные в файл csv
  • csv.unregister_dialect - удалить диалект, связанный с именем из реестра диалектов
  • csv.QUOTE_ALL - цитировать все, независимо от типа.
  • csv.QUOTE_MINIMAL - Цитировать поля специальными символами
  • csv.QUOTE_NONNUMERIC - Цитировать все поля, не являющиеся числовыми значениями
  • csv.QUOTE_NONE - ничего не цитировать в выводе

В этом руководстве мы сосредоточимся только на функциях чтения и записи, которые позволяют редактировать, изменять и манипулировать данными в файле CSV.

Как читать файл CSV

Чтобы читать данные из файлов CSV, вы должны использовать функцию чтения для создания объекта чтения.

Функция чтения разработана так, чтобы брать каждую строку файла и составлять список всех столбцов. Затем вам нужно выбрать столбец, для которого вы хотите получить переменные данные.

Это звучит намного сложнее, чем есть на самом деле. Давайте посмотрим на этот пример, и мы обнаружим, что работать с CSV файлом не так уж и сложно.

#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)

Когда вы выполните указанную выше программу, результат будет:

['Programming language; Designed by; Appeared; Extension']['Python; Guido van Rossum; 1991; .py']['Java; James Gosling; 1995; .java']['C++; Bjarne Stroustrup;1983;.cpp']

Как читать CSV как словарь

Вы также можете использовать DictReader для чтения файлов CSV. Результаты интерпретируются как словарь, в котором строка заголовка является ключом, а другие строки - значениями.

Рассмотрим следующий код

#import necessary modulesimport csvreader = csv.DictReader(open("file2.csv"))for raw in reader:print(raw)

Результат этого кода:

OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')])OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')])OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])

И этот способ читать данные из файла CSV намного проще, чем предыдущий метод. Однако это не лучший способ чтения данных.

Как написать файл CSV

Когда у вас есть набор данных, которые вы хотите сохранить в файле CSV, вам нужно использовать функцию writer (). Чтобы перебирать данные по строкам (строкам), вы должны использовать функцию writerow ().

Рассмотрим следующий пример. Мы записываем данные в файл «writeData.csv», где разделителем является апостроф.

#import necessary modulesimport csvwith open('X:\writeData.csv', mode='w') as file:writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)#way to write to csv filewriter.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])writer.writerow(['Python', 'Guido van Rossum', '1991', '.py'])writer.writerow(['Java', 'James Gosling', '1995', '.java'])writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])

Результат в файле csv:

Programming language, Designed by, Appeared, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp

Чтение файлов CSV с помощью Pandas

Pandas - это библиотека с открытым исходным кодом, которая позволяет выполнять манипуляции с данными в Python. Панды предоставляют простой способ создавать, обрабатывать и удалять данные.

Вы должны установить библиотеку pandas с помощью команды pip install pandas . В Windows вы выполните эту команду в командной строке, а в Linux - в Терминале.

Чтение CSV в pandas DataFrame очень быстро и легко:

#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)

Результат:

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp 

Очень полезная библиотека. Всего за три строчки кода вы получите тот же результат, что и раньше. Pandas знает, что первая строка CSV содержит имена столбцов, и будет использовать их автоматически.

Запись в файлы CSV с помощью Pandas

Запись в файл CSV с помощью Pandas так же проста, как и чтение. Здесь вы можете убедиться в этом. Сначала вы должны создать DataFrame на основе следующего кода.

from pandas import DataFrameC = {'Programming language': ['Python','Java', 'C++'],'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],'Appeared': ['1991', '1995', '1985'],'Extension': ['.py', '.java', '.cpp'],}df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension'])export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be storedprint (df)

Вот результат

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp

И файл CSV создается в указанном месте.

Вывод

Итак, теперь вы знаете, как использовать метод csv, а также читать и записывать данные в формате CSV. Файлы CSV широко используются в программных приложениях, поскольку их легко читать и управлять, а их небольшой размер делает их относительно быстрыми для обработки и передачи.

Модуль csv предоставляет различные функции и классы, которые позволяют легко читать и писать. Вы можете посмотреть официальную документацию Python и найти еще несколько интересных советов и модулей. CSV - лучший способ сохранять, просматривать и отправлять данные. На самом деле, это не так сложно выучить, как кажется вначале. Но немного попрактиковавшись, вы справитесь с этим.

Pandas - отличная альтернатива чтению файлов CSV.

Кроме того, есть другие способы синтаксического анализа текстовых файлов с помощью таких библиотек, как ANTLR, PLY и PlyPlus. Все они могут обрабатывать тяжелый синтаксический анализ, и если простые манипуляции со строками не работают, есть регулярные выражения, которые вы можете использовать.