Pandas как сохранить результаты в csv файл

Обновлено: 04.07.2024

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

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

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

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

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

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

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

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

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

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

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

Чтение с помощью 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() записывает более одной строки.

Диалекты

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

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

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

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

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

CSV обозначает разделенные запятыми значения, популярный способ представления и хранения табличных данных, ориентированных на столбцы, в постоянном хранилище.

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

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

Резюме на DataFrame Pandas

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

В двух словах, Pandas DataFrame - это не что иное, как представление в памяти данных типа Excel. Например,

Эти данные также могут быть представлены с помощью словаря Python как

И мы знаем, что мы можем создать Pandas DataFrame из словаря Python, вызвав DataFrame(. ) функция

Результирующий DataFrame должен выглядеть


Получив DataFrame, мы можем сохранить его в файле CSV на локальном диске. Давайте сначала создадим наш собственный CSV-файл, используя данные, которые в настоящее время присутствуют в DataFrame, мы можем сохранить данные этого DataFrame в формате CSV с помощью API, называемого to_csv(. ) DataFrame Pandas как

Теперь у нас есть файл CSV, который содержит данные, представленные в кадре данных выше.

Так же, как мы можем сохранить DataFrame в CSV-файле, мы также можем загрузить DataFrame из CSV-файла.

Давайте загрузим файл CSV и создадим из него новый DataFrame.

Результирующий DataFrame (df_csv) должен выглядеть


Итак, мы видим, что индекс генерируется дважды, первый загружается из файла CSV, а второй, т.е. Unnamed генерируется автоматически Pandas при загрузке файла CSV.

Этой проблемы можно избежать, убедившись, что запись файлов CSV не записывает индексы, потому что DataFrame будет генерировать его в любом случае. Мы можем сделать то же самое, указав index = False параметр в to_csv(. ) функция

Теперь, если мы читаем файл как

Результирующий DataFrame должен выглядеть


Теперь вы можете видеть, что выходные данные похожи на то, что мы имели ранее, когда мы создали DataFrame из словаря python, и это то, что мы ожидали.

Игра с заголовком столбца

Как мы уже видели, первая строка всегда рассматривается как заголовок столбца, однако можно указать более одной строки как заголовок столбца, указав параметр с именем header=<integer> в read_csv(. ) функция.

По умолчанию значение указано как «0», что означает, что верхняя строка будет считаться заголовком.

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

Результирующий DataFrame должен выглядеть


Как мы видим здесь, столбцы 0,1, & 2 теперь являются заголовками.

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

Здесь результирующий DataFrame должен выглядеть так:


Единственным недостатком является то, что нам придется отпустить доступные данные перед номером строки заголовка. Он не может быть частью результирующего DataFrame.

Даже в случае наличия нескольких строк в качестве заголовка фактические данные DataFrame должны начинаться только со строк после последних строк заголовка.

Результирующий DataFrame начнется со строки «6» и должен выглядеть следующим образом


Настройка имен столбцов

Хотя мы читаем данные из файлов CSV с заголовками столбцов, у нас все же могут быть собственные имена столбцов. Мы можем добиться того же, добавив параметр под названием names в read_csv(. ) как

Результирующий DataFrame должен выглядеть


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

Этого можно избежать, используя header параметр в read_csv(…) пропустить строку с изображением заголовка. В данном конкретном случае мы знаем, что первая строка, то есть строка 0 является заголовком, поэтому мы можем пропустить ее как


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

Другой способ сделать то же самое - пропустить заголовок при записи файлов CSV как

И во время чтения мы можем читать, не пропуская заголовок как


Хотя значения, разделенные запятыми, хорошо известны, read_csv(. ) Функция может идентифицировать разделители, отличные от запятой.

Единственное отличие состоит в том, что нам нужно явно передавать разделитель в функции, в то время как запятая считается по умолчанию

Давайте сначала создадим CSV-файл, используя другой разделитель, т. Е. «:» (Двоеточие)

Это создаст файл, в котором двоеточие (‘:’) вместо запятой (‘,’) будет использоваться в качестве разделителя. Мы можем прочитать файл как

Результирующий DataFrame должен выглядеть


