Как сохранить pandas в excel

Чтение и запись файлов Excel (XLSX) на Python с помощью библиотеки Pandas

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

  • Автор записи

Автор: Guest Contributor
Дата записи

Чтение и запись файлов Excel (XLSX) на Python с помощью библиотеки Pandas

Вступление

Как и со всеми другими типами файлов, вы можете использовать библиотеку Pandas для чтения и записи файлов Excel с помощью Python. В этом коротком уроке мы обсудим, как читать и записывать файлы Excel с помощью DataFrame s.

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

Если вы хотите узнать больше о других типах файлов, мы вас охватим:

  • Чтение и запись JSON-файлов на Python с помощью Pandas
  • Чтение и запись CSV-файлов на Python с помощью Pandas

Чтение и запись файлов Excel на Python с пандами

Естественно, чтобы использовать Pandas, мы сначала должны установить его. Самый простой способ установить его-через pip .

Если вы используете Windows:

Если вы используете Linux или macOS:

Обратите внимание, что при запуске кода в этой статье вы можете получить ошибку Module Not Found Error или ImportError error. Например:

Если это так, то вам нужно будет установить отсутствующий модуль(ы):

Написание Файлов Excel С Помощью Панд

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

Во-первых, давайте импортируем модуль Pandas:

Теперь давайте используем словарь для заполнения фрейма данных :

Ключи | в нашем словаре будут служить именами столбцов. Аналогично, значения становятся строками, содержащими информацию.

Теперь мы можем использовать функцию to_excel() для записи содержимого в файл. Единственным аргументом является путь к файлу:

Вот файл Excel, который был создан:

Обратите внимание, что в нашем примере мы не используем никаких параметров. Таким образом, лист в файле сохраняет свое имя по умолчанию – “Лист 1” . Как вы можете видеть, в нашем файле Excel есть дополнительный столбец, содержащий числа. Эти числа являются индексами для каждой строки, поступающими прямо из панд DataFrame .

Мы можем изменить имя нашего листа, добавив параметр sheet_name в наш вызов to_excel() :

Аналогично, добавление параметра index и установка его в False приведет к удалению столбца индекса из выходных данных:

Теперь файл Excel выглядит следующим образом:

Запись нескольких фреймов данных в файл Excel

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

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

Мы объединили эти три параметра в переменной income_sheets , где каждый ключ – это имя листа, а каждое значение – объект DataFrame|/.

Наконец, мы использовали движок xlsxwriter для создания объекта writer . Этот объект передается вызову функции to_excel () .

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

Вот сгенерированный файл:

Вы можете видеть, что файл Excel имеет три разных листа с именами Group1 , Group2 и Group3 . Каждый из этих листов содержит имена сотрудников и их зарплаты по отношению к дате в трех различных фреймах данных в нашем коде.

Параметр engine в функции to_excel() используется для указания того, какой базовый модуль используется библиотекой Pandas для создания файла Excel. В нашем случае модуль xlsxwriter используется в качестве движка для класса ExcelWriter . Различные двигатели могут быть определены в зависимости от их соответствующих характеристик.

В зависимости от модулей Python, установленных в вашей системе, другие параметры атрибута engine: openpyxl (для xlsx и xlsm ) и xlwt (для xls ).

Более подробную информацию об использовании модуля xlsxwriter с библиотекой Pandas можно найти в официальной документации .

И последнее, но не менее важное: в приведенном выше коде мы должны явно сохранить файл с помощью writer.save() , иначе он не будет сохранен на диске.

Чтение файлов Excel с помощью Панд

В отличие от записи объектов DataFrame в файл Excel, мы можем сделать обратное, прочитав файлы Excel в DataFrame s. Упаковать содержимое файла Excel в DataFrame так же просто, как вызвать функцию read_excel() :

Для этого примера мы читаем этот файл Excel .

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

Примечание: Использование этого метода, хотя и самого простого, будет читать только первый лист .

Давайте посмотрим на вывод функции head() :

Pandas присваивает метку строки или числовой индекс фрейму данных по умолчанию, когда мы используем функцию read_excel () .

Мы можем переопределить индекс по умолчанию, передав один из столбцов в файле Excel в качестве параметра index_col :

Запуск этого кода приведет к:

В приведенном выше примере мы заменили индекс по умолчанию столбцом “Grade” из файла Excel. Однако переопределять индекс по умолчанию следует только в том случае, если у вас есть столбец со значениями, которые могут служить лучшим индексом.

Чтение определенных столбцов из файла Excel

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

Опять же, это делается с помощью функции read_excel () , хотя мы будем передавать параметр usecols . Например, мы можем ограничить функцию только чтением определенных столбцов. Добавим параметр так, чтобы мы читали столбцы, соответствующие значениям “Имя студента” , “Оценка” и “Полученные отметки” .

Мы делаем это, указывая числовой индекс каждого столбца:

Запуск этого кода приведет к:

Как вы можете видеть, мы извлекаем только столбцы, указанные в списке cols .

Вывод

Мы рассмотрели некоторое общее использование функций read_excel() и to_excel() библиотеки Pandas. С их помощью мы читаем существующие файлы Excel и записываем в них наши собственные данные.

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

Как сохранить новый лист в существующем файле excel, используя Pandas?

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

этот код сохраняет два фрейма данных на двух листах с именами "x1" и "x2" соответственно. Если я создам два новых фрейма данных и попытаюсь использовать один и тот же код для добавления двух новых листов, " x3 " и "x4", исходные данные будут потеряны.

Я хочу файл excel с четыре листа: "x1", "x2", "x3", "x4". Я знаю, что "xlsxwriter" — это не единственный "движок", есть "openpyxl". Я также видел, что уже есть другие люди, которые написали об этом вопросе, но я все еще не могу понять, как это сделать.

вот код, взятый из этого ссылке

Они говорят, что это работает, но трудно понять, как. Я не понимаю, что " ws.title", "ws" и "dict" находятся в этом контексте.

что является лучшим способом чтобы сохранить "x1" и "x2", закройте файл, откройте его снова и добавьте "x3"и " x4"?

4 ответов

спасибо. Я считаю, что полный пример может быть хорошим для кого-то еще есть некоторые проблемы:

здесь я генерирую файл excel, из моего понимания не имеет значения, генерируется ли он через "xslxwriter" или "openpyxl" engine.

когда я хочу писать без потери исходных данных, то

этот код делает работу!

в примере вы разделили загрузке существующего файла в book и параметр writer.book значение book . В строю writer.sheets = dict((ws.title, ws) for ws in book.worksheets) вы получаете доступ к каждому листу в книге Как ws . Заголовок листа тогда ws таким образом, вы создаете словарь

Я настоятельно рекомендую вам работать непосредственно с openpyxl, так как теперь он поддерживает Pandas DataFrames.

Это позволяет сосредоточиться на соответствующем коде Excel и Pandas.

простой пример для записи нескольких данных в excel одновременно. А также, Когда вы хотите добавить данные на лист в написанный файл excel (закрытый файл excel).

когда вы впервые пишете в excel. (Запись " df1 "и" df2 "в" 1st_sheet "и" 2nd_sheet")

после закрытия excel, но вы хотите "добавить" данные в тот же файл excel, но другой лист, скажем, "df3" к имени листа "3rd_sheet".

будет обратите внимание, что формат excel не должен быть xls, вы можете использовать xlsx one.

Ссылка на основную публикацию