Шаг 4: Определение года выпуска каждого автомобиля

Если вы посмотрите на колонку Year (Год выпуска), то увидите, что в ней содержатся только двузначные числа, например, 70 или 72. Эти данные сами по себе не интересны с аналитической точки зрения, т.к. они не могут использоваться для сравнения. Однако их все-таки можно использовать с пользой. Поскольку нам известно, что данные были собраны в 1982 г., мы можем определить возраст каждого автомобиля на момент испытаний, а этот показатель мы можем позже использовать для сравнения автомобилей с целью выявления класса машин, которые наиболее эффективно расходуют топливо.

Мы можем добавить в таблицу колонку с указанием возраста автомобиля, значения для которой будут автоматически рассчитаны исходя из года выпуска. Напимер, если мы знаем, что испытания проводились в 1982 г., и, если значение в колонке Year равно 70, мы можем вычислить разницу путем вычитания. Для создания колонок в таблице данных можно использовать узел Производные колонки, который генерирует новые колонки на основе тех, которые уже имеются в исходной таблице данных. Узел Производные колонки создает копию исходной таблицы, которая включает дополнительные колонки данных.

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

Вы также можете использовать двойной щелчок правой кнопкой мыши по узлу Файлы CSV на скрипте, затем выбрать Добавить > Операции с колонками > Производные колонки. Продвинутым пользователям этот способ иногда кажется более удобным.

Соедините узлы CarData.csv и Производные колонки (если только вы не использовали опцию из контекстного меню Добавить). На скрипте вы увидите следующее:

tutorial car derive.rus

Откройте окно настроек узла Производные колонки и добавьте новую колонку под названием Age (Возраст). Чтобы добавить новую колонку, в верхней части диалогового окна свойств узла Производные колонки нажмите кнопку Добавить. Слева в списке колонок появится новая колонка:

tutorial car derive age1.rus

Имя колонки будет выбрано и готово для редактирования. Вы можете изменить его при добавлении колонки или позже. Указав новое имя колонки, нажмите Enter или щелкните левой кнопкой мыши в любом другом месте диалогового окна, чтобы завершить эту операцию. Знак вопроса слева от имени новой колонки означает, что тип данных новой колонки пока неизвестен узлу. Чаще всего после того, как указано имя новой колонки, пользователь сразу переходит к редактированию поля в правой части диалогового окна. Здесь вводится выражение, которое будет рассчитываться в ходе выполнения узла Производные колонки для каждой записи исходной таблицы, чтобы вычислить соответствующее значение новой колонки (в данном случае, колонки Age).

Задайте выражение для колонки с возрастом автомобилей: 82 - [Year].

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

tutorial car derive age.rus
Прежде чем вводить выражение в поле редактора, убедитесь в том, что имя новой колонки выбрано в списке. Обратите внимание, что на рисунке выше имя колонки имеет голубой фон, который означает, что она выбрана. В противном случае ваше выражение не будет сохранено, а узел не будет выполнен.
Язык символьных правил системы PolyAnalyst

Выражения, позволяющие генерировать значения новой колонки, составляются с помощью Языка символьных правил PolyAnalyst, или SRL (от англ. Symbolic Rule Language). SRL - многофункциональный алгоритмический язык, позволяющий составлять различные выражения (правила) для выполнения вычислительных операций - от простого сложения и вычитания до матричной статистики и манипуляций со значениями. На данном этапе вам не нужно владеть языком SRL в совершенстве, но рекомендуем позже ознакомиться с основами синтаксиса SRL, чтобы понимать и составлять SRL-выражения. Выходные данные некоторых узлов в PolyAnalyst могут быть представлены на языке SRL.

Если вы хорошо разбираетесь в математике, или у вас есть опыт работы с функциями в программе Microsoft Excel, то вы можете применить эти знания для начала работы с SRL-выражениями. Синтаксис SRL в PolyAnalyst не сильно отличается от Microsoft Excel, за исключением того, что в нем не допускается использование отдельных функций, типичных для Microsoft Excel. SRL нередко используется для заполнения отсутствующих значений и манипуляций с данными. Некоторые операции используются настолько редко, что будет удобнее написать простое SRL-выражение вместо того, чтобы собирать отдельный узел для каждой операции. На первый взгляд может показаться, что узел Производные колонки имеет ограниченную функциональность, поскольку используется только для создания колонок. Однако благодаря гибкости языка SRL, возможности узла практически неограничены. С помощью SRL можно выполнять такие операции, как изменение типа данных или формата значения, сложение, вычитание, умножение, вычисление степени и квадратных корней, конкатенация и разбиение строк, вычисление сумм, средних значений и мод, нахождение диапазона дат, сравнение значений и использование if-выражений.

Использование имен колонок в SRL-выражениях

Используя названия колонок в SRL-выражениях, необходимо заключать название колонки в квадратные скобки, например, [Year], если название содержит пробелы, неалфавитные или числовые символы, или если название совпадает с названием SRL-функции или оператора. В нашем случае слово Year не имеет пробелов и состоит только из алфавитных символов, однако, скобки необходимы, поскольку слово "year" также является названием SRL-функции. Функция year извлекает значение года из даты.

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

Добавление имени колонки в SRL-выражение

Нажмите на вкладку Колонки, расположенную над окном редактора выражения. Откроется вкладка со списком всех исходных колонок из родительского узла (в нашем случае - Файлы CSV). Щелкните дважды левой кнопкой мыши по имени нужной колонки в списке. Имя колонки автоматически вписывается в SRL-выражение.

tutorial car derive column insert.rus

Возможно, такой способ покажется вам более удобным, чем побуквенный ввод слова [Year] в выражение. Он также позволяет избежать орфографических ошибок, что особенно важно при составлении сложных выражений, а также при работе с 10 000 колонок или с длинными названиями колонок.

Проверка синтаксиса выражения

После того, как вы написали выражение, вы можете нажать на кнопку Проверить синтаксис, которая расположена над окном редактора выражений (вы не видите кнопки на рисунках, представленных выше, поскольку диалоговое окно было уменьшено в размере для удобства). Данная опция оценивает выражение для текущей выбранной колонки в списке (в нашем случае это колонка Age). Если будет обнаружена ошибка, на экране отобразится сообщение об ошибке. Если ошибка не обнаружена, PolyAnalyst отобразит иконку, обозначающую возвращаемое значение выражения, т.е. тип данных колонки (слева от названия новой колонки, в том месте, где раньше стоял знак вопроса). Число 82 является целым числом, колонка Year содержит целые числа. Если целое число вычесть из целого числа, то результатом будет целое число. Таким образом, новая колонка Age также будет содержать данные целочисленного типа. Данный тип данных обозначается иконкой "1". Если вы не нажмете кнопку Проверить синтаксис, PolyAnalyst проверит синтаксис в любом случае при нажатии ОК или Выполнить. Только эти две кнопки позволяют закрыть окно свойств и сохранить изменения. При нажатии на кнопку Отмена все изменения будут отменены и не сохранятся. Проверка синтаксиса - необязательное действие. Вы можете использовать данную опцию только при работе со сложными и длинными выражениями.

Перейдите к вкладке Общие и назовите узел "Расчет возраста автомобилей". Затем выполните его. Если мы посмотрим результаты, то увидим возраст автомобилей к тому времени, когда были собраны данные. Новая колонка Age находится в правом конце таблицы (последняя колонка в таблице). Всем автомобилям, представленным на скриншоте, по 12 лет.

tutorial car view age.rus
Повторное использование выходных данных узлов

Одним из преимуществ использования скрипта PolyAnalyst является перемещение результатов узлов в кэш. Если вы заметили, при запуске узла Производные колонки узел Файлы CSV не выполняется повторно. Это связано с тем, что на предыдущем этапе узел Файлы CSV уже завершил свою работу, сохранил результаты в кэше (сохранил импортированные данные в PolyAnalyst), и при запуске узла Производные колонки использовал результаты, сохраненные в кэше. Мы бы могли заново выполнить узел Файлы CSV, но в этом нет необходимости. Если бы мы изменили настройку узла Файлы CSV, или каким-то образом изменили бы результаты узла, то нам следовало бы выполнить этот узел заново. В данном руководстве используются сравнительно небольшие наборы данных. При работе с миллионами записей эта особенность работы узлов позволяет значительно экономить время.

Вторым преимуществом использования скрипта является то, что мы имеем 2 таблицы, с которыми можем работать. Мы можем многократно использовать выходные данные узла Файлы CSV в качестве входных данных для любого количества узлов. Далее нам не придется работать только с результатами узла Производные колонки. В других программных продуктах пользователь часто ограничен в выборе исходной таблицы данных на последующих этапах анализа, и чаще всего он может работать только с измененными ранее данным. PolyAnalyst же предоставляет пользователям возможность продолжить работу с исходной таблицей, а также параллельно использовать измененные данные.

Одним из распространенных ошибочных мнений пользователей является то, что узел Производные колонки изменяет данные, сохраненные узлом Файлы CSV, но это не так. Узел Производные колонки создает абсолютно новую таблицу, которая не зависит от оригинальной таблицы. Изменение данных узлами никаким образом не влияет на данные или настройку предыдущих узлов. Это важно запомнить. Также следует сказать, что на первый взгляд, данные, созданные узлом Производные колонки, отличаются от данных узла Файлы CSV. На самом деле, выходные данные узла Производные колонки состоят из двух частей: оригинальной таблицы и одной новой таблицы, состоящей из одной колонки (в нашем случае колонки Age). Когда вы просматриваете результаты узла Производные колонки, вы видите одну таблицу, но на самом деле там 2 таблицы, соединенные в одну. Это позволяет решить проблему масштабируемости, кроме того, мы воспринимаем результат узла Производные колонки как самостоятельную, новую и независимую таблицу.