Как записывать данные в excel python
Перейти к содержимому

Как записывать данные в excel python

  • автор:

Начало работы с Python в Excel

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

У вас нет доступа к программе предварительной оценки? Зарегистрируйтесь с помощью учетной записи Майкрософт, рабочей или учебной учетной записи, чтобы получать уведомления о будущей доступности Python в Excel.

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

Если у вас возникли проблемы с Python в Excel, сообщите о них, выбрав Справка > отзывов в Excel.

Не знакомы с Python в Excel? Начните с введение в Python в Excel.

Начало использования Python

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

Вкладка Формулы ленты Excel с выделенной кнопкой Вставка Python.

Или используйте функцию =PY в ячейке, чтобы включить Python. Введя в ячейку =PY, выберите PY в меню автозаполнения функции со стрелкой вниз и клавишами TAB или добавьте в функцию открываемую скобку: =PY(. Теперь можно ввести код Python непосредственно в ячейку. На следующем снимке экрана показано меню Автозаполнения с выбранной функцией PY.

Меню Автозаполнения для формулы Excel с выбранной формулой Python.

После включения Python в ячейке в этой ячейке отображается зеленый значок PY . При выборе ячейки Python в строке формул отображается тот же значок PY. Пример см. на следующем снимку экрана.

Книга Excel с включенным Python в Excel в ячейке, где отображается зеленый значок PY в ячейке.

Объединение python с ячейками и диапазонами Excel

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

Совет: Используйте сочетание клавиш F2 для переключения между режимом ввод и режим правки в ячейках Python. Переключение в режим правки позволяет изменить формулу Python, а переключение в режим Ввод позволяет выбрать дополнительные ячейки или диапазоны с помощью клавиатуры.

Python в Excel использует пользовательскую функцию Python xl() для взаимодействия между Excel и Python. Функция xl() принимает такие объекты Excel, как диапазоны, таблицы, запросы и имена.

Вы также можете напрямую вводить ссылки в ячейку Python с помощью функции xl() . Например, для ссылки на ячейку A1 используйте xl(«A1») , а для диапазона B1:C4 — xl(«B1:C4») . Для таблицы с заголовками MyTable используйте xl(«MyTable[#All]», headers=True) . Описатель [#All] гарантирует, что вся таблица анализируется в формуле Python, а headers=True обеспечивает правильную обработку заголовков таблицы. Дополнительные сведения об описателях, таких как [#All], см. в статье Использование структурированных ссылок с таблицами Excel.

На следующем рисунке показано вычисление Python в Excel с добавлением значений ячеек A1 и B1 с результатом Python, возвращенным в ячейку C1.

.

Строка формул

Используйте строку формул для редактирования, подобного коду, например для создания новых строк с помощью клавиши ВВОД. Разверните строку формул, используя значок стрелки вниз, чтобы просмотреть несколько строк кода одновременно. Вы также можете использовать сочетание клавиш CTRL+SHIFT+U , чтобы развернуть строку формул. На следующих снимках экрана показана строка формул до и после ее развертывания для просмотра нескольких строк кода Python.

.

Перед развертыванием строки формул:

.

После развертывания строки формул:

Типы выходных данных

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

Совет: Вы также можете использовать контекстное меню, чтобы изменить тип выходных данных Python. Откройте контекстное меню, перейдите в раздел Вывод Python, а затем выберите нужный тип вывода.

.

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

Примечание: Результаты формул, возвращаемые значениям Excel, превратятся в их ближайший эквивалент Excel. Если вы планируете повторно использовать результат в будущих вычислениях Python, рекомендуется вернуть результат в виде объекта Python. Возврат результата в виде значений Excel позволяет запускать аналитику Excel, например диаграммы Excel, формулы и условное форматирование, для значения.

.

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

Python в Excel может возвращать многие типы данных в виде объектов Python. Полезным типом данных Python в Excel является объект DataFrame. Дополнительные сведения о кадрах данных Python см. в статье Python в кадрах данных Excel.

Внешние данные

Чтобы импортировать внешние данные, используйте функцию Получить преобразование & в Excel. Преобразование get & использует Power Query для импорта внешних данных. Все данные, обрабатываемые с помощью Python в Excel, должны поступать с листа или через Power Query. Дополнительные сведения см. в статье Использование данных Power Query с Python в Excel.

Важно: Для защиты безопасности распространенные функции внешних данных в Python, такие как pandas.read_csv и pandas.read_excel, несовместимы с Python в Excel. Дополнительные сведения см . в статье Безопасность данных и Python в Excel.

Порядок вычислений

Традиционные операторы Python вычисляют сверху вниз. В ячейке Python в Excel операторы Python выполняют то же самое — вычисляют сверху вниз. Но на листе Python в Excel ячейки Python вычисляют в порядке крупных строк. Вычисления ячеек выполняются по строке (от столбца A до столбца XFD), а затем по каждой следующей строке на листе.

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

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

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

Пересчета

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

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

  1. Используйте сочетание клавиш F9.
  2. Перейдите к разделу Формулы >вычислить сейчас на ленте.
  3. Перейдите в ячейку с устаревшим значением, отображаемым с форматированием зачеркиванием, и выберите символ ошибки рядом с этой ячейкой. Затем в меню выберите Вычислить сейчас.

Ошибки

Вычисления Python в Excel могут возвращать такие ошибки, как #PYTHON!, #BUSY!и #CONNECT! в ячейки Python. Дополнительные сведения см. в статье Устранение ошибок Python в Excel.

Статьи по теме

  • Общие сведения о Python в Excel
  • Введение в Python — обучение | Microsoft Learn
  • Устранение ошибок Python в Excel
  • Безопасность данных и Python в Excel
  • Python в кадрах данных Excel
  • Создание графиков и диаграмм Python в Excel
  • Использование данных Power Query с Python в Excel

Чтение и запись файлов Excel (XLSX) в Python

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

Помимо чтения и записи рассмотрим, как записывать несколько DataFrame в Excel-файл, как считывать определенные строки и колонки из таблицы и как задавать имена для одной или нескольких таблиц в файле.

Установка Pandas

Для начала Pandas нужно установить. Проще всего это сделать с помощью pip .

Если у вас Windows, Linux или macOS:

pip install pandas # или pip3

В процессе можно столкнуться с ошибками ModuleNotFoundError или ImportError при попытке запустить этот код. Например:

ModuleNotFoundError: No module named 'openpyxl'

В таком случае нужно установить недостающие модули:

pip install openpyxl xlsxwriter xlrd # или pip3

Запись в файл Excel с python

Будем хранить информацию, которую нужно записать в файл Excel, в DataFrame . А с помощью встроенной функции to_excel() ее можно будет записать в Excel.

Сначала импортируем модуль pandas . Потом используем словарь для заполнения DataFrame :

 
import pandas as pd

df = pd.DataFrame( 'FC Bayern München', 'FC Barcelona', 'Juventus'],
'League': ['English Premier League (1)', 'Spain Primera Division (1)',
'English Premier League (1)', 'German 1. Bundesliga (1)',
'Spain Primera Division (1)', 'Italian Serie A (1)'],
'TransferBudget': [176000000, 188500000, 90000000,
100000000, 180500000, 105000000]>)

Ключи в словаре — это названия колонок. А значения станут строками с информацией.

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

 
df.to_excel('./teams.xlsx')

А вот и созданный файл Excel:

файл Excel в python

Стоит обратить внимание на то, что в этом примере не использовались параметры. Таким образом название листа в файле останется по умолчанию — «Sheet1». В файле может быть и дополнительная колонка с числами. Эти числа представляют собой индексы, которые взяты напрямую из DataFrame.

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

 
df.to_excel('./teams.xlsx', sheet_name='Budgets', index=False)

Также можно добавили параметр index со значением False , чтобы избавиться от колонки с индексами. Теперь файл Excel будет выглядеть следующим образом:

Чтение и запись файлов Excel (XLSX) в Python

Запись нескольких DataFrame в файл Excel

Также есть возможность записать несколько DataFrame в файл Excel. Для этого можно указать отдельный лист для каждого объекта:

 
salaries1 = pd.DataFrame( 'Salary': [560000, 220000, 125000]>)

salaries2 = pd.DataFrame( 'Salary': [370000, 270000, 240000]>)

salaries3 = pd.DataFrame( 'Salary': [160000, 260000, 250000]>)

salary_sheets =
writer = pd.ExcelWriter('./salaries.xlsx', engine='xlsxwriter')

for sheet_name in salary_sheets.keys():
salary_sheets[sheet_name].to_excel(writer, sheet_name=sheet_name, index=False)

writer.save()

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

Объединим все три в переменной salary_sheets , где каждый ключ будет названием листа, а значение — объектом DataFrame .

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

Перед записью пройдемся по ключам salary_sheets и для каждого ключа запишем содержимое в лист с соответствующим именем. Вот сгенерированный файл:

Чтение и запись файлов Excel (XLSX) в Python

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

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

В зависимости от установленных в системе модулей Python другими параметрами для движка могут быть openpyxl (для xlsx или xlsm) и xlwt (для xls). Подробности о модуле xlswriter можно найти в официальной документации.

Наконец, в коде была строка writer.save() , которая нужна для сохранения файла на диске.

Чтение файлов Excel с python

По аналогии с записью объектов DataFrame в файл Excel, эти файлы можно и читать, сохраняя данные в объект DataFrame . Для этого достаточно воспользоваться функцией read_excel() :

Пишем файл Excel из Python

Если вдруг вам потребуется, к примеру, выгружать отчеты из вашей программы, почему бы не воспользоваться общепринятым офисным форматом – Excel? В этом нет ничего сложного, потому что есть прекрасная библиотека XlsxWriter. Приведу для вас немного примеров из документации с собственными дополнениями. Итак, поехали с установки:

pip install XlsxWriter

Простейший пример, думаю, не вызовет вопросов, если вы знакомы с Excel: открыли файл, добавили лист, записали по адресу ячейки текст:

import xlsxwriter # открываем новый файл на запись workbook = xlsxwriter.Workbook('hello.xlsx') # создаем там "лист" worksheet = workbook.add_worksheet() # в ячейку A1 пишем текст worksheet.write('A1', 'Hello world') # сохраняем и закрываем workbook.close()

Сразу отмечу, что можно адресовать ячейки не только по строке типа А1 или C15, а непосредственно по индексам колонки и строки, но нумерация начинается в таком случае с нуля (0).

worksheet.write(0, 0, 'Это A1!') worksheet.write(4, 3, 'Колонка D, стока 5')

Формулы

Естественно, мы можем добавить в ячейки формулы, как мы делаем это руками в Excel – нужно начать выражение со знака равно (=). Пример: в конце таблицы трат введем подсчет суммы:

import xlsxwriter workbook = xlsxwriter.Workbook('formula.xlsx') worksheet = workbook.add_worksheet() # данные expenses = ( ['Аренда', 1000], ['Комуналка', 100], ['Еда', 300], ['Качалка', 50], ) for i, (item, cost) in enumerate(expenses, start=1): worksheet.write(f'A', item) worksheet.write(f'B', cost) # колонкой ниже добавить подсчет суммы worksheet.write('A5', 'Итого:') worksheet.write('B5', '=SUM(B1:B4)') # сохраняем и закрываем workbook.close()

Я пользуюсь программой Numbers на macOS, в MS Office будет более привычный вид. Вот что получилось у меня:

Таблица с формулой итого

Формат

Таблица получилась немного скучновата и невыразительна. Давайте добавим форматы ячейкам, а именно ячейки столбца B сделаем в формате денег, а графу «Итого:» и заголовки – жирными. Формат создается как отдельная переменная, и его передают третьим аргументом после аргумента-содержимого ячейки.

# формат для денег money = workbook.add_format() # формат жирности шрифта bold = workbook.add_format() worksheet.write('A1', 'Наименование', bold) worksheet.write('B1', 'Потрачено', bold) for i, (item, cost) in enumerate(expenses, start=2): worksheet.write(f'A', item) worksheet.write(f'B', cost, money) # колонкой ниже добавить подсчет суммы worksheet.write('A6', 'Итого:', bold) worksheet.write('B6', '=SUM(B2:B5)', money)

Таблица с формтами

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

Вот, что там не написано, а хотелось бы улучшить – задать ширину столбца (колонки), чтобы влезал весь текст. Делается это так:

# для каждой колонки отдельно (первый и второй аргументы совпадают) worksheet.set_column(0, 0, 15) worksheet.set_column(1, 1, 20) # или # задать колонкам в диапазоне от 0 до 1 каждой – ширину 15 worksheet.set_column(0, 1, 15) # или по названиям: worksheet.set_column('A:B', 15) worksheet.set_column('C:C', 20)

В каких единицах измеряется ширина? Черт его знает, это не сказано в документации, может, в сантидюймах? Подбирайте на глазок. Мой итог:

Увеличена ширина колонки

Графики

Они есть! Давайте построим график.

Шаг 1: зададим данные. Можно писать массив прямо в колонку, а не по каждой ячейке отдельно:

data = [ [1, 2, 3, 4, 5], [2, 4, 6, 8, 10], [3, 6, 9, 12, 15], ] # можно писать сразу колонками! worksheet.write_column('A1', data[0]) worksheet.write_column('B1', data[1]) worksheet.write_column('C1', data[2])

Шаг 2. Создадим график, задав его тип – в данном случае: диаграмма-столбики. Потом зададим серии данных.

chart = workbook.add_chart() # добавим три последовательности данных chart.add_series() chart.add_series() chart.add_series()

Так, стоп! Что значит эта страшная строка? Она говорит, что нужно взять ячейки с листа «Sheet1» и так далее. А можно попроще? Да – задать данные через числовые координаты списком. А еще за одно в цикл завернем:

worksheet.name = 'Первый лист' for col, series in enumerate(data): chart.add_series(< # имя листа, строка начала, колонка начала, строка конца, колонка конца 'values': [worksheet.name, 0, col, 4, col], 'name': f'Серия ' >)

Шаг 3: вставить наш график в нужную ячейку:

# и вставим его в ячейку A7 worksheet.insert_chart('A7', chart)

Вот, как это выглядит:

Нарисовали график

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

Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway ��

Чтение и запись данных с помощью Pandas в Microsoft Fabric

Записные книжки Microsoft Fabric поддерживают простое взаимодействие с данными Lakehouse с помощью Pandas, самой популярной библиотеки Python для изучения и обработки данных. В записной книжке пользователи могут быстро считывать данные из (и записывать данные обратно в) их Lakehouse в различных форматах файлов. В этом руководстве приведены примеры кода, которые помогут вам приступить к работе с собственной записной книжкой.

Необходимые компоненты

Screenshot of the experience switcher menu, showing where to select Data Science.

  • Получение подписки Microsoft Fabric. Или зарегистрируйте бесплатную пробную версию Microsoft Fabric.
  • Войдите в Microsoft Fabric.
  • Перейдите к интерфейсу Обработка и анализ данных с помощью значка переключателя интерфейса в левой части домашней страницы.

Загрузка данных Lakehouse в записную книжку

Подключив Lakehouse к записной книжке Microsoft Fabric, вы можете изучить сохраненные данные, не выходя из страницы и прочитав его в записную книжку в случае щелчков. Выбор всех параметров поверхностей файлов Lakehouse для загрузки данных в Spark или Кадр данных Pandas. (Вы также можете скопировать полный путь ABFS файла или понятный относительный путь.)

Screenshot showing where to select options to load data into a Pandas DataFrame.

Щелкнув один из запросов "Загрузить данные", создайте ячейку кода для загрузки этого файла в кадр данных в записной книжке.

Screenshot of the code cell added to the notebook.

Преобразование кадра данных Spark в кадр данных Pandas

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

# Replace "spark_df" with the name of your own Spark DataFrame pandas_df = spark_df.toPandas() 

Чтение и запись различных форматов файлов

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

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

Чтение данных из CSV-файла

import pandas as pd # Read a CSV file from your Lakehouse into a Pandas DataFrame # Replace LAKEHOUSE_PATH and FILENAME with your own values df = pd.read_csv("/LAKEHOUSE_PATH/Files/FILENAME.csv") display(df) 

Запись данных в ВИДЕ CSV-файла

import pandas as pd # Write a Pandas DataFrame into a CSV file in your Lakehouse # Replace LAKEHOUSE_PATH and FILENAME with your own values df.to_csv("/LAKEHOUSE_PATH/Files/FILENAME.csv") 

Чтение данных из файла Parquet

import pandas as pd # Read a Parquet file from your Lakehouse into a Pandas DataFrame # Replace LAKEHOUSE_PATH and FILENAME with your own values df = pandas.read_parquet("/LAKEHOUSE_PATH/Files/FILENAME.parquet") display(df) 

Запись данных в виде файла Parquet

import pandas as pd # Write a Pandas DataFrame into a Parquet file in your Lakehouse # Replace LAKEHOUSE_PATH and FILENAME with your own values df.to_parquet("/LAKEHOUSE_PATH/Files/FILENAME.parquet") 

Чтение данных из файла Excel

import pandas as pd # Read an Excel file from your Lakehouse into a Pandas DataFrame # Replace LAKEHOUSE_PATH and FILENAME with your own values df = pandas.read_excel("/LAKEHOUSE_PATH/Files/FILENAME.xlsx") display(df) 

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

import pandas as pd # Write a Pandas DataFrame into an Excel file in your Lakehouse # Replace LAKEHOUSE_PATH and FILENAME with your own values df.to_excel("/LAKEHOUSE_PATH/Files/FILENAME.xlsx") 

Чтение данных из JSON-файла

import pandas as pd # Read a JSON file from your Lakehouse into a Pandas DataFrame # Replace LAKEHOUSE_PATH and FILENAME with your own values df = pandas.read_json("/LAKEHOUSE_PATH/Files/FILENAME.json") display(df) 

Запись данных в виде JSON-файла

import pandas as pd # Write a Pandas DataFrame into a JSON file in your Lakehouse # Replace LAKEHOUSE_PATH and FILENAME with your own values df.to_json("/LAKEHOUSE_PATH/Files/FILENAME.json") 

Следующие шаги

  • Очистка и подготовка данных с помощью Wrangler
  • Начало обучения моделей машинного обучения

Обратная связь

Были ли сведения на этой странице полезными?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *