Обработка CSV-файлов в Python: чтение, запись и анализ данных

Файлы формата CSV (comma-separated values) широко используются для хранения табличных данных. В этой статье мы рассмотрим возможности языка Python для работы с такими файлами - чтения, записи, анализа и визуализации данных.

Часть 1. Основы формата CSV и чтение файлов

Давайте для начала разберемся, что такое CSV файл и какова его структура.

Дорожная развязка напоминает структуру CSV файла

Определение формата CSV

CSV (comma separated values) - текстовый формат, предназначенный для представления табличных данных. Каждая строка в CSV файле соответствует одной записи или строке таблицы. Столбцы разделяются специальными символами, чаще всего запятыми или точками с запятой, отсюда и название.

Несмотря на простоту, CSV позволяет хранить большие объемы данных, которые легко обрабатывать программно. CSV файлы можно открывать и редактировать в электронных таблицах, импортировать в базы данных.

Аналитик радуется результатам анализа CSV файла

Структура CSV файла

В общем виде CSV файл имеет следующую структуру:

  • Первая строка может содержать заголовки столбцов.
  • Каждая последующая строка - данные одной записи.
  • Значения разделяются символом-разделителем, чаще всего запятой или точкой с запятой.
  • Текстовые значения можно заключать в кавычки.
  • Строки разделяются символами перевода строки.

Ниже пример CSV файла:

 Имя,Возраст,Город Иван,23,Москва Мария,18,Санкт-Петербург 

Преимущества и недостатки формата

Главные преимущества CSV:

  • Простота формата.
  • Удобство обработки и импорта в другие приложения.
  • Возможность хранить большие объемы данных.
  • Легкая читаемость и понимание структуры.

К недостаткам можно отнести:

  • Отсутствие стандарта - разные приложения используют разные настройки.
  • Текстовый формат - неэффективен для бинарных данных.
  • Ограниченные возможности верификации и валидации.

Сферы применения CSV

Формат CSV часто применяют:

  • Для импорта и экспорта данных из табличных баз и электронных таблиц.
  • В качестве промежуточного формата обмена данными между приложениями.
  • Для публикации открытых данных.
  • В задачах машинного обучения.

Загрузка модуля csv в Python

Для работы с CSV в Python есть встроенный модуль csv. Чтобы начать использовать его, нужно импортировать:

 import csv 

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

Функция csv.reader для чтения данных

Основная функция для чтения CSV - csv.reader(). Она принимает файловый объект и возвращает объект-итератор, построчно читающий данные.

Пример использования:

 import csv with open('data.csv') as f: reader = csv.reader(f) for row in reader: print(row) 

Здесь мы открываем CSV файл и передаем его в reader. Затем в цикле обрабатываем каждую строку.

Использование reader в цикле и индексация результатов

Каждая строка, возвращаемая reader - это список значений. К ним можно обращаться как к элементам списка:

 for row in reader: print(row[0]) # первый столбец 

Также строки можно индексировать и в обратном направлении:

 print(row[-1]) # последний столбец 

Параметры функции reader

Функция csv.reader может принимать необязательные параметры:

  • delimiter - символ-разделитель, по умолчанию запятая
  • quotechar - символ кавычки
  • quoting - режим кавычек

Это позволяет гибко настраивать чтение CSV с разными форматами данных.

Чтение CSV в словари с классом csv.DictReader

Если нужно получить данные в виде словарей, удобно использовать класс csv.DictReader.

Пример:

 import csv with open('data.csv') as f: reader = csv.DictReader(f) for row in reader: print(row['column1']) 

В этом случае каждая строка CSV отображается в словарь с ключами, соответствующими заголовкам столбцов.

Параметры класса DictReader

Как и reader, класс DictReader принимает параметры форматирования CSV.

Также можно явно указать заголовки:

 reader = csv.DictReader(f, fieldnames=['A', 'B']) 

Это удобно, если CSV файл не содержит заголовков.

Итерирование по строкам словаря

При итерации DictReader возвращает OrderedDict, к которому можно обращаться как к обычному словарю:

 for row in reader: print(row['A'], row['B']) 

Порядок ключей сохраняется в соответствии с порядком столбцов CSV.

Выборка данных по ключам

Используя DictReader, можно легко получить список значений определенного столбца:

 values = [row['column'] for row in reader] 

А также выполнять выборку по нескольким ключам:

 result = [row for row in reader if row['column'] > 100] 

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

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.