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

Обновлено: 28.06.2024

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

Вы можете записать кадр данных pandas в CSV, используя метод df.to_csv().

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

Если вы спешите…

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

Запись кадра данных Pandas в объект CSV

Вы можете использовать метод to_csv() для сохранения фрейма данных в формате CSV. Он вернет объект CSV, который можно использовать в вашей программе.

Фрагмент

Вывод CSV

Запись кадра данных Pandas в файл CSV

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

Фрагмент

Вот как вы можете сохранить кадр данных в формате CSV.

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

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

Если вы хотите понять подробности, читайте дальше…

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

Оглавление

Пример кадра данных

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

Кадр данных выглядит так

Кадр данных выглядит так

< /tr>< td>NaT
название_продуктаЦена_ЕдиницыКоличество_ЕдиницДоступное_КоличествоДоступно_С_Даты
0Клавиатура500 00055< /td>5 11/2021
1Мышь200 0005 623.04.2021
2Монитор 5000,235101021.08.2021
3ЦП10000,55020Недоступно18.09.2021
4Динамики250 5008NaT05.01.2021
5NaT350.000NaTNaT

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

Вы можете сохранить кадр данных pandas в формате CSV, используя метод to_csv().

Он принимает несколько необязательных параметров.

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

Фрагмент

  • df.to_csv() — преобразует кадр данных df в объект csv и сохраняет его в переменной csv_data
  • print(csv_data) — распечатывает данные CSV

Вывод CSV

Если вы хотите преобразовать кадр данных в файл CSV, вы можете просто передать путь к файлу методу to_csv(). Затем он создаст объект файла CSV в указанном месте.

Настройка разделителя

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

Например, чтобы использовать ; в качестве разделителя можно использовать sep=';' как показано ниже.

Фрагмент

Вывод CSV, в котором столбцы разделены с помощью ; .

Вывод CSV

Если вы хотите сохранить фрейм данных в файл с настраиваемым разделителем, вы можете использовать приведенный ниже фрагмент кода. (У которого есть путь и параметры разделителя).

Далее вы увидите отсутствующие значения в CSV.

Отсутствующие значения

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

В приведенном ниже фрагменте кода отсутствующие значения будут заменены текстом строки Value Missing.

Фрагмент

Объект CSV, в котором отсутствующие значения печатаются как Значение отсутствует

Вывод CSV

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

Далее вы увидите заголовки.

Обработка заголовков

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

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

  • header='False' скрывает заголовок
  • header='True' показывает заголовок

Фрагмент

Поскольку header=false заголовок не добавляется к объекту CSV, как показано ниже.

Вывод CSV

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

Вот как вы можете управлять заголовками в объектах CSV.

Далее вы узнаете о настройке столбцов.

Настройка столбцов

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

Если вы хотите удалить столбец непосредственно в самом фрейме данных, а не скрывать его в объекте CSV, см. статью Удаление столбца в кадре данных pandas.

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

Фрагмент

  • Столбцы – параметр для управления списком экспортируемых столбцов.
  • ['Column_1','Column_2'] — список столбцов для экспорта.

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

Вот как вы можете обрабатывать столбцы для экспорта в файл CSV.

Обработка формата чисел с плавающей запятой

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

Для управления числами с плавающей запятой используйте параметр float_format с числом десятичных знаков, указанным ниже.

Фрагмент

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

Вывод CSV

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

Вот как вы можете обрабатывать числа с плавающей запятой.

Далее давайте обсудим кодировку файла.

Кодирование

Кодировка символов — это представление символа.

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

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

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

Например, encoding=ascii создаст CSV-файл с кодировкой ASCII.

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

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

Вы видели все доступные параметры в методе to_csv().

Далее посмотрим, как использовать этот метод в различных случаях.

Запись кадра данных Pandas в CSV без индекса

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

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

Фрагмент

Вы видите, что индексный столбец недоступен в объекте CSV.

Вывод CSV

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

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

Далее давайте узнаем об обработке заголовка.

Запись кадра данных Pandas в CSV без заголовка

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

Вы можете игнорировать заголовок, используя параметр header=False, как показано ниже.

Фрагмент

Вы можете видеть, что в объекте CSV нет заголовка.

Вывод CSV

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

Вот как вы можете игнорировать заголовки.

Далее вы узнаете о включении заголовков.

Запись фрейма данных Pandas в CSV с именами столбцов

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

..По умолчанию заголовок также имеет значение True. Таким образом, даже если вы проигнорируете этот параметр, заголовки будут включены в объект CSV.

Фрагмент

Вы можете видеть, что имена столбцов включены в качестве заголовков в объект CSV.

Вывод CSV

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

Вот как вы можете обрабатывать заголовки при преобразовании фрейма данных в объекты CSV.

Запись конкретных столбцов Pandas Dataframe в CSV

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

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

Фрагмент

Вы видите, что только два столбца product_name и Unit_Price экспортируются в формате CSV.

Вывод CSV

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

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

Далее вы узнаете о добавлении.

Запись кадра данных Pandas в CSV в режиме добавления

В этом разделе вы узнаете, как добавить кадр данных pandas в существующий объект CSV.

Добавление означает добавление значений из фрейма данных к существующему объекту CSV или файлу CSV.

Для добавления необходимо использовать параметр mode='a'. При выполнении строки фрейма данных будут добавлены к существующему объекту CSV. Если нет значений

Фрагмент

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

Вывод CSV

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

Вот как вы можете добавить фрейм данных к существующему объекту CSV.

Далее вы узнаете, как использовать разделитель табуляции для объектов CSV.

Запись кадра данных Pandas в CSV с помощью разделителя табуляции

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

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

Фрагмент

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

Вывод CSV

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

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

Далее вы узнаете об именах столбцов индекса.

Установка имени столбца индекса в CSV

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

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

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

Фрагмент

Вы можете видеть, что индексный столбец имеет имя Id в экспортированном CSV-объекте.

Вывод CSV

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

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

Далее обсудим экспорт Dataframe в несколько CSV.

Запись кадра данных Pandas в несколько CSV

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

Вам нужно использовать np.array_split() из NumPy, чтобы разделить кадр данных на n раз, прежде чем записывать его в CSV. Затем вам нужно перечислить разделенный массив с помощью цикла for и записать фрагменты в CSV.

Например, приведенный ниже пример

  1. Разбивает кадр данных на пять частей.
  2. При перечислении с использованием цикла for фрагмент объекта будет иметь каждый кадр данных.
  3. Затем вы можете использовать метод to_csv() для этого фрагмента, чтобы преобразовать разделенный фрейм данных в объект CSV.

Фрагмент

Вы можете видеть, что кадр данных разделен на 5 и напечатан как разные объекты CSV ниже.

Вывод CSV

Если вы хотите разделить и записать фрейм данных в несколько файловых объектов CSV, вы можете использовать приведенный ниже фрагмент. Он создаст 5 файлов CSV с индексом, прикрепленным к имени файла, используя переменную-заполнитель, используемую в fString.

Вот как вы можете записать кадр данных в несколько объектов CSV.

Записать кадр данных Pandas в CSV построчно

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

Заключение

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

Вы можете использовать следующий шаблон в Python, чтобы экспортировать свой фрейм данных Pandas в файл CSV:

А если вы хотите включить индекс, просто удалите из кода «, index = False»:

  • DataFrame будет создан с нуля
  • Затем DataFrame будет экспортирован в файл CSV.

Пример, используемый для экспорта Pandas DataFrame в файл CSV

Допустим, у вас есть следующие данные о продуктах:

Продукт Цена
Настольный компьютер 850
Планшет 200
Принтер 150
Ноутбук 1300

Как бы вы создали DataFrame в Python для этих данных?

(1) Во-первых, вам необходимо установить пакет Pandas (если вы еще этого не сделали):

(2) Затем вы сможете создать DataFrame на основе следующего кода:

Скажем, вы хотите экспортировать только что созданный DataFrame в файл CSV.

Например, давайте экспортируем DataFrame по следующему пути:

r ‘C:\Users\Ron\Desktop\ export_dataframe .csv ‘

