Как открыть CSV файл в Python?

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

Как открыть CSV файл в Python?

Как читать и писать CSV-файлы в Python

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

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

Что такое файл CSV?

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

  • импорт и экспорт данных клиентов
  • импорт и экспорт продукции
  • экспорт заказов
  • экспорт аналитических отчетов по электронной коммерции

Модули для чтения и записи

Модуль CSV имеет несколько функций и классов, доступных для чтения и записи CSV, и они включают в себя:

  • функция csv.reader
  • функция csv.writer
  • класс csv.Dictwriter
  • класс csv.DictReader

csv.reader

Модуль csv.reader принимает следующие параметры:

  • csvfile : обычно это объект, который поддерживает протокол итератора и обычно возвращает строку каждый раз, когда вызывается его метод __next__() .
  • dialect=’excel’: необязательный параметр, используемый для определения набора параметров, специфичных для определенного диалекта CSV.
  • fmtparams : необязательный параметр, который можно использовать для переопределения существующих параметров форматирования.

Вот пример того, как использовать модуль csv.reader.

модуль csv.writer

Этот модуль похож на модуль csv.reader и используется для записи данных в CSV. Требуется три параметра:

  • csvfile : это может быть любой объект с методом write() .
  • dialect = ‘excel’ : необязательный параметр, используемый для определения набора параметров, специфичных для конкретного CSV.
  • fmtparam : необязательный параметр, который можно использовать для переопределения существующих параметров форматирования.

Классы DictReader и DictWriter

DictReader и DictWriter — это классы, доступные в Python для чтения и записи в CSV. Хотя они и похожи на функции чтения и записи, эти классы используют объекты словаря для чтения и записи в CSV-файлы.

DictReader

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

DictWriter

Этот класс аналогичен классу DictWriter и выполняет противоположную функцию: запись данных в файл CSV. Класс определяется как csv.DictWriter(csvfile, fieldnames,restval=», extrasaction=’raise’,dialect=’excel’, *args, **kwds)

Параметр fieldnames определяет последовательность ключей, которые определяют порядок, в котором значения в словаре записываются в файл CSV. В отличие от DictReader, этот ключ не является обязательным и должен быть определен во избежание ошибок при записи в CSV.

Диалекты и форматирование

Диалект — это вспомогательный класс, используемый для определения параметров для конкретного экземпляра reader или writer . Диалекты и параметры форматирования должны быть объявлены при выполнении функции чтения или записи.

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

  • delimiter: строка, используемая для разделения полей. По умолчанию это ‘,’ .
  • double quote: Управляет тем, как должны появляться в кавычках случаи, когда кавычки появляются внутри поля. Может быть True или False.
  • escapechar: строка, используемая автором для экранирования разделителя, если в кавычках задано значение QUOTE_NONE .
  • lineterminator: строка, используемая для завершения строк, созданных writer . По умолчанию используется значение ‘rn’ .
  • quotechar: строка, используемая для цитирования полей, содержащих специальные символы. По умолчанию это ‘»‘ .
  • skipinitialspace: Если установлено значение True , любые пробелы, следующие сразу за разделителем, игнорируются.
  • strict: если установлено значение True , возникает Error при неправильном вводе CSV.
  • quoting: определяет, когда следует создавать кавычки при чтении или записи в CSV.

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

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

Создайте свой CSV-файл и сохраните его как example.csv. Убедитесь, что он имеет расширение .csv и заполните некоторые данные. Здесь у нас есть CSV-файл, который содержит имена учеников и их оценки.

Ниже приведен код для чтения данных в нашем CSV с использованием функции csv.reader и класса csv.DictReader .

Чтение CSV-файла с помощью csv.reader

В приведенном выше коде мы импортируем модуль CSV, а затем открываем наш файл CSV в виде File . Затем мы определяем объект reader и используем метод csv.reader для извлечения данных в объект. Затем мы перебираем объект reader и извлекаем каждую строку наших данных.

Мы показываем прочитанные данные, печатая их содержимое на консоль. Мы также указали обязательные параметры, такие как разделитель, кавычка и цитирование.