По умолчанию Pandas DataFrame автоматически генерирует индекс строки, который мы можем изменить, задав любой столбец в качестве индекса как

Вот как должен выглядеть результирующий DataFrame


df_csv → Использование «age» в качестве индекса строки

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

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

Выход же должен выглядеть


Мы можем даже предоставить более одного index_col рассматриваться как индекс

И вывод будет выглядеть


Если все строки не требуются . Не загружайте их

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

Вы можете сделать то же самое, указав количество строк для загрузки, передав аргумент nrows в read_csv(. )

А вот как это будет выглядеть


Пропуск пустых строк в файлах CSV

По умолчанию, read_csv(. ) функция пропускает пустые строки, т.е. она будет игнорировать пустые строки при загрузке файла и создании DataFrame.

Однако, если вы хотите загрузить пустую строку (строки) для выполнения некоторых явных вычислений, таких как подсчет пустых записей, вы должны пометить пропуск пустых строк как False

У меня есть данные в пандах, которые я хотел бы записать в файл CSV. Я делаю это с помощью:

И получаю ошибку:

Есть ли способ обойти это легко (то есть у меня есть символы Юникода в моем фрейме данных)? И есть ли способ записи в файл с разделителями табуляции вместо CSV, используя, например, метод «to-tab» (который, я думаю, не существует)?

Чтобы разделить вкладку, вы можете использовать sep аргумент to_csv :

Чтобы использовать определенную кодировку (например, 'utf-8'), используйте encoding аргумент:

Сначала я был смущен тем, как я нашел ответ на вопрос, который я уже написал 7 лет назад.

При сохранении DataFrame объекта в файл CSV , используя to_csv метод, вы , вероятно , не будет необходимости хранить предыдущие показатели каждой строки из DataFrame объекта.

Вы можете избежать этого, передав False булево значение index параметру.

Так что, если ваш объект DataFrame выглядит примерно так:

CSV-файл будет хранить:

вместо (случай, когда было передано значение по умолчанию True )

Что делать, если индексирование желательно, но также должно иметь заголовок? Вы просто используете df.rename_axis('index_name') ? это не изменяет сам файл

Чтобы записать pandas DataFrame в файл CSV, вам потребуется DataFrame.to_csv . Эта функция предлагает множество аргументов с разумными значениями по умолчанию, которые вам чаще всего придется переопределять в соответствии с вашим конкретным вариантом использования. Например, вы можете использовать другой разделитель, изменить формат даты и времени или удалить индекс при записи. to_csv есть аргументы, которые вы можете передать, чтобы удовлетворить эти требования.

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

Написать в CSV ma чувак

  1. Разделителем по умолчанию считается запятая ( ',' ). Не меняйте это, если не знаете, что вам нужно.
  2. По умолчанию индекс df записывается как первый столбец. Если ваш DataFrame не имеет индекса (IOW, df.index по умолчанию RangeIndex ), то вы захотите установить его index=False при записи. Чтобы объяснить это по-другому, если ваши данные имеют индекс, вы можете (и должны) использовать его index=True или просто не указывать его (по умолчанию True ).
  3. Было бы разумно установить этот параметр, если вы пишете строковые данные, чтобы другие приложения знали, как читать ваши данные. Это также позволит избежать любых потенциальных проблем, UnicodeEncodeError с которыми вы можете столкнуться при сохранении.
  4. Сжатие рекомендуется, если вы записываете большие DataFrames (> 100K строк) на диск, так как это приведет к гораздо меньшим выходным файлам. OTOH, это будет означать, что время записи увеличится (и, следовательно, время чтения, так как файл необходимо будет распаковать).

Что-то еще, что вы можете попробовать, если у вас есть проблемы с кодировкой 'utf-8' и вы хотите переходить по ячейкам, вы можете попробовать следующее.

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

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

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

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

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

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

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

CSV-файл в Python Parse

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

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

Как добавить в файл CSV?

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

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

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

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

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

Установка Pandas

Установка Pandas Cmd

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

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

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

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

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

Запись

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

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

Файл CSV для записи в Pandas

Заключение

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

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

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

Читайте также: