Получить модель в excel

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

Прежде чем приступить к работе с моделью данных, необходимо получить некоторые данные. Для этого мы будем использовать интерфейс Get & Transform (Power Query), поэтому вам может потребоваться выполнить шаг назад и посмотреть видео, или следуйте нашему руководству по обучению по get & Transform и Power Pivot.


Где есть Power Pivot?

  • Excel 2016 & Excel для Microsoft 365 — Power Pivot включен в ленту.

  • Excel 2013 — Power Pivot входит в Office профессиональный плюс Excel 2013, но не включен по умолчанию. Дополнительные сведения о запуске надстройки Power Pivot для Excel 2013.

  • Excel 2010 — скачайте надстройку Power Pivot, а затем установите надстройку Power Pivot.


Где находится get & Transform (Power Query)?

  • Excel 2016 & Excel для Microsoft 365 . Get & Transform (Power Query) интегрировано с Excel на вкладке «Данные«.

  • Excel 2013 — Power Query — это надстройка, которая входит в Excel, но ее необходимо активировать. Перейдите к разделу «Параметры >» > надстроек, а затем в раскрывающемся списке «Управление» в нижней части панели выберите com-надстройки > Go. Проверьте microsoft Power Query Excel, а затем ОК, чтобы активировать его. На Power Query будет добавлена вкладка Power Query.

  • Excel 2010 — скачивание и установка Power Query надстройки.. После активации на ленту Power Query вкладки.

Начало работы

Сначала необходимо получить некоторые данные.

  1. В Excel 2016 и Excel для Microsoft 365 используйте data >Get & Transform Data > Get Data > Get Data to import data from any number of external data sources, such as a text file, Excel workbook, website, Microsoft Access, SQL Server, or another relational database that contains multiple related tables.

    В Excel 2013 и 2010 перейдите к Power Query >получения внешних данных и выберите источник данных.

  2. Excel предложит выбрать таблицу. Если вы хотите получить несколько таблиц из одного источника данных, установите флажок «Включить выбор нескольких таблиц «. При выборе нескольких таблиц Excel автоматически создает модель данных.

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

    Получение & преобразования (Power Query) Навигатор

  3. Выберите одну или несколько таблиц и нажмите кнопку «Загрузить «.

    Если необходимо изменить исходные данные, можно выбрать параметр «Изменить «. Дополнительные сведения см. в статье «Общие сведения Редактор запросов (Power Query)».

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

Примечания: 

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

  • Модели создаются явно, если вы импортируете данные с помощью надстройки Power Pivot. В надстройке модель представлена в макете с вкладками, аналогичном Excel, где каждая вкладка содержит табличные данные. Дополнительные сведения об импорте данных с помощью надстройки Power Pivotсм. в статье «Получение данных с помощью SQL Server данных».

  • Модель может содержать одну таблицу. Чтобы создать модель на основе только одной таблицы, выберите таблицу и нажмите кнопку Добавить в модель данных в Power Pivot. Это может понадобиться в том случае, если вы хотите использовать функции Power Pivot, например отфильтрованные наборы данных, вычисляемые столбцы, вычисляемые поля, ключевые показатели эффективности и иерархии.

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

  • Советы по сокращению размера модели данных см. в статье «Создание модели данных, оптимизированной для памяти, с помощью Excel и Power Pivot».

  • Дополнительные сведения см. в руководстве по импорту данных в Excel и созданию модели данных.

Создание связей между таблицами

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

  1. Перейдите в power Pivot > Manage.

  2. На вкладке « Главная» выберите » Представление схемы».

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

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

    Power Query представления схемы связей модели данных

    Мы создали следующие ссылки:

    • tbl_Students | Идентификатор учащегося > tbl_Grades | Идентификатор учащегося

      Другими словами, перетащите поле «Идентификатор учащегося» из таблицы «Учащиеся» в поле «Идентификатор учащегося» в таблице «Оценки».

    • tbl_Semesters | Идентификаторы > tbl_Grades | Семестр

    • tbl_Classes | Номер класса > tbl_Grades | Номер класса

    Примечания: 

    • Имена полей не обязательно должны совпадать для создания связи, но они должны быть одинаковыми типами данных.

    • Соединители в представлении схемы имеют «1» с одной стороны, а «*» — с другой. Это означает, что между таблицами существует связь «один ко многим», которая определяет, как данные используются в сводных таблицах. См. дополнительные сведения о связях между таблицами в модели данных.

    • Соединители указывают только на наличие связи между таблицами. На самом деле они не показывают, какие поля связаны друг с другом. Чтобы просмотреть ссылки, перейдите в раздел Power Pivot > Manage > Design > Relationships > Управление связями. В Excel можно перейти к разделу «>данных».

Создание сводной таблицы или сводной диаграммы с помощью модели данных

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

  1. В Power Pivotперейдите к разделу » Управление».

  2. На вкладке « Главная» выберите сводную таблицу.

  3. Выберите место размещения сводной таблицы: новый лист или текущее расположение.

  4. Нажмите кнопку «ОК», и Excel добавит пустую сводную таблицу с областью списка полей справа.

    Список полей сводной таблицы Power Pivot

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

Добавление имеющихся несвязанных данных в модель данных

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

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

  2. Добавьте данные одним из следующих способов.

  3. Щелкните Power Pivot > Добавить в модель данных.

  4. Выберите Вставка > Сводная таблица и установите флажок Добавить эти данные в модель данных в диалоговом окне «Создание сводной таблицы».

Диапазон или таблица будут добавлены в модель как связанная таблица. Дополнительные сведения о работе со связанными таблицами в модели см. в статье Добавление данных с помощью связанных таблиц Excel в Power Pivot.

Добавление данных в таблицу Power Pivot данных

В Power Pivot невозможно добавить строку в таблицу, введя текст непосредственно в новой строке, как это можно сделать на листе Excel. Но можно добавить строки , скопируйте и вставьте или обновите исходные данные и обновите модель Power Pivot.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Ознакомьтесь & по преобразованию и обучению Power Pivot

Общие сведения о редакторе запросов (Power Query)

Создание модели данных, оптимизированной для памяти, с помощью Excel и Power Pivot

Руководство. Импорт данных в Excel и создание модели данных

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

Связи между таблицами в модели данных

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

Оглавление

  • Что такое модель данных
  • Простая задача
  • Преимущества модели данных
  • Добавить данные в модель данных
  • Создание отношений между данными
  • Использование модели данных

Содержание

  1. Что такое модель данных
  2. Простая задача
  3. Преимущества модели данных
  4. Добавить данные в модель данных
  5. Создание отношений между данными
  6. Использование модели данных
  7. Анализировать в Excel – Модель данных отсутствует в Excel – Сообщество Microsoft Power BI

Что такое модель данных

Модель данных Excel позволяет загружать данные (например, таблицы) в память Excel. Он сохраняется в памяти, где вы его не видите. Затем вы можете указать Excel связать данные друг с другом с помощью общего столбца. Часть «Модель» модели данных относится к тому, как все таблицы соотносятся друг с другом.

Старая школа Excel Pro, используйте формулы для создания огромной таблицы, содержащей все данные для анализа. Им нужна эта большая таблица, чтобы сводные таблицы могли служить источником единой таблицы. Тем не менее, создавая отношения, вы избавляетесь от необходимости использовать формулы ВПР, СУММЕСЛИ, ИНДЕКС-ПОИСКПОЗ. Другими словами, вам не нужно собирать все столбцы в одной таблице. Через отношения модель данных может получить доступ ко всей необходимой информации. Даже если он находится в нескольких местах или за таблицами. После создания модели данных Excel сохраняет данные в своей памяти. И, имея его в своей памяти, вы можете получить доступ к данным по-новому. Например, вы можете начать использовать несколько таблиц в одной сводной таблице.

Простая задача

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

Преимущества модели данных

Метод And before отлично подходит, когда вы работаете с очень небольшим количеством данных. Тем не менее, у использования функции модели данных в Excel есть преимущества. Вот некоторые преимущества:

  1. Проверка и обновление формул может быть произвольной при работе с большим количеством таблиц. В конце концов, вам нужно убедиться, что все формулы заполнены до нужной ячейки. И после добавления новых столбцов формулы LOOKUP также необходимо расширить. Модель данных требует совсем немного времени при настройке , чтобы связать таблицу. При настройке используется общий столбец. Однако столбцы, которые вы добавляете позже, автоматически добавляются в модель данных.
  2. Работа с большими объемами данных часто приводит к очень медленной работе листа из-за вычислений.. Однако модель данных корректно обрабатывает большие объемы данных , не замедляя работу вашей компьютерной системы.
  3. Excel 2016 имеет ограничение в 1,048,576 строк. Однако количество строк, которые вы можете добавить в память модели данных, практически не ограничено . В 64-битной среде нет жестких ограничений на размер файла. Размер книги ограничен только доступной памятью и системными ресурсами.
  4. Если ваши данные находятся только в вашей модели данных, вы значительно сэкономите на размере файла .

Добавить данные в модель данных

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

  • Щелкните вкладку Данные -> Щелкните ячейку в нужной таблице для импорта
  • Выберите Из таблицы/диапазона

На главной вкладке редактора Power Query

  • Выберите Close & Load -> затем Закрыть и загрузить в…

  • Выберите Только создать соединение .
  • Обязательно установите флажок Добавить эти данные в модель данных

Это добавляет данные в модель данных. Обязательно выполните эти действия для обеих таблиц .

Создание отношений между данными

После добавления данных в модель данных вы можете связать общие столбцы друг с другом. Чтобы создать связи между таблицами:

  • Перейдите на вкладку Данные -> выберите Управление моделью данных

Откроется экран Power Pivot.

  • Щелкните Представление диаграммы. Это дает вам обзор всех таблиц в модели данных.
  • Затем свяжите общий столбец “Продавец” в первая таблица, со столбцом «Продавец» во второй таблице. Вы можете сделать это, щелкнув и перетащив один столбец на другой. Должна появиться связь.

Примечание : Когда вы устанавливаете связь между двумя столбцами, обычно в одном из столбцов указываются уникальные значения. Это называется отношением один-ко-многим . Наличие дубликатов с обеих сторон может привести к ошибке. Для сложных вычислений могут существовать отношения многие-ко-многим (например, в Power BI). Однако это слишком сложная задача, чтобы описать ее в этой статье. Если вас интересуют эти темы, обязательно исследуйте «Отношения« многие ко многим ».

Использование модели данных

Теперь мы подошли к самому интересному.. Чтобы использовать модель данных в сводной таблице, выполните следующие действия:

  • Перейдите на вкладку Вставить -> нажмите Pivot Таблица

Появится всплывающий экран «Создать сводную таблицу». Поскольку у вас есть модель данных, теперь вы можете выбрать использование ее в качестве источника данных.

  • Нажмите Использовать модель данных этой книги

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

Поскольку две таблицы связаны друг с другом, вы можете использовать поля из обеих таблиц в одной сводной таблице! Прочтите предыдущее предложение еще раз. Разве это не потрясающе ?? В примере ниже используются поля «Продажи» и «Продавец» из таблицы ProductSales, а поле «Пол» – из другой таблицы. И цифры по-прежнему верны!

Используя модель данных, вы можете анализировать данные из нескольких таблиц одновременно . И все это без использования формул ПРОСМОТР, СУММЕСЛИ или ИНДЕКС ПОИСКПОЗ для выравнивания исходной таблицы. Тем не менее, анализируемые данные также могут поступать из базы данных, текстового файла или облачного хранилища. Возможности безграничны.

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


Я произвел некоторые преобразования и добавил еще несколько столбцов в свою модель данных.
Теперь мне нужно экспортировать эти данные в файл CSV из модели данных, как мне сделать это, Рик? У меня 7,5 миллионов записей.

Ответ


Привет, Рик! – Спасибо, что поделились!
У меня к вам вопрос, надеюсь, вы сможете ответить:
У меня есть файл CSV с 2 мил. строки (записи GL с транзакциями за каждый день). Я использую Power Query для подключения к файлу и добавления в Datamodel.
Если я ничего не сделаю, Datamodel должен обработать 2 миллиона. строк.
Если я сделаю группировку с агрегированием суммы в месяц в Power Query, тогда будет только 80 тысяч строк.
Будет ли это преимуществом, сделайте это быстрее в модели данных , чтобы использовать PowerQuery для такого агрегирования?

Ответ


Привет, Рик, спасибо за ответ. На данный момент я только пытаюсь создать информационный список. Хотя я понял это; когда я объединяю их в Power Query, он определяет уникальный ключ цветового кода и дает мне то, что я ищу. Большое спасибо!

Ответ


У меня есть 5 списков в Sharepoint на основе производственных частей, которые я хочу использовать в модели данных (сначала попробуйте это).

Я только начинаю с двух из них: «Основные части» и «Цветовые коды».. Я подтвердил, что столбец «Цветовой код» в списке «Цветовые коды» уникален (2000 уникальных кодов). В списке «Основные детали» около 1800 номеров деталей. Объединение происходит по «Цветовому коду», который есть в каждом списке. Когда я пытаюсь извлечь описание цвета из списка цветовых кодов, я получаю сообщение о том, что отчет сводной таблицы не помещается на листе – он пытается назначить каждый цветовой код каждому отдельному номеру детали, как будто нет реляционной связи между Столбцы цветового кода в каждом списке, но они явно есть в моей модели данных. Какие-либо предложения? На первом этапе кажется очевидным, что…

Ответ


Привет, Рик,
Ваша статья ясна, проста и легка для понимания.
Я прочитал много статей о модели данных и Power Pivot, но ваша статья действительно проста.
У меня к вам вопрос.
Я создал панель мониторинга в формате xlsb и вставил множество срезов, сводных таблиц и графики.
Две таблицы, из которых берутся данные, состоят из 200 тыс. строк, но они всегда растут неделя за неделей.
Каждую неделю мне приходится преобразовывать данные в таблицы, потому что источники таких данные разные (SAP, Coupa), и, кроме того, я вношу в них некоторые дополнительные изменения.
Теперь я заметил, что время загрузки модели данных слишком сильно увеличивается, и я ищу способ сделать запросы быстрее.
Я сохранил файл как xlsb. Я также удалил исходные данные (изначально я помещал таблицы в тот же файл, что и панель мониторинга на разных листах): после обновления исходных данных и обновления панели мониторинга я использую для удаления листов, на которых были исходные данные, чтобы уменьшить размер файла. На данный момент размер файла составляет 20 МБ (xlsb).
Основная проблема – время для загрузки модели данных. Все еще слишком много.
Я еще не использовал power query/pivot, потому что эта панель инструментов используется многими пользователями, и, если я хорошо помню, всем им следует активировать эту функцию, чтобы панель работала нормально. Это может быть очень сложно управлять.
Я уже пытался не использовать функции.
Исходный источник данных с множеством столбцов и все функции в нем сохранены в другом файле. Затем я помещаю в тот же файл, где находится панель управления, но на другом листе, только те столбцы, которые мне действительно нужны для работы.
Как сказано выше, после обновления сводных таблиц и графиков я удаляю исходные данные (сохраненные в другом файле Excel).

Итак, есть ли у вас предложения, чтобы ускорить запросы?
Спасибо,
Майкл

Ответить


Привет, Рик. Спасибо за то, что уделили время написанию этого.

Итак, я в основном застрял на том факте, что у меня есть рабочая книга, которая добавляет и вычисляет столбцы и меры.
Теперь … я хочу используйте эту модель данных в ДРУГОМ файле excel. Соединение должно обновляться автоматически, поскольку оба файла находятся на Sharepoint.

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

Есть шансы?

Спасибо,

Сантьяго из Перу

Ответ


Привет, Рик,

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

https://www.dropbox.com/scl/fi/1xxmqyb9a0vwpj00mfkgj/Sample.xlsx?dl=0&rlkey=n2zc09cvc7gzxgv0p3g9kwi70

https://www.dropbox.com/s/hpcmtf6q1rfehwl/Capture.PNG?dl=0

https://www.dropbox.com/s/418zg5uupy6g3wj/Capture2.PNG? dl = 0

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

Спасибо,
K

Ответить


У меня есть информационная панель, заполненная сводными таблицами, которые заполняются моделью данных. Я хочу включить срезы для фильтрации данных. Если я затем отправлю файл кому-то, у кого нет доступа к исходному источнику данных, будут ли срезы работать для этого человека? Или они получат ошибку, потому что Excel и модель данных больше не могут найти источник данных? (Я знаю, что они не могут обновить модель данных, я просто беспокоюсь о просмотре того, что я уже заполнил, прежде чем отправлять им)

Ответ


не работает для меня! В модели данных все дублируется между двумя таблицами! Итак, у меня есть 99 единичных строк в таблице 1 и 99 уникальных строк в таблице 2, так что есть отображение 1-1. Таблица первая. Я переместил один столбец из таблицы 1 в таблицу 2 и попытался объединить два, используя модель данных, и все, что он делает, повторяет 99 полей из таблицы 2 под ключом в таблице 1 – vlookups намного проще. Кроме того, у меня возникают всевозможные проблемы с памятью, поэтому он не так хорош, как vlookups для больших наборов данных.

Ответ


Так что в основном Excel становится больше похожим на Access?

Ответить


Это было моей мыслью, когда я узнал больше об этом инструменте, особенно после того, как увидел Отношения.

Ответ


Спасибо, отличная информация

Ответ


Одна важная вещь, которая мне нравится в моделях данных, – это дополнительные функции, которые вы можете использовать в сводных таблицах, особенно «Уникальные счетчики».

Ответ



Анализировать в Excel – Модель данных отсутствует в Excel – Сообщество Microsoft Power BI

Привет всем –

I Я пытаюсь использовать «Анализировать в Excel», чтобы перенести мою модель данных Power BI в Microsoft Excel для создания отчетов для моих клиентов (которые предпочитают работать в Excel). Я успешно сохранил файл Excel с подключением pbiazure из службы Power BI и построил сводную таблицу. Однако, когда я пытаюсь щелкнуть «Управление моделью данных» в Excel, чтобы увидеть взаимосвязи (которые, как я ожидаю, будут такими же, как для рабочего стола Power BI), модель данных не отображается и остается пустой.

Кто-нибудь знает, почему это так? В случае, если он напрямую подключен к набору данных в службе Power BI, я предполагаю, что он сможет отображать и редактировать модель данных непосредственно в Excel..

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


Привет, @ sviswan2!

Параметр «Управление моделью данных» в Excel будет отображать модель данных только при подключении источника данных в Excel. Модель данных создается автоматически при одновременном импорте двух или более таблиц из базы данных. Когда вы импортируете одну таблицу, вы можете выбрать «добавить эти данные в модель данных». См. Эту статью: Advanced Excel – модель данных

В этом выпуске «Анализировать в Excel» просто цитирует набор данных из службы power bi, а не как единый источник данных, этот набор данных взят из вашего. pbix, который включает отношения и т. д., поэтому он не будет использоваться в качестве единственного источника данных для добавления в модель данных в Excel.

Другими словами, сам набор данных был моделью, вы Вы можете управлять им на своем рабочем столе power bi, а не в Excel, чтобы воссоздать модель.

С уважением,
Инцзе Ли

Если этот пост помогает, то, пожалуйста, рассмотрите вариант “Принять его” как решение, которое поможет другим участникам быстрее его найти.


Привет @ v-yingjl –

Спасибо за пояснение, которое немного помогает понять. Поэтому, пожалуйста, поясните следующее:

1) Если модель данных не импортирована, будут ли работать все отношения между данными, которые я настроил в файле рабочего стола, когда я использую его как «Анализировать в Excel “?

2) Если я хочу добавить какую-либо связь или меру, я должен сначала сделать это на рабочем столе Power BI, опубликовать в службе, а затем он должен появиться в моем файле Excel?

спасибо!


Привет @ sviswan2,

  1. Да, «Анализировать в excel» цитирует набор данных в сервисе power bi, отношения сохранятся.
  2. Если вы хотите добавить взаимосвязь или меру, у вас есть сделать это сначала на рабочем столе power bi, затем опубликовать в сервисе и повторно использовать «Анализировать в Excel», хотя вы не можете видеть взаимосвязь и конкретную формулу меры, вы можете видеть только поля таблицы и значение меры в excel.

С уважением,
Инцзе Ли

Если этот пост поможет, пожалуйста, примите его как решение чтобы помочь другим участникам найти его быстрее.


Привет @ sviswan2,
Анализировать в Excel позволяет взаимодействовать с набором данных из Power BI, но он имеет только соединение с набором данных, он не имеет данных из модели.

Вот ссылка: https://docs.microsoft.com/en-us/power-bi/collaborate-share/service-analyze-in-excel
“Вы можете сохранить книгу Excel вы создаете с помощью набора данных Power BI, как и любую другую книгу. Однако вы не можете публиковать или импортировать книгу обратно в Power BI, потому что вы можете публиковать или импортировать в Power BI только те книги, которые имеют данные в таблицах или имеют модель данных.. Поскольку новая книга просто подключается к набору данных в Power BI , публикация или импорт в Power BI будет происходить по кругу “.

Время на прочтение
9 мин

Количество просмотров 12K

К старту курса о машинном и глубоком обучении делимся переводом статьи, автор которой показывает на практике, как модель машинного обучения может использоваться через Excel. Зачем это нужно? Компании больше и больше вкладывают в исследования и разработку моделей прогнозов; по мнению автора оригинала статьи, разработчика и основателя компании PyXLL доступ к ML-моделям через Excel открывает новые горизонты. Вы сможете показать модель пользователям Excel, у которых нет опыта программирования или широких знаний в области статистики. При желании можно создавать инструменты разработки и тренировки моделей полностью в Excel, например строить графы в TensorFlow. Весь исходный код из статьи доступен на GitHub.


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

Python для Machine Learning

Python хорошо подходит для машинного обучения, у него большой массив поддерживаемых пакетов, упрощающих программирование и сокращающих время разработки. ML и DL очень хорошо поддерживаются несколькими пакетами, поэтому Python — идеальный выбор. Посмотрим на распространённые пакеты для ML на Python.

Scikit-Learn

Пакет scikit-learn — это лаконичный и последовательный интерфейс к общим алгоритмам ML, упрощая введение ML в производственные системы. Библиотека сочетает высокую производительность, де-факто она отраслевой стандарт машинного обучения на Python. В статье мы будем работать именно с ней.

TensorFlow

TensorFlow от Google. Эта библиотека с открытым исходным кодом для расчёта графов потоков данных оптимизирована для целей ML. Она была разработана, чтобы удовлетворять высоким требованиям обучения нейронных сетей в среде Google и является преемницей DistBelief — основанной на нейронных сетях системы глубокого обучения, применяется в пограничных областях исследований Google.

Впрочем, TensorFlow не строго научна и достаточно обобщена, чтобы применяться в различных прикладных задачах. Ключевая особенность TensorFlow — многослойная система узлов, которая быстро тренирует сети искусственного интеллекта на больших наборах данных. В Google это даёт возможность распознавать голос и находить объекты на изображениях.

Keras

Keras — написанная на Python Open Source библиотека для нейронных сетей. Она способна работать поверх TensorFlow, Microsoft Cognitive Toolkit или Theano и имеет архитектуру, которая позволяет быстро проводить эксперименты с глубоким обучением и сосредоточена на модульности, расширяемости и удобстве пользователя. Из документации следует, что работать с Keras можно, когда вам нужна библиотека глубокого обучения, которая:

  • Обладая перечисленными выше преимуществами, позволяет просто и быстро прототипировать решения.

  • Поддерживает свёрточные и рекуррентные нейронные сети, а также их комбинирование.

  • Без проблем работает на CPU и GPU.

PyTorch

PyTorch — это научный вычислительный пакет на Python, он работает в двух направлениях:

  • Как замена NumPy с возможностью задействовать графические процессоры.

  • Как платформа исследования Deep Learning с максимумом гибкости и скорости.

Деревья решений

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

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

Алгоритм быстро анализирует большой объём данных, чего вручную сделать невозможно. В работе деревьев решений множество аспектов, от математики до логики их построения. Мы не будем касаться этих деталей, но построим модель и я покажу, как работать с ней в Excel.

Тренировка модели

Натренируем модель классифицировать животных при помощи деревьев решений. Воспользуемся для этого набором данных UCI Zoo Data Set из 101 животного, в наборе 17 логических признаков и один признак, который мы будем прогнозировать.

Для загрузки данных воспользуемся pandas, а для построения дерева — scikit-learn. Загрузим данные во фрейм Pandas, разделим на признаки и целевой класс, то есть класс животного. Затем разделим данные на тренировочный и тестовый наборы. Scikit-Learn использует тренировочный набор для обучения деревьев, а тестовый резервируется для проверки точности модели.

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
import pandas as pd

# Read the input csv file
dataset = pd.read_csv("zoo.csv")

# Drop the animal names since this is not a good feature to split the data on
dataset = dataset.drop("animal_name", axis=1)

# Split the data into features and target
features = dataset.drop("class", axis=1)
targets = dataset["class"]

# Split the data into a training and a testing set
train_features, test_features, train_targets, test_targets = 
        train_test_split(features, targets, train_size=0.75)

Начинается самое интересное: при помощи классификатора дерева решений в scikit-learn обучим модель на тренировочных данных. Чтобы модель не переобучилась и могла работать, настроим несколько параметров. Максимальная глубина дерева будет равна 5. Поэкспериментируйте со значениями, чтобы увидеть влияние глубины на результаты.

# Train the model
tree = DecisionTreeClassifier(criterion="entropy", max_depth=5)
tree = tree.fit(train_features, train_targets)

Эти две строки строят и обучают модель. Чтобы проверить её точность, подадим на вход данные, которых она не видела.

# Predict the classes of new, unseen data
prediction = tree.predict(test_features)

# Check the accuracy
score = tree.score(test_features, test_targets)
print("The prediction accuracy is: {:0.2f}%".format(score * 100))

Воспользуемся моделью и выполним прогноз на новых данных:

# Try predicting based on some features
features = {
    "hair": 0,
    "feathers": 1,
    "eggs": 1,
    "milk": 0,
    "airbone": 1,
    "aquatic": 0,
    "predator": 0,
    "toothed": 1,
    "backbone": 1,
    "breathes": 1,
    "venomous": 0,
    "fins": 0,
    "legs": 1,
    "tail": 1,
    "domestic": 0,
    "catsize": 0
}

features = pd.DataFrame([features], columns=train_features.columns)
prediction = tree.predict(features)[0]
print("Best guess is {}".format(prediction])

Вызовем модель из Excel

Теперь загрузим модель в Excel, который хорошо подходит для интерактивных данных. Он работает почти везде, вы сможете показать модель незнакомым с разработкой людям, это даёт массу преимуществ в бизнесе, особенно когда модель применяется как часть пакетной системы или системы реального времени. Возможность вызывать модель интерактивно может оказаться по-настоящему полезной, когда нужно понять поведение системы.

К счастью, наша модель написана на Python и перенести её в Excel просто. В PyXLL есть всё необходимое, чтобы писать на Python в Excel. Нужно только добавить несколько декораторов @xl_func из модуля pyxll и настроить надстройку PyXLL для загрузки модуля с моделью. Если вы не знакомы с PyXLL, посмотрите введение в PyXLL в руководстве пользователя.

Построим дерево решений

Начнём с функции. Пользователь вызовет её, чтобы получить объект дерева, а затем этот объект для прогнозирования пройдёт через последовательность функций. Снова построим дерево, но пример будет сложнее: сохраним натренированную при помощи pickle и затем вместо того, чтобы каждый раз её создавать, загрузим её в Excel и настроим параметры, это будет интересно!

from pyxll import xl_func
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
import pandas as pd
import os

@xl_func("float, int, int: object")
def ml_get_zoo_tree(train_size=0.75, max_depth=5, random_state=245245):
    # Load the zoo data
    dataset = pd.read_csv(os.path.join(os.path.dirname(__file__), "zoo.csv"))

    # Drop the animal names since this is not a good feature to split the data on
    dataset = dataset.drop("animal_name", axis=1)

    # Split the data into a training and a testing set
    features = dataset.drop("class", axis=1)
    targets = dataset["class"]

    train_features, test_features, train_targets, test_targets = 
        train_test_split(features, targets, train_size=train_size, random_state=random_state)

    # Train the model
    tree = DecisionTreeClassifier(criterion="entropy", max_depth=max_depth)
    tree = tree.fit(train_features, train_targets)

    # Add the feature names to the tree for use in predict function
    tree._feature_names = features.columns

    return tree

Код выше совпадает с кодом, который мы видели ранее, за исключением декоратора @xl_func, который сообщает дополнению PyXLL о том, какая функция Python должна стать пользовательской функцией Excel.

Строка float, int, int: object — это сигнатура функции. Она необязательна, но без этой сигнатуры пользователь сможет передавать в функцию свои типы, например, строки и это может привести к сбою. Возвращаемый тип object означает, что классификатор идёт через Excel как объект Python, функция возвращает дескриптор, который возможно передать другим функциям Python.

Код нужно добавить в список модулей конфигурационного файла pyxll.cfg, также необходима надстройка PyXLL, если вы не установили её.

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

Прогнозируем класс животного

Теперь всё, что нужно для работы с моделью — ещё одна функция для передачи входных данных и получения прогноза. Используем тот же код, что и раньше, но обернём его декоратором @xl_func.

_zoo_classifications = {
    1: "mammal",
    2: "bird",
    3: "reptile",
    4: "fish",
    5: "amphibian",
    6: "insect",
    7: "mollusc"
}

@xl_func("object tree, dict features: var")
def ml_zoo_predict(tree, features):
    # Convert the features dictionary into a DataFrame with a single row
    features = pd.DataFrame([features], columns=tree._feature_names)
    # Get the prediction from the model
    prediction = tree.predict(features)[0]
    return _zoo_classifications[prediction]

Модель возвращает целое число — спрогнозированный класс. Словарь _zoo_classifications содержит эти числа и понятные человеку названия классов.

Эта функция берёт объект дерева из ml_get_zoo_tree и список пар ключ-значение, переданных в неё как словарь. В словаре сопоставлены имена признаков, с которыми мы работали при конструировании дерева, и входные признаки. Их сопоставление таково, что при вызове tree.predict признаки упорядочены правильно.

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

Небольшое дополнение

Чёрно-белые листы с цифрами нравятся всем, но иногда мне нравится добавлять небольшие детали ради привлекательности таблицы. PyXLL позволяет получить доступ к объектной модели Excel с помощью функции xl_app. Объектная модель Excel точно совпадает с той, что применяется в VBA. Функция ниже создаёт на листе объект изображения и загружает его.

from pyxll import xl_app

def show_image_in_excel(classification, figname="prediction_image"):
    """Plot a figure in Excel"""
    # Show the figure in Excel as a Picture object on the same sheet
    # the function is being called from.
    xl = xl_app()
    sheet = xl.ActiveSheet

    # if a picture with the same figname already exists then get the position
    # and size from the old picture and delete it.
    for old_picture in sheet.Pictures():
        if old_picture.Name == figname:
            height = old_picture.Height
            width = old_picture.Width
            top = old_picture.Top
            left = old_picture.Left
            old_picture.Delete()
            break
    else:
        # otherwise create a new image
        top_left = sheet.Cells(1, 1)
        top = top_left.Top
        left = top_left.Left
        width, height = 100, 100

    # insert the picture
    filename = os.path.join(os.path.dirname(__file__), "images", _zoo_classifications[classification] + ".jpg")
    picture = sheet.Shapes.AddPicture(Filename=filename,
                                      LinkToFile=0,  # msoFalse
                                      SaveWithDocument=-1,  # msoTrue
                                      Left=left,
                                      Top=top,
                                      Width=width,
                                      Height=height)

    # set the name of the new picture so we can find it next time
    picture.Name = figname

Вызов ml_zoo_predict обновляет изображение в Excel при каждом изменении прогноза. Функция обновляет Excel, поэтому вызывать её нужно после вычислений, именно этим занимается async_call из pyxll, а ниже вы видите новую версию ml_zoo_predict:

from pyxll import xl_func, async_call

@xl_func("object tree, dict features: var")
def ml_zoo_predict(tree, features):
    # Convert the features dictionary into a DataFrame with a single row
    features = pd.DataFrame([features], columns=tree._feature_names)

    # Get the prediction from the model
    prediction = tree.predict(features)[0]

    # Update the image in Excel
    async_call(show_image_in_excel, prediction)

    return _zoo_classifications[prediction]

Изображение обновляется при изменении прогноза:

Ссылки

Этот материал — яркое напоминание о том, что Excel может справляться с задачами машинного обучения, а область ML сложна, но её сложность преодолима и если вы хотите изменить карьеру или вывести ваши навыки на новый уровень, то можете обратить внимание на наши курсы по Machine Learning, аналитике данных или присмотреться к флагманскому курсу Data Science. Также вы можете узнать, как начать или продолжить развитие в других направлениях:

Data Science и Machine Learning

  • Профессия Data Scientist

  • Профессия Data Analyst

  • Курс «Математика для Data Science»

  • Курс «Математика и Machine Learning для Data Science»

  • Курс по Data Engineering

  • Курс «Machine Learning и Deep Learning»

  • Курс по Machine Learning

Python, веб-разработка

  • Профессия Fullstack-разработчик на Python

  • Курс «Python для веб-разработки»

  • Профессия Frontend-разработчик

  • Профессия Веб-разработчик

Мобильная разработка

  • Профессия iOS-разработчик

  • Профессия Android-разработчик

Java и C#

  • Профессия Java-разработчик

  • Профессия QA-инженер на JAVA

  • Профессия C#-разработчик

  • Профессия Разработчик игр на Unity

От основ — в глубину

  • Курс «Алгоритмы и структуры данных»

  • Профессия C++ разработчик

  • Профессия Этичный хакер

А также:

  • Курс по DevOps

Урок
№___

Тема: Практическая
работа №15

«Получение регрессионных
моделей в Mi
crosoft Excel»

Тип урока: практическая работа

Цели:

·       
Освоение способов построения по экспериментальным
данным регрессионной модели и графического тренда средствами
MSExcel;

·       
Формирование навыка по работе в MSExcel;

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

·       
Формирование профессиональных навыков работы.

Оборудование:

·       
ПК;

·       
Интерактивная доска;

·       
MS Excel

Ход
урока:

I. Организационный момент (5 мин.)

Приветствие.
Сообщение темы.

II. Актуализация
знаний (5 мин.)

Проверка
домашнего задания.

III. Практическая
работа (30 мин.)

Практическая работа №15

Задание 1

1.   
Ввести табличные данные зависимости
заболеваемости бронхиальной астмой от концентрации угарного газа в атмосфере
(см. рисунок).

2.   
Представить зависимость в виде
точечной диаграммы (см. рисунок).

Задание
2

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

1.Для
получения линейного тренда выполнить следующий алгоритм:

·       
щелкнуть правой кнопкой мышки на
маркерах диаграммы «Заболеваемость астмой»,
построенной в предыдущем задании;

·       
выполнить команду Добавить линию
тренда
;

·       
в открывшемся окне на вкладке Параметры
линии тренда
выбрать Линейная;

·       
установить галочки на флажках: показывать уравнения на диаграмме и поместить на диаграмму величину
достоверности аппроксимации
R^2;

·       
щелкнуть на кнопке ОК.

Полученная диаграмма представлена на рисунке:

2.
Получить экспоненциальный тренд. Алгоритм аналогичен предыдущему. На вкладке Параметры
линии тренда
выбрать Экспоненциальная. Результат представлен на
рисунке:

3.
Получить квадратичный тренд. Алгоритм аналогичен предыдуще­му. На закладке Параметры
линии тренда
выбрать Полиномиальный тренд с указанием степени 2. Результат
представлен на рисунке:

IV. Итог урока (2 мин.) Объявляются оценки.

V.
Домашнее задание (3 мин.)
Повторить § 35-36

Что такое модель данных в Excel?

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

Объяснение

  • Он позволяет интегрировать данные из нескольких таблиц, создавая отношения на основе общего столбца.
  • Модели данных используются прозрачно, предоставляя табличные данные, которые можно использовать в сводной таблице в Excel и сводных диаграммах в Excel. Он объединяет таблицы, позволяя проводить обширный анализ с использованием сводных таблиц, Power Pivot и Power View в Excel.
  • Модель данных позволяет загружать данные в память Excel.
  • Он сохраняется в памяти, где мы не можем его непосредственно увидеть. Затем можно указать Excel связать данные друг с другом с помощью общего столбца. Часть «Модель» модели данных относится к тому, как все таблицы связаны друг с другом.
  • Модель данных может получить доступ ко всей необходимой информации, даже если информация находится в нескольких таблицах. После создания модели данных данные доступны в памяти Excel. Имея данные в своей памяти, к данным можно получить доступ разными способами.

Примеры

Вы можете скачать этот шаблон модели данных Excel здесь — шаблон модели данных Excel

Пример # 1

Если у нас есть три набора данных, связанных с продавцом: первый содержит информацию о доходах, второй — доход продавца, а третий — расходы продавца.

Чтобы связать эти три набора данных и установить с ними связь, мы создаем модель данных, выполнив следующие шаги:

  • Преобразуйте наборы данных в объекты таблиц:

Мы не можем создать отношения с обычными наборами данных. Модель данных работает только с объектами таблиц Excel. Сделать это:

  • Шаг 1. Щелкните в любом месте набора данных, затем щелкните вкладку «Вставить», а затем щелкните «Таблица» в группе «Таблицы».

  • Шаг 2 — Установите или снимите флажок «Моя таблица имеет заголовки» и нажмите «ОК».

  • Шаг 3 — Выбрав новую таблицу, введите имя таблицы в поле «Имя таблицы» в группе «Инструменты».

  • Шаг 4 — Теперь мы видим, что первый набор данных преобразован в объект «Таблица». Повторяя эти шаги для двух других наборов данных, мы видим, что они также преобразуются в объекты «Таблица», как показано ниже:

Добавление объектов «Таблица» в модель данных: через соединения или отношения.

Через соединения

  • Выберите одну таблицу и щелкните вкладку «Данные», а затем щелкните «Подключения».

  • В появившемся диалоговом окне есть значок «Добавить». Разверните раскрывающийся список «Добавить» и нажмите «Добавить в модель данных».

  • В появившемся диалоговом окне нажмите «Таблицы», затем выберите одну из таблиц и нажмите «Открыть».

После этого будет создана модель данных книги с одной таблицей, и появится следующее диалоговое окно:

Итак, если мы повторим эти шаги и для двух других таблиц, модель данных теперь будет содержать все три таблицы.

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

Через отношения

Создайте связь: как только оба набора данных являются объектами Table, мы можем создать связь между ними. Сделать это:

  • Щелкните вкладку «Данные», а затем щелкните «Взаимосвязи».

  • Мы увидим пустое диалоговое окно, так как текущих подключений нет.

  • Щелкните «Создать», появится другое диалоговое окно.

  • Разверните раскрывающиеся списки «Таблица» и «Связанная таблица»: появится диалоговое окно «Создать связь», в котором можно выбрать таблицы и столбцы для использования в связи. В раскрытии «Таблицы» выберите набор данных, который мы хотим проанализировать каким-либо образом, а в «Связанной таблице» выберите набор данных, который имеет значения поиска.
  • Таблица подстановки в Excel — это меньшая таблица в случае отношений один-ко-многим, и она не содержит повторяющихся значений в общем столбце. В раскрытии «Столбец (внешний)» выберите общий столбец в основной таблице, в «Связанный столбец (основной)» выберите общий столбец в связанной таблице.

  • Выбрав все эти четыре настройки, нажмите «ОК». При нажатии «ОК» появится диалоговое окно, как показано ниже.

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

Теперь Excel создает взаимосвязь за кулисами, объединяя данные в модели данных на основе общего столбца: ID продавца (в данном случае).

Пример # 2

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

  • Нажмите «Вставить» -> «Сводная таблица».

  • В появившемся диалоговом окне выберите вариант «Использовать внешний источник данных», а затем нажмите «Выбрать соединение».

  • Нажмите «Таблицы» в появившемся диалоговом окне, выберите модель данных рабочей книги, содержащую три таблицы, и нажмите «Открыть».

  • Выберите опцию «Новый лист» в расположении и нажмите «ОК».

  • На панели полей сводной таблицы будут отображаться объекты таблицы.

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

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

Это очень помогает в случае модели / таблицы, содержащей большое количество наблюдений.

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

То, что нужно запомнить

  • Используя модель данных, мы можем анализировать данные сразу из нескольких таблиц.
  • Создавая отношения с моделью данных, мы избавляемся от необходимости использовать ВПР, СУММЕСЛИ, ИНДЕКС и формулы ПОИСКПОЗ, поскольку нам не нужно получать все столбцы в одной таблице.
  • Когда наборы данных импортируются в Excel из внешних источников, модели создаются неявно.
  • Связи между таблицами могут быть созданы автоматически, если мы импортируем связанные таблицы, которые имеют отношения первичного и внешнего ключей.
  • При создании отношений столбцы, которые мы соединяем в таблицы, должны иметь один и тот же тип данных.
  • С помощью сводных таблиц, созданных с помощью модели данных, мы также можем добавлять срезы и срезать сводные таблицы по любому полю, которое нам нужно.
  • Преимущество модели данных перед функциями LOOKUP () состоит в том, что она требует значительно меньше памяти.
  • Excel 2013 поддерживает отношения только один к одному или один ко многим, то есть одна из таблиц не должна иметь повторяющихся значений в столбце, на который мы ссылаемся.

Понравилась статья? Поделить с друзьями:
  • Получить котировки в excel
  • Пользовательская панель excel 2007
  • Получить координаты ячейки vba excel
  • Пользовательская кнопка в excel
  • Получить координату ячейки excel