Как читать CSV-файл в Python | Чтение и запись файлов CSV
Что такое CSV-файл?
CSV-файл представляет собой обычный текстовый файл простого типа, в котором используется определенная структура для организации табличных данных. Стандартный формат CSV-файла определяется данными строк и столбцов, где символ новой строки завершает каждую строку, чтобы начать следующую строку, а каждый столбец внутри строки отделяется запятой.
CSV является распространенным форматом для обмена данными, поскольку он компактен, прост и универсален. Многие онлайн-сервисы позволяют своим пользователям экспортировать табличные данные с веб-сайта в файл CSV. Файлы CSV открываются в Excel, и почти во всех базах данных есть инструмент, позволяющий импортировать файлы CSV.
Из этого руководства вы узнаете:
- Что такое CSV-файл?
- Образец файла CSV
- Модуль Python CSV
- Функции модуля CSV
- Как прочитать файл CSV в Python
- Как прочитать CSV-файл в словарь на Python
- Как написать файл CSV в Python
- Чтение CSV-файла с помощью Pandas
- Записать файл CSV с помощью Pandas
Пример файла CSV
Данные в виде таблиц также называются CSV (значения, разделенные запятыми) — буквально «значения, разделенные запятыми». Это текстовый формат, предназначенный для представления табличных данных. Каждая строка файла является одной строкой таблицы. Значения отдельных столбцов разделяются символом-разделителем – запятой (,), точкой с запятой (;) или другим символом. CSV легко читается и обрабатывается Python.
Рассмотрим следующую таблицу
Данные таблицы
Язык программирования | Разработано | Появился | Расширение |
---|---|---|---|
Питон | Гвидо ван Россум | 1991 | .py |
Java | Джеймс Гослинг | 1995 | .java |
С++ | Бьерн Страуструп | 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 в Python
Ниже приведены шаги для чтения файла CSV в Python.
Шаг 1) Чтобы прочитать данные из CSV-файлов, вы должны использовать функцию чтения для создания объекта чтения.
Функция чтения разработана так, чтобы брать каждую строку файла и составлять список всех столбцов. Затем вам нужно выбрать столбец, для которого вы хотите получить переменные данные.
Звучит намного сложнее, чем есть на самом деле. Давайте посмотрим на этот код Python для чтения CSV-файла, и мы обнаружим, что работать с CSV-файлом не так уж и сложно.
#import necessary modules import csv with open('X:\data.csv','rt')as f: data = csv.reader(f) for row in data: print(row)
Шаг 2) Когда вы выполните приведенную выше программу, вывод будет таким:
['Programming language; Designed by; Appeared; Extension'] ['Python; Guido van Rossum; 1991; .py'] ['Java; James Gosling; 1995; .java'] ['C++; Bjarne Stroustrup;1983;.cpp']
Как прочитать файл CSV в словарь на Python
Вы также можете использовать DictReader для чтения файлов CSV. Результаты интерпретируются как словарь, в котором строка заголовка является ключом, а остальные строки являются значениями.
Рассмотрим следующий код
#import necessary modules import csv reader = 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 в Python
Вот как написать файл CSV в Python:
Когда у вас есть набор данных, которые вы хотели бы сохранить в CSV-файле, вы должны использовать функцию Writer(). Чтобы перебирать данные по строкам (строкам), вы должны использовать функцию writerow().
Рассмотрим следующий пример. Мы записываем данные в файл «writeData.csv», где разделителем является апостроф.
#import necessary modules import csv with open('X:\writeData.csv', mode='w') as file: writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) #way to write to csv file writer.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, Extension Python, Guido van Rossum, 1991, .py Java, James Gosling, 1995, .java C++, Bjarne Stroustrup,1983,.cpp
Чтение CSV-файла с помощью Pandas
Pandas — это библиотека с открытым исходным кодом, которая позволяет импортировать CSV в Python и выполнять манипуляции с данными. Панды предоставляют простой способ создания, обработки и удаления данных.
Вы должны установить библиотеку pandas с помощью команды pip install pandas
. В Windows вы выполните эту команду в командной строке, а в Linux — в терминале.
Чтение CSV в DataFrame pandas выполняется очень быстро и легко:
#import necessary modules import pandas result = pandas.read_csv('X:\data.csv') print(result)
Результат чтения примера CSV Pandas:
Programming language, Designed by, Appeared, Extension 0 Python, Guido van Rossum, 1991, .py 1 Java, James Gosling, 1995, .java 2 C++, Bjarne Stroustrup,1983,.cpp
Очень полезная библиотека. Всего за три строки кода вы получите тот же результат, что и раньше. Pandas знает, что первая строка CSV содержит имена столбцов, и будет использовать их автоматически.
Записать файл CSV с помощью Pandas
Запись в CSV-файл с помощью Pandas так же проста, как и чтение. Здесь вы можете в этом убедиться. Сначала вы должны создать DataFrame на основе следующего кода Python для записи в CSV.
from pandas import DataFrame C = {'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 stored print (df)
Вот результат
Programming language, Designed by, Appeared, Extension 0 Python, Guido van Rossum, 1991, .py 1 Java, James Gosling, 1995, .java 2 C++, Bjarne Stroustrup,1983,.cpp
И файл CSV создается в указанном месте.
Заключение
Итак, теперь вы знаете, как использовать метод csv, а также читать и записывать данные в формате CSV. Файлы CSV широко используются в программных приложениях, поскольку их легко читать и ими легко управлять, а их небольшой размер делает их относительно быстрыми для обработки и передачи.
Модуль csv предоставляет различные функции и классы, которые позволяют легко читать и писать. Вы можете посмотреть официальную документацию Python и найти еще несколько интересных советов и модулей. CSV — лучший способ для сохранения, просмотра и отправки данных. На самом деле, научиться этому не так сложно, как кажется вначале. Но немного потренировавшись, вы справитесь с этим.
Pandas — отличная альтернатива чтению CSV-файлов.
Кроме того, есть и другие способы анализа текстовых файлов с помощью таких библиотек, как ANTLR, PLY и PlyPlus. Все они могут выполнять сложный синтаксический анализ, и если простые манипуляции со строками не работают, вы можете использовать регулярные выражения.
Python
- Ключевые слова и идентификаторы Python
- Оператор Python, отступы и комментарии
- Переменные Python, константы и литералы
- Преобразование типов Python и приведение типов
- Ввод, вывод и импорт Python
- Глобальные, локальные и нелокальные переменные Python
- Файловый ввод-вывод Python
- Управление каталогами и файлами Python
- Ошибки Python и встроенные исключения
- Как получить текущую дату и время в Python?