Вывод

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

Как мы упоминали выше, DictWriter позволяет нам читать CSV-файл, отображая данные в словарь вместо строк, как в случае с модулем csv.reader . Хотя имя поля является необязательным параметром, важно всегда помечать столбцы для удобства чтения.

Вот как читать CSV, используя класс DictWriter.

Сначала мы импортируем модуль csv и инициализируем пустой список results , который мы будем использовать для хранения полученных данных. Затем мы определяем объект reader и используем метод csv.DictReader для извлечения данных в объект. Затем мы перебираем объект reader и извлекаем каждую строку наших данных.

Наконец, мы добавляем каждую строку в список результатов и выводим содержимое на консоль.

Вывод

Как вы можете видеть выше, лучше использовать класс DictReader, потому что он выдает наши данные в формате словаря, с которым легче работать.

Запись в файл CSV

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

Запись в файл CSV с помощью csv.writer

Код ниже записывает данные, определенные в файл example2.csv .

Сначала мы импортируем модуль csv, и функция writer() создаст объект, подходящий для записи. Чтобы перебрать данные по строкам, нам нужно использовать функцию writerows() .

Вот наш CSV с данными, которые мы записали в него.

Запись в файл CSV с использованием DictWriter

Давайте напишем следующие данные в CSV.

Код, как показано ниже.

Сначала мы определим fieldnames , которые будут представлять заголовки каждого столбца в файле CSV. Метод writerrow() будет записывать по одной строке за раз. Если вы хотите записать все данные одновременно, вы будете использовать метод writerrows() .

Вот как можно записать все строки одновременно.

Заключение

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

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

CSV в Python

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

Что такое файлы CSV

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

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

Пример CSV файла, где в качестве разделителя используется запятая:

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

Важно помнить, что CSV – это обычный текстовый файл, который не поддерживает символы в кодировках, отличающихся от ASCII или Unicode.

Библиотека CSV

Эта основная библиотека для работы с CSV файлами в Python.

Библиотека csv является встроенной, поэтому её не нужно скачивать, достаточно использовать обычный импорт:

Чтение из файлов (парсинг)

Для того чтобы прочитать данные из файла, программист должен создать объект reader:

reader имеет метод __next__() , то есть является итерируемым объектом, поэтому чтение из файла происходит следующим образом:

Читайте также  Как сохранить файл Excel на iPhone?

Предположим, что у нас есть CSV файл, который содержит следующую информацию:

Тогда, если открыть этот файл в нашей программе, то будут получены следующие результаты:

Использование конструкции with…as позволяет программисту быть уверенным, что файл будет закрыт, даже если при выполнении кода произойдет какая-то ошибка.

Библиотека CSV позволяет работать с файлами, как со словарями, для этого нужно создать объект DictReader. Обращаться к элементам можно по имени столбцов, а не с помощью индексов. Для того, чтобы исходная программа делала аналогичный вывод, её следует изменить следующим образом:

Обратите внимание, что в цикл for при первой итерации будет записан в row не шапка таблицы, а первая её строка. Поэтому при выводе количества строк переменную count увеличили на 1.

Дополнительные параметры объекта DictReader

DictReader имеет параметры:

  • dialect — Набор параметров для форматирования информации. Подробнее про них ниже.
  • line_num — Устанавливает количество строк, которое может быть прочитано.
  • fieldnames — Определяет заголовки для столбцов, если не определить атрибут, то в него запишутся элементы из первой прочитанной строки файла. Заголовки нужны для того, чтобы легко было понять, какая информация содержится или должна содержаться в столбце.

Например, если бы в classmates.csv не было бы первой строки с заголовками, то можно было бы его открыть следующим образом:

Также можно использовать метод __next__() для получения следующей строки. Этот метод делает объект reader итерируемым. То есть он вызывается при каждой итерации и возвращает следующую строку. Этот метод и используется при каждой итерации в цикле for для получения очередной строки.

Запись в файлы

Для записи информации в CSV файл необходимо создать объект writer:

Для записи в файл данных используется метод writerow(), который имеет следующий синтаксис:

Код программы для записи в CSV файл выглядит так:

После выполнения программы в файле CSV будет следующий текст:

В качестве параметра метод writerow() принимает список, элементы которого будут записаны в строку через символ-разделитель.

Запись в файл также может быть осуществлена с помощью объекта DictWriter. Важно помнить, что он требует явного указания параметра fieldnames. В качестве аргумента метода writerow используется словарь.

Код программы выглядит так:

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

Дополнительные параметры DictWriter

Объект writer также имеет атрибут dialect, который определяет, как будут форматироваться данные при записи в файл, про него будет описано ниже.

Кроме того, writer имеет методы:

  • writerows(rows) — Записывает все элементы строк.
  • writeheader() — Выводит заголовки для столбцов. Заголовки должны быть переданы объекту writer в виде списка, как атрибут fieldnames.

writeheader был использован в предыдущем примере. Рассмотрим применение writerows :

Диалекты

Чтобы каждый раз не указывать формат входных и выходных данных, определенные параметры форматирования сгруппированы в диалекты (dialect). При создании объекта reader или writer программист может указать нужный ему диалект, кроме того, некоторые параметры диалекта можно переопределить вручную, также указав их при создании объекта.

Для создания диалекта используется команда:

Класс Dialect позволяет определить следующие атрибуты форматирования:

Как работать с CSV файлами в Python на примере чтения и записи

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

Навигация по посту

  • Как устроен формат CSV
  • Чтение CSV файлов
    • Указание разделителя
    • Начальные пробелы
    • Кавычки
    • Чтение с конвертацией в словарь
    • Создание шаблона диалекта
    • Автоматическое определение параметров CSV файла
    • Чтение в pandas
  • Запись данных в CSV
    • Запись словаря
    • Запись с pandas

Как устроен формат CSV

Основное отличие формата CSV от обычного текста в его структуре, которая проявляется в разделителе. Именно из-за этого этот формат расшифровывается как ‘comma separated values’ (значения разделенные запятыми). Разделитель не всегда обязан быть в виде запятой, он может принимать и другие виды, например ‘;’. Разделители так же могут называться делимитер (delimiter). Пример того, как может выглядеть файл:

Первая строка может содержать название заголовки колонок, но это не обязательно. Так же видно, что разделители разделяют значения и из-за этого они не используются в конце строки.

Из-за простого формата CSV вам не обязательно импортировать модули. Вы можете использовать существующий функционал, который создаст данные в формате CSV, например так:

Тем не менее в модулях реализованы дополнительные возможности по анализу таких данных. Например преобразование в словарь или определение форматов (диалекта).

Чтение CSV файлов

Как уже говорилось, основной модуль уже установлен вместе с Python. Для чтения файлов используется функция ‘reader()’, которая возвращает объект для итерации. Так мы можем открыть файл в большинстве случаев:

Для каких-то ОС может понадобится открывать файл с указанием разделителя новой строки, т.е. так:

Указание разделителя

По умолчанию считается, что вы используете запятую в качестве делимитра. В моем файле, в качестве разделителя, стоит ‘;’, а файл содержит кириллицу (кириллица имеет значение на Windows). В этом случае файл читается следующим образом:

В случае Windows по умолчанию используется кодировка ‘cp1251’ и, если вы не укажете ‘UTF-8’, то может появится ошибка:

  • UnicodeDecodeError: ‘charmap’ codec can’t decode byte 0x98 in position 1: character maps to

Начальные пробелы

Со скриншота выше видно, что пробелы, в начале строки, не обрабатываются должным образом. Что бы убрать пробелы нужно указать параметр ‘skipinitialspace’:

Кавычки

CSV файл может содержать кавычки в произвольных местах:

Убрать их можно используя параметр ‘quoting’:

По умолчанию ищется двойная кавычка. Если вы хотите ее переопределить, то нужно использовать параметр ‘quotechar’.

Поиска этой кавычки зависит от того, что указано в параметр ‘quoting’. Так значение ‘csv.QUOTE_ALL‘ говорит, что все значения находятся внутри кавычек. Параметр может принимать другие значения:

  • csv.QUOTE_MINIMAL — используется по умолчанию. Кавычки используются в местах содержащие специальные символы (например двойная кавычка из quotechar или сам дилиметр);
  • csv.QUOTE_NONNUMERIC — кавычки используются в нечисловых значениях. Если кавычек в значении не присутствует оно будет преобразовано во float;
  • csv.QUOTE_NONE — кавычки, вокруг значений, не используются.

Если вы установили ‘csv.QUOTE_NONE’, а в файле все равно экранируются специальные символы, то можно использовать параметр ‘escapechar’ указывающий на символ экранирования.

Чтение с конвертацией в словарь

Если первая строка у вас содержит заголовки колонок, то вы ее можно преобразовать в ключи словаря. Что бы это сделать, вместо метода ‘reader()’ используется класс ‘DictReader()’:

Тип словаря зависит от версии Python. Если вы используете версию ниже 3.8, то вернется ‘OrderedDict’, который можно преобразовать в обычный с ‘dict()’. В версиях 3.8 и старше возвращается обычный тип словаря.

Параметры у класса аналогичны методу ‘reader()’. Мы так же можем определять кавычки и символы экранирования.

Создание шаблона диалекта

Если у вас используется множество разных параметров и идет нарушение принципов DRY (dont repeat yorself), то вы можете использовать диалект (или просто шаблон). В примере мы регистрируем параметры под общим названием ‘myDialect’ и передаем в функцию или класс:

Автоматическое определение параметров CSV файла

Если используются разные файлы CSV и в каждом из них разные параметры для чтения, мы можем определить их автоматически с классом ‘Sniffer’. Результат работы этого класса мы можем передать как диалект:

Метод ‘has_header()’ проверяет есть ли в файле заголовки. Аналогично этому методу могут быть использованы и другие методы проверяющие кавычки, делимитры и т.д.

Чтение в pandas

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

Запись данных в CSV

Для записи данных есть функция ‘writer()’. В эту функцию мы можем передать все те же параметры, что в случае чтения. Базовая запись данных будет выглядеть следующим образом:

Как и понятно с примера выше:

  • writerow — записывает каждый список построчно;
  • writerows — записывает список списков в файл целиком.

Надобность в ‘newline’ так же может отличаться в разных ОС. Вы можете указать в функции ‘writer’ параметр ‘lineterminator’ со значением ‘n’, который обозначает символ переноса новой строки. По умолчанию он равен ‘rn’:

Читайте также  Как на телефоне открыть файл CDR?

Аналогично ‘lineterminator’ могут передаваться следующие параметры:

  • quotechar — символ для экранирования значений попадающие под условия указанные в ‘quoting’. По умолчанию этот символ равен двойным кавычкам;
  • quoting — какие значения должны быть экранированы: csv.QUOTE_MINIMAL (если в значении есть делимитер или сам символ экранирования), csv.QUOTE_ALL (все символы), csv.QUOTE_NONNUMERIC (оборачивает в кавычки все нечисловые значения), csv.QUOTE_NONE (не использует кавычки и, если в значениях используется символ делимитера, экранирует его в ‘escapechar’);
  • escapechar — если поведение с кавычками не установлено, то символы разделителя в значениях экранируются в этот символ.

Запись словаря

Аналогично чтению мы можем выполнить конвертацию словаря в CSV. Для этого есть класс ‘DictWriter’. Запись словаря, от его чтения, отличается параметром ‘fieldnames’ в котором указываются заголовки колонок. Пример такой записи:

Параметры, переданные в ‘DictWriter’, могут быть такими же что и в ‘writer’.

Запись с pandas

Что бы сохранить данные с pandas мы сначала должны выполнить конвертацию в ‘DataFrame’:

Обрабатываем csv файлы — Модуль csv

Модуль csv дает программисту возможность выполнять структурный анализ файлов CSV (Comma Separated Values – переменные, разделенные запятыми). Файл CSV – это текстовый файл, в котором каждая строка имеет несколько полей, разделенных запятыми, или другими разделителями. Вы можете рассматривать каждую строчку как ряд, а каждое поле — как столбец. Формат CSV не имеет стандарта, но эти файлы достаточно похожи, так что модуль csv может распознавать большую часть этих файлов. Вы также можете создавать файлы CSV, используя данный модуль.

Чтение файлов CSV

Существует два способа чтения файлов CSV. Вы можете использовать функцию чтения модуля csv, или использовать класс DictReader. Мы рассмотрим оба метода. Но сначала, нам нужно получить файлы CSV, чтобы было над чем работать. В интернете есть много сайтов, предлагающих познавательную информацию в формате CSV. Мы используем сайт всемирной организации здравоохранения, чтобы скачать кое-какую информацию о туберкулёзе. Вы можете получить её здесь: http://www.who.int/tb/country/data/download/en/
Как только вы скачаете файл, мы будем готовы начать. Готовы? Давайте взглянем на следующий код:

Вот здесь мы остановимся. В первую очередь, нам нужно импортировать модуль csv. После этого, нам нужно создать очень простую функцию, под названием csv_reader, которая получает доступ к объекту файла. Внутри функции, мы передаем файл функции csv.reader, которая возвращает объект-считыватель. Объект-считыватель позволяет выполнить итерацию также, как это делает обычный объект file.

Это позволяет выполнять итерацию над каждым рядом в объекте-считывателе и отобразить строку данных, но без запятых. Это работает по той причине, что каждый ряд является списком, и мы можем объединить все элементы в списке вместе, создав одну большую строку. А теперь мы создадим наш собственный файл CSV и загрузим его в класс DictReader. Вот очень простой пример:

Давайте сохраним это в файле, под названием data.csv . Теперь мы готовы проанализировать файл при помощи класса DictReader. Давайте попробуем:

В данном примере мы открыли файл и привязали объект файла к нашей функции таким же образом, каким мы делали это раньше. Функция привязывает наш объект к нашему классу DictReader. Мы указываем классу DictReader, что разделителем является запятая. Не то, что бы это было необходимо в нашем коде, так как он работает и без этого аргумента. Тем не менее, это хорошая идея, так как это позволяет пролить свет на то, что именно происходит внутри кода. Далее, мы применяем цикл над объектом-считывателем, и обнаруживаем, что каждая строка в нем – это словарь. Это упрощает печать отдельных фрагментов линии. Теперь мы готовы научиться писать файл csv на диск.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Пишем CSV файл

Модуль csv также имеет два метода, которые вы можете применять для написания файла CSV. Вы можете использовать функцию writer, или класс DictWriter. Мы рассмотрим оба метода. Начнем с функции writer. Давайте взглянем на простой пример:

В данном коде мы создали функцию csv_writer которая принимает два аргумента: path и data. «data» — это список списков, которые мы создали внизу скрипта. Мы использовали сокращенную версию аргумента data из предыдущего примера и разделили строки запятыми. Это возвращает список. Таким образом, мы получаем вложенный список, который выглядит следующим образом:

Функция csv_writer открывает путь, по которому мы проходим, и создает объект записи csv. После этого мы используем цикл в нашем вложенном списке, и записываем каждую строку на наш диск. Обратите внимание на то, что мы указали на то, какой именно символ является разделителем, когда создавали объект записи. Если вы хотите, чтобы разделителем была не запятая, а любой другой символ – это именно та самая часть, в которой вы можете это указать.

Теперь мы готовы к тому, чтобы научиться писать файлы CSV при помощи класса DictWriter. Мы используем аргумент data из предыдущего примера, и превратим его в список словарей, которые мы можем загрузить в наш DictWriter. Давайте взглянем:

Начнем со второй части. Как вы видите, мы начали со структуры вложенного списка, который у нас был ранее. Теперь мы создаем пустой список и список, который содержит имена полей, который будет первым списком во вложенном списке. Помните, списки начинаются с нуля, так что первый элемент в нем начинается с нуля. Далее мы используем цикл во вложенном списке, начиная со второго элемента:

