Вы находитесь на странице: 1из 17

Задание №4 – Выявление и заполнение пропусков

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


В этом задании будут рассмотрены методы выявления и заполнения
пропущенных значений в наборах данных.
Одним из тех факторов, которые снижают качество анализируемых данных и
достоверность результатов анализа, является наличие в них пропущенных значений.
Пропущенное значение выглядит как пустая ячейка в таблице, где в соответствии с
логикой и структурой данных должно находиться некоторое значение.
Сами по себе пропущенные значения (если их не очень много) не угрожают
информативности данных и не искажают их. Наоборот, к искажению может привести
некорректное применение процедур заполнения пропущенных значений. Тем не менее
восстанавливать пропущенные значения необходимо. Главная причина этого заключается
в том, что многие алгоритмы Data Mining не могут обрабатывать пропуски.

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

Разрабатываемый сценарий будет включать в себя следующие основные шаги:


 импорт исходных данных;
 выявление пропусков;
 заполнение пропусков.

1. Запустите аналитическую платформу Loginom и создайте в личной папке пакет с


именем Выявление и заполнение пропусков.

Импортируйте данные из файла Потребление электроэнергии.txt.


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

Рис. 1

Помимо собранных данных по месячному потреблению электроэнергии,


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

Импортируйте данные из файла Календарь.txt.


Присвойте созданному узлу имя Календарь. Просмотрите результаты выполнения
узла (рис. 2).

Рис. 2

Разработаем сценарий автоматического выявления пропущенных значений в файле


Потребление электроэнергии.txt. Для этого вначале определим временные интервалы
электропотребления для каждого из объектов (Объект1, Объект2, Объект3), а затем
проверим наличие пропущенных значений внутри данных интервалов.

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


основных шагов:
1. Определение временных интервалов потребления электроэнергии для каждого из
объектов (Объект1, Объект2, Объект3);
2. Выявление пропущенных значений внутри данных интервалов.

Определение временных интервалов потребления электроэнергии для


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

Добавляемые поля будут дублировать значение даты учета потребления


электроэнергии (поле COL1), рис. 3.
Рис. 3

Присвойте созданному узлу имя Добавление новых полей. Просмотрите


результаты выполнения узла (рис. 4).

Рис. 4

Теперь необходимо решить задачу, чтобы в поле Дата первая хранилась дата
начала потребления электроэнергии объектом, а в поле Дата последняя – дата окончания
потребления электроэнергии объектом. Для решения этой воспользуемся обработчиком
Группировка.
Примечание: Обработчик Группировка выполняет действия над набором данных
аналогичные действиям SQL-запроса с применением предложения GROUP BY (группировка
результатов при выборке из базы данных). Обработчик позволяет объединять записи избранных
полей в группы, а для оставшихся полей вычислять статистические показатели (сумму, среднее,
минимум и т.д.). Для каждой группы возвращается одна строка. Статистические показатели при
этом вычисляются для каждой группы, а не для всего набора в целом.

Настройки узла Группировка представлены на рис. 5:


 поле Объект помещено в список Группа, т.е. записи будут объединяться по
объектам электропотребления (Объект1, Объект2, Объект3);
 поля Дата первая и Дата последняя являются показателями, к которым
применяются функции агрегации: к полю Дата первая – функция Минимум, к полю
Дата последняя – функция Максимум. Выбор функции агрегации для каждого
показателя производится в отдельном окне. Чтобы его открыть, нужно дважды кликнуть
по полю в списке Параметры или вызвать это окно из контекстного меню.

Рис. 5

Присвойте созданному узлу имя Интервал дат для объектов. Просмотрите


результаты выполнения узла – для каждого объекта получено две даты – дата начала и
дата окончания потребления электроэнергии (рис. 6).

Рис. 6

Выявление пропущенных значений внутри сформированных интервалов


Для выявления пропущенных значений в сформированных интервалах совместим
их с «эталонным» календарем дат, хранящемся в узле Календарь. Для этого
воспользуемся обработчиком Слияние.
Примечания:
1. Обработчик Слияние предназначен для соединения двух наборов данных по ключевым
полям. Для этого необходимо задать общие поля двух таблиц. Предполагается, что в
присоединяемом наборе данных есть поля, которые соответствуют полям в исходной (главной)
таблице, это и есть ключевые поля или поля связи. Кроме того, в таблицах могут быть поля,
которые имеются только во входящем или присоединяемом наборе данных. Такие поля можно
добавить к результирующей выборке, образующейся после слияния.
2. В обработчике Слияние данные ключевых полей основного (главного) и
присоединяемого наборов данных сравниваются между собой. Результат операции сравнения
используется алгоритмом слияния для формирования результирующего набора. Слияние наборов
данных, связанных по ключевым полям – аналог операции JOIN в SQL (соединение таблиц в
запросах).
3. В обработчике Слияние возможны следующие способы (типы операции) слияния:
а) Полное соединение;
б) Внутреннее соединение;
в) Левое соединение;
г) Правое соединение;
д) Разность.
За исключением способа Разность, каждый из перечисленных способов слияния является
аналогом определенного типа соединения в языке запросов SQL. Примеры соединения таблиц с
использованием различных способов слияния приведены в справочной системе Loginom.

При подключении входных наборов данных (таблиц) к узлу Слияния важно


определить, какая таблица будет являться главной, а какая присоединяемой. В
рассматриваемом примере данный этап не играет роли, так как для соединения таблиц
будет использоваться операция полного соединения без установления связей по
ключевым полям (пояснения приведены ниже). Для определенности выберем таблицу
узла Календарь в качестве главной, а таблицу узла Интервал дат для объектов – в
качестве присоединяемой (можно сделать наоборот).

При настройке узла выберите операцию Полное соединение, при этом поля между
собой не связывайте. Такое соединение является аналогом CROSS JOIN соединения в
SQL.
Примечание: Если в операции Полное соединение ключевые поля не связываются, то
задействуется алгоритм CROSS JOIN соединения (перекрестное соединение или декартово
произведение), при котором каждая строка одной таблицы соединяется с каждой строкой второй
таблицы, давая тем самым в результате все возможные сочетания строк двух таблиц. При таком
соединении порядок таблиц (левая, правая) неважен и отсутствует необходимость в сопоставлении
ключевых полей.

Присвойте созданному узлу имя Слияние таблиц. Просмотрите результаты


выполнения узла – в полученном наборе данных все значения календаря содержат все
объекты (или все объекты содержат все значения календаря), рис. 7.
Всего получилось 252 записи (84  3 = 252; 84 – количество записей в узле
Календарь, 3 – количество записей в узле Интервал дат для объектов).

Рис. 7

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


в интервал электропотребления каждого из объектов (Объект1, Объект2, Объект3). Для
этого воспользуемся обработчиком Калькулятор, в котором зададим правило проверки
вхождения календарной даты в интервал электропотребления. Но прежде чем
воспользоваться этим обработчиком, выполним обработчик Параметры полей, с
помощью которого изменим имена и метки полей Дата1, Дата первая|Минимум и Дата
последняя|Максимум с целью их более удобной идентификации и отображения.
Примечание: Обработчик Параметры полей предназначен для изменения следующих
параметров полей набора данных:
– Имя;
– Метка;
– Тип данных;
– Вид данных;
– Назначение.
Кроме того, данный обработчик позволяет настроить кэширование набора данных
целиком, либо отдельных его полей.
Кэширование – сохранение однажды вычисленного значения.
Стратегия ленивых вычислений предусматривает расчет вычисляемых значений только
при необходимости их использования. При этом промежуточные вычисления не хранятся в памяти
компьютера и пересчитываются каждый раз, когда такая необходимость возникает. Такая
стратегия существенно сокращает требования к вычислительным ресурсам, в частности, к
оперативной памяти компьютера. Однако, в случае, если алгоритм предусматривает многократное
использование промежуточных данных, эта стратегия может приводить к увеличению времени
выполнения алгоритма. В этих случаях целесообразно сохранить промежуточные расчеты в
памяти для последующего использования.
При выполнении каждого узла Loginom старается использовать минимум памяти, но этот
подход приводит к увеличению количества вычислений, требуемых для получения каждой порции
данных. В тех случаях, когда нужно повысить скорость выполнения отдельных узлов (за счет
увеличения объема необходимой памяти), перед ними необходимо вставить узел Параметры
полей с включенным кэшированием соответствующих полей или всего узла. Тогда перед
критическим узлом требуемые данные загружаются в оперативную память, и их получение
обработчиком будет происходить гораздо быстрее. Особенно полезным такой подход может быть
в случаях, когда из узла со сложными расчетами выходит несколько ветвей. Кэширование может
не дать прироста быстродействия в случае, когда все данные не помещаются в оперативную
память и операционная система начинает выгружать их на жесткий диск.
Таким образом, кэширование целесообразно использовать при неоднократном
использовании вычисляемых значений последующими обработчиками и визуализаторами во
избежание выполнения повторных вычислений. По умолчанию операция кэширования отключена.

Создайте узел Параметры полей и настройте его в соответствии с рис. 8 (измените


имена и метки полей Дата1, Дата первая|Минимум и Дата последняя|Максимум).

Рис. 8

Присвойте созданному узлу имя Изменение параметров полей. Просмотрите


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

Рис. 9

Примечание: Для изменения имен и меток полей Дата1, Дата первая|Минимум и Дата
последняя|Максимум нами был использован обработчик Параметры полей. В данном случае
задача могла бы быть решена в настройках выходного порта. При этом следует заметить, что в
настройках порта нельзя изменять тип данных, вид данных и назначение данных. Данные
параметры можно изменить, используя только обработчик Параметры полей.
Используя обработчик Калькулятор, создайте правило проверки вхождения
календарной даты в интервал электропотребления (рис. 10).

Рис. 10

Присвойте созданному узлу имя Проверка принадлежности дат интервалам.


Просмотрите результаты выполнения узла (рис. 11). В поле Флаг принадлежности
выводится значение true при вхождении даты в интервал и false – при нахождении даты
за границами интервала.

Рис. 11

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


интервалам (Флаг принадлежности имеет значение true). Для создания правила
(фильтра) отбора нужных записей воспользуйтесь обработчиком Фильтр строк.
Примечание: Обработчик Фильтр строк позволяет отобрать записи, которые
удовлетворяют одному или нескольким условиям. Несколько условий объединяются в сложное
условие с помощью логических операторов И/ИЛИ.
Входной набор данных делится на два выходных набора (таблицы данных): записи,
удовлетворяющие условию фильтрации, и записи, не удовлетворяющие условию.

Присвойте созданному узлу имя Даты в интервалах электропотребления.


Просмотрите результаты выполнения узла: 113 записей удовлетворяют условию отбора
(рис. 12) и 139 записей – не удовлетворяют (рис. 13).
Рис. 12

Рис. 13

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


содержащий даты возможного потребления электроэнергии объектами (рис. 12). Теперь
на этот набор данных может быть наложена собранная нами информация об
электропотреблении объектов по месяцам (узел Потребление электроэнергии).
Перед тем, как выполнить операцию левого соединения двух таблиц, удалим из
таблицы Даты в интервалах электропотребления ряд полей, которые являются
неактуальными (информационно избыточными): Дата Минимум, Дата максимум и
Флаг принадлежности (рис. 12).
Удаление неактуальных полей можно выполнить в настройках выходного порта
узла (рис. 14).
Примечание: При необходимости восстановления удаленных полей можно
воспользоваться кнопкой Создать выходные для всех входных… на вкладке Связи окна
Настройка выходных столбцов.

Рис. 14

Просмотрите результаты выполнения узла (рис. 15).


Рис. 15

Используя обработчик Слияние, выполните операцию левого соединения для


наборов данных, находящихся в узлах Даты в интервалах электропотребления и
Потребление электроэнергии (при настройке соединения не забудьте связать ключевые
поля).
Примечание: При левом соединении (аналог LEFT JOIN в SQL) главная и
присоединяемая таблицы связываются по ключевым полям, при этом левой таблицей является
главная таблица. В результирующий набор данных попадают все записи главной таблицы, они
дополняются полями из присоединяемой таблицы, при этом если для записи из главной таблицы
не было найдено совпадения по ключевым полям, то добавляемые поля заполняются значением
Null.

Присвойте созданному узлу имя Выявление пропусков. Просмотрите результаты


выполнения узла (рис. 16).

Рис. 16

В полученном наборе данных потребление электроэнергии представлено по


месяцам, поэтому логичным будет отобразить не дату, а месяц, кроме того целесообразно
удалить метку времени.
Используя обработчик Дата и время, задайте для даты формат отображения
Год+Месяц.
Примечание: Обработчик Дата и время производит трансформацию данных формата
Дата/Время. Суть такого преобразования заключается в том, что на основе столбца с
информацией о дате/времени формируется один или несколько дополнительных столбцов, в
которых выделяется определенная информация о дате/времени.
Имеется возможность задать пользовательский формат отображения даты при помощи
произвольного текста и предопределенных маркеров форматирования. Перечень маркеров
форматирования приведен в справочной системе Loginom.
Присвойте созданному узлу имя Форматирование даты. Произведите настройку
результирующего набора данных в выходном порту узла. Просмотрите результаты
выполнения узла (рис. 17).

Рис. 17

В полученном наборе данных по месячному электропотреблению можно легко


обнаружить пропуски. Однако если набор данных содержит большое число записей,
целесообразным является их сортировка или фильтрация, что позволит более наглядно
отобразить пропущенные значения.
Используя обработчик Сортировка, задайте размещение пропусков вверху
таблицы.
Присвойте созданному узлу имя Сортировка пропусков. Просмотрите результаты
выполнения узла (рис. 18).

Рис. 18

Используя обработчик Фильтр строк, отберите записи с пропущенными


значениями по потреблению электроэнергии.
Присвойте созданному узлу имя Отбор пропусков. Просмотрите результаты
выполнения узла (рис. 19).
Рис. 19

Разработанный сценарий представлен на рис. 20.

Рис. 20

Добавьте к узлу Форматирование даты визуализатор Куб. Настройте


визуализатор в соответствии с рис. 21.

Рис. 21

2. После этапа обнаружения пропусков, переходим к этапу их заполнения.


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

Этап заполнения пропущенных значений может быть реализован путем добавления


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

Добавьте в пакет второй модуль, переименуйте модули пакета в соответствии с


рис. 22.

Рис. 22

Для получения результатов обработки (выполнения) другого узла, находящегося за


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

Установите для узла Форматирование даты модификатор доступа Внутренний


(доступен только внутри текущего пакета).
Перейдите в Модуль2 – Заполнение пропусков. Используя обработчик Узел-
ссылка, настройте в качестве источника данных узел Форматирование даты.
Присвойте созданному узлу имя Ссылка на узел Форматирование даты.
Просмотрите результаты выполнения узла (рис. 23).

Рис. 23

Используя обработчик Заполнение пропусков, создайте и настройте узел


Заполнение пропусков средним (пропущенные значения заполните средним значением).
Просмотрите результаты выполнения узла (рис. 24).
Рис. 24

Добавьте к узлу Ссылка на узел Форматирование даты визуализатор


Статистика. Посмотрите в визуализаторе среднее значение по потреблению
электроэнергии (рис. 25), сравните его с восстановленным значением (рис. 24).

Рис. 25

Заметим, что разработанный узел Заполнение пропусков средним обрабатывает


весь набор данных, без учета индивидуальной динамики потребления электроэнергии
объектами в различные годы, что является не совсем корректным. Для того чтобы
выполнить заполнение пропусков в разрезе каждого объекта по каждому году
разработаем новый сценарий.
Так как в разрабатываемом сценарии среднее значение электропотребления будет
определяться по годам, то нам будет необходимо из даты выделить год. В узле Ссылка на
узел Форматирование даты дата имеет строковый тип и представлена в формате
Год+Месяц, что не позволяет её преобразовать в тип Дата/Время. Это, в свою очередь, не
позволяет выходной набор данных узла Ссылка на узел Форматирование даты
обработать компонентом Дата и время. В связи с этим в качестве источника данных для
нового сценария будем использовать узел Выявление пропусков.

Разработку нового сценария будем производит в модуле Модуль2 – Заполнение


пропусков.
Используя обработчик Узел-ссылка, настройте в качестве источника данных узел
Выявление пропусков.
Присвойте созданному узлу имя Ссылка на узел Выявление пропусков.
Просмотрите результаты выполнения узла (рис. 26).
Рис. 26

Используя обработчик Дата и время, задайте для даты формат отображения Год
(строковый тип).
Присвойте созданному узлу имя Выделение даты. Просмотрите результаты
выполнения узла, поле Дата в выходном наборе данных не удаляйте (рис. 27).

Рис. 27

Используя обработчик Группировка, рассчитайте среднее значение


электропотребления для каждого объекта по каждому году.
Присвойте созданному узлу имя Группировка по объектам и годам. Просмотрите
результаты выполнения узла (рис. 28).

Рис. 28
Проверьте правильность произведенных расчетов в табличном процессоре MS
Excel.
Создайте рабочую книгу MS Excel с именем Среднее электропотребление.xlsx.
Импортируйте в книгу данные из файла Потребление электроэнергии.txt (Данные –
Получение внешних данных – Из текста). При импорте смените кодировку
1254:Турецкая на 1251:Кириллица, для столбца Дата укажите формат даты.
Отформатируйте импортированный набор данных (рис. 29).

Рис. 29

Для нахождения среднего значения электропотребления для каждого объекта по


каждому году можно использовать Фильтр, функцию СРЗНАЧЕСЛИМН, Сводную
таблицу, а также другие функции и инструменты MS Excel. Воспользуемся одним из
самых эффективных инструментов для решения данной задачи – Сводной таблицей
(Вставка – Сводная таблица).
Разместите сводную таблицу рядом с импортированными данными, задайте ей
структуру и отформатируйте в соответствии с рис. 30. Управление отображением
различных временны́ х интервалов (дни, месяцы, кварталы, годы) осуществляется в окне
Группировка (вызывается через контекстное меню при выделении ячейки с датой).

Рис. 30

Сравните результаты, полученные в Loginom (рис. 28) и Excel (рис. 30) – убедитесь
в их совпадении.
Перейдите в Loginom. Используя обработчик Слияние, выполните операцию
левого соединения для получения набора данных, представленного на рис. 30. Присвойте
созданному узлу имя Левое соединение.
Обратите внимание, что правый столбец заполнен средними значениями по годам.

Рис. 31

Идея заполнения пропусков в полученном наборе данных состоит в том, что в него
будет добавлен новый столбец, который повторяет столбец Потребление эл энергия, кВт
по заполненным значениям, а пропуски заполняются значениями из столбца Потребление
эл энергия, кВт час|Среднее.
Используя обработчик Калькулятор, добавьте в набор данных новый столбец
(поле) с заполненными пропусками (рис. 32). При разработке выражения воспользуйтесь
комбинацией функций IF и IsNull (функцию IsNull используйте для проверки пустых
значений в столбце Потребление эл энергия, кВт). Присвойте созданному узлу имя
Калькулятор – Заполнение пропусков.

Рис. 32

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


Год+Месяц.
Присвойте созданному узлу имя Форматирование даты. Произведите настройку
результирующего набора данных (в выходном порту узла удалите неактуальные поля).
Просмотрите результаты выполнения узла (рис. 33).
Рис. 33

Добавьте к узлу Форматирование даты визуализатор Таблица. Настройте


визуализатор в соответствии с рис. 34 (задайте первый уровень сортировки по объектам,
второй – по дате).

Рис. 34

3. Разработанные сценарии представлены на рис. 35.

Рис. 35

Сохраните пакет, завершите работу с Loginom.

Вам также может понравиться