Обратите внимание, что 3 части пути выделены разными цветами:

  • Желтая часть представляет собой символ r, который следует поместить перед именем пути (чтобы позаботиться о любых символах в имени пути, таких как символ обратной косой черты) . В противном случае вы получите следующую ошибку: (ошибка юникода) кодек unicodeescape не может декодировать байты в позиции 2–3: усеченный \UXXXXXXXX escape
  • Синяя часть представляет имя создаваемого файла. Вы можете ввести другое имя файла, если хотите
  • Зеленая часть обозначает тип файла, т. е. "csv". Вы должны добавить эту часть каждый раз, когда хотите экспортировать свой DataFrame в файл CSV. Кроме того, вы можете использовать тип файла «txt», если хотите экспортировать свой DataFrame в текстовый файл
  • .

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

А вот и полный код Python:

После запуска кода Python файл CSV будет сохранен в указанном вами месте.

Обратите внимание: если вы хотите включить индекс, просто удалите «, index = False» из приведенного выше кода.

Дополнительные ресурсы

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

Вы можете столкнуться с противоположным сценарием, в котором вам нужно будет импортировать CSV в Python. Если это так, вы можете проверить это руководство, в котором объясняется, как импортировать файл CSV в Python с помощью Pandas.

Вы также можете проверить документацию Pandas для получения дополнительной информации об использовании ‘to_csv’.

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

Я делаю это, используя:

И получаю следующую ошибку:

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


9 ответов 9

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

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


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

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

Есть ли особая причина, по которой мы используем to_csv для записи файла с разделителями табуляцией, кроме того, что он запрошен OP?

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

Этого можно избежать, передав логическое значение False в параметр index.

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

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



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

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

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

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

Функция to_csv()

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

Приведенный выше синтаксис по умолчанию сохраняет индекс фрейма данных в виде отдельного столбца. Если вы не хотите включать индекс, передайте index=False вышеуказанной функции.

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

Фрейм данных с названием, символом акции и соответствующим количеством акций компаний в портфеле образцов:

Пример фрейма данных с тремя столбцами и пятью ряды». ширина=

Давайте рассмотрим несколько примеров различных способов использования to_csv():

Пример 1: to_csv() с параметрами по умолчанию

Вот как выглядит сохраненный файл CSV, если мы откроем его в Excel:

Снимок CSV в Excel. Это показывает все столбцы фрейма данных с дополнительным столбцом с индексом». ширина=

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

Пример 2: to_csv() с index=False

Как правило, вы можете не захотеть включать индекс фрейма данных в виде отдельного столбца. Особенно, когда это просто непрерывные числа, не дающие никакой дополнительной информации. Для этого вы можете передать параметр index=False в функцию to_csv().

Вот как выглядит сохраненный файл CSV, если мы откроем его в Excel:

Снимок сохраненного CSV в Excel. У него нет индекса в виде отдельного столбца». ширина=

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

Пример 3: to_csv() с header=False

Если вы не хотите включать имена столбцов в сохраненный CSV-файл, передайте header=False в функцию to_csv().

Вот как выглядит сохраненный файл CSV, если мы откроем его в Excel:

Снимок сохраненного CSV в Excel, он не

Поскольку мы передали header=False, в сохраненном CSV-файле нет заголовков столбцов. Вы также можете передать собственный список имен столбцов в аргумент заголовка, если хотите, чтобы столбцы имели разные имена. Обратите внимание, что мы также передали index=False .

Пример 4: to_csv() с подмножеством столбцов

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

Вот как выглядит сохраненный файл CSV, если мы откроем его в Excel.

Снимок сохраненного файла CSV с символом столбца и акции в Excel». ширина=

В приведенном выше примере мы передали список столбцов, которые должны быть включены в файл CSV, в виде списка в аргумент столбцов функции to_csv(). Вы можете видеть, что в сохраненном CSV-файле присутствуют только переданные столбцы: Symbol и Shares. Обратите внимание, что мы также передали index=False .

Подробнее о фрейме данных pandas to_csv() см. в официальной документации.

На этом мы подошли к концу этого руководства. Примеры кода и результаты, представленные в этом руководстве, были реализованы в Jupyter Notebook с ядром python (версия 3.8.3) с пандами версии 1.0.5

Подробнее о Pandas DataFrames —

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

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