Внутри цикла for мы используем встроенные инструменты Python, чтобы создать словарь. Метод zip будет использовать два итератора (списка, в нашем случае), и превратит их в список кортежей. Давайте взглянем на пример:

Теперь, когда вы оборачиваете этот вызов в dict, этот список кортежей превращается в словарь. И наконец, мы добавляем словарь в список. Когда for завершит работу, вы получите структуру данных, которая будет выглядеть так:

В конце второй сессии, мы вызываем нашу функцию csv_dict_writer и передаем ей все необходимые аргументы. Внутри функции мы создаем экземпляр DictWriter и передаем ей объекту файла, значение разделителя и наш список наименований полей. Далее, мы записываем наименования полей на наш диск, зацикливаем данные по одной строке за раз, и записываем данные на диск. Класс DictWriter также поддерживает метод writerows, который мы можем использовать вместо цикла. Функция csv.writer также может делать это. Вы, может быть, заинтересованы в том, что бы научиться создавать диалекты при помощи модуля csv. Это позволит вам указывать модулю csv, как именно читать или писать файл в очень простой форме. Если вам это нужно, так файл вашего клиента непонятно как отформатирован – вы найдете эту часть функционала просто незаменимой.

Подведем итоги

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

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

E-mail: vasile.buldumac@ati.utm.md

Образование
Universitatea Tehnică a Moldovei (utm.md)

  • 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
  • 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»

CSV-файл в Python – чтение и запись

Что такое CSV-файл в Python?

CSV-файл в Python означает «значения, разделенные запятыми» и определяется как простой формат файла, использующий определенную структуру для упорядочивания табличных данных. Он хранит табличные данные, такие как электронная таблица или база данных, в виде обычного текста и имеет общий формат для обмена данными. Файл csv открывается на листе Excel, а данные строк и столбцов определяют стандартный формат.

Читайте также  Как установить файл RAR на компьютер?

Узнаем, как осуществляется чтение и запись CSV-файлов в Python.

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

Модуль CSV используется для обработки файлов CSV для чтения / записи и получения данных из указанных столбцов. Существуют следующие типы функций CSV:

  • csv.field_size_limit – возвращает текущий максимальный размер поля, разрешенный парсером.
  • csv.get_dialect – возвращает диалект, связанный с именем.
  • csv.list_dialects – возвращает названия всех зарегистрированных диалектов.
  • csv.reader – читает данные из файла csv.
  • csv.register_dialect – связывает диалект с именем. Имя должно быть строкой или объектом Unicode.
  • csv.writer – записывает данные в файл csv.
  • o csv.unregister_dialect – удаляет диалект, связанный с именем, из реестра диалектов. Если имя не является зарегистрированным именем диалекта, возникает ошибка.
  • csv.QUOTE_ALL – предписывает объектам записи заключать в кавычки все поля. csv.QUOTE_MINIMAL – предписывает объектам записи указывать только те поля, которые содержат специальные символы, такие как quotechar, delimiter и т. д.
  • csv.QUOTE_NONNUMERIC – предписывает объектам записи заключать в кавычки все нечисловые поля.
  • csv.QUOTE_NONE – указывает объекту записи никогда не заключать поля в кавычки.

Чтение файлов CSV

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

  • Использование функции csv.reader()

В Python модуль csv.reader() используется для чтения файла csv. Он берет каждую строку файла и составляет список всех столбцов.

Мы взяли текстовый файл с именем python.txt, в котором есть разделитель по умолчанию(,) со следующими данными:

В приведенном выше коде мы открыли python.csv с помощью функции open(). Мы использовали функцию csv.reader() для чтения файла, который возвращает итеративный объект чтения. Объект чтения состоял из данных, и мы повторили цикл, используя цикл for, чтобы распечатать содержимое каждой строки.

Чтение CSV в словаре

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

Входной файл python.txt выглядит следующим образом:

Чтение с помощью Pandas

Pandas определяется как библиотека с открытым исходным кодом, которая построена на основе библиотеки NumPy. Он обеспечивает быстрый анализ, очистку данных и подготовку данных для пользователя.

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

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

В приведенном выше коде трех строк достаточно для чтения файла, и только одна из них выполняет фактическую работу, то есть pandas.read_csv()

Запись файлов CSV

Мы также можем не только читать, но и писать любые новые и существующие файлы CSV. Запись файлов на Python осуществляется с помощью модуля csv.writer(). Он похож на модуль csv.reader() и также имеет два метода, то есть функцию записи или класс Dict Writer.

Он представляет две функции: writerow() и writerows(). Функция writerow() записывает только одну строку, а функция writerows() записывает более одной строки.

Диалекты

Они определяются как конструкция, которая позволяет создавать, хранить и повторно использовать различные параметры форматирования. Диалект поддерживает несколько атрибутов; наиболее часто используются:

  • Dialect.delimiter: этот атрибут используется как разделительный символ между полями. Значение по умолчанию – запятая(,).
  • Dialect.quotechar: этот атрибут используется для выделения полей, содержащих специальные символы, в кавычки.
  • Dialect.lineterminator: используется для создания новых строк, значение по умолчанию – ‘rn’.

Запишем следующие данные в файл CSV.

Он возвращает файл с именем Python.csv, который содержит следующие данные:

Запись CSV в словарь

Мы также можем использовать класс DictWriter для записи файла CSV непосредственно в словарь.

Работа с CSV-файлами в Python

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

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

  1. Что это за файл – CSV?
  2. Анализ файла CSV
  3. Запись файла CSV
  4. Анализируйте файлы CSV с помощью библиотеки Pandas
  5. Использование и особенности библиотеки pandas
  6. Чтение файла CSV с помощью модуля Pandas
  7. Запись
  8. Заключение

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

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

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

Анализ файла CSV

Чтение файлов CSV с помощью встроенного модуля CSV Python.

Запись файла CSV

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

Анализируйте файлы CSV с помощью библиотеки Pandas

Есть еще один способ работы с CSV-файлами, который является наиболее популярным и профессиональным, – это использование библиотеки pandas. Она предлагает различные структуры, инструменты и операции для работы и манипулирования данными, которые в основном представляют собой двумерные или одномерные таблицы.

Использование и особенности библиотеки pandas

  • Изменение наборов данных.
  • Манипулирование данными с индексацией с использованием объектов DataFrame.
  • Фильтрация данных.
  • Операция слияния и присоединения к наборам данных.
  • Нарезка, индексирование и подмножество массивных наборов данных.
  • Отсутствует обработка и согласование данных.
  • Вставка и удаление строки или столбца.
  • Одномерные разные форматы файлов.
  • Инструменты для чтения и записи данных в различных форматах файлов.

Для работы с CSV файлом необходимо установить pandas. Это сделать довольно просто, следуйте инструкциям ниже, чтобы установить его с помощью PIP.

После завершения установки все готово.

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

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

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

Запись

Написание файлов CSV с помощью pandas так же просто, как чтение. Единственный используемый новый термин – DataFrame, это двумерная неоднородная табличная структура данных (данные расположены в виде таблиц в строках и столбцах.

Pandas DataFrame состоит из трех основных компонентов – данных, столбцов и строк – с помеченными осью x и осью y (строки и столбцы).

Заключение

Мы научились разбирать файл CSV с помощью встроенного модуля CSV и модуля pandas. Есть много разных способов синтаксического анализа файлов, но программисты не используют их широко.

Такие библиотеки, как PlyPlus, PLY и ANTLR, являются некоторыми из библиотек, используемых для анализа текстовых данных. Теперь вы знаете, как использовать встроенную библиотеку CSV и мощный модуль pandas для чтения и записи данных в формате CSV. Приведенные выше коды очень простые и понятные.

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

Борис Аладышкин/ автор статьи

Приветствую! Я являюсь руководителем данного проекта и занимаюсь его наполнением. Здесь я стараюсь собирать и публиковать максимально полный и интересный контент на темы связанные с современными технологиями и программным обеспечением. Уверен вы найдете для себя немало полезной информации. С уважением, Борис Аладышкин.

Понравилась статья? Поделиться с друзьями:
Itsovet61.ru
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: