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

Преобразование impute заполняет недостающие сочетания значений ключевого поля и группы. Для каждого отсутствующего значения ключа оно создаёт новую запись. Значение восстанавливаемого поля задаётся константой либо вычисляется по статистике существующих записей, например по среднему. В Vega-Lite impute можно указать в определении поля канала или в массиве transform.

Содержание страницы

Восстановление в канале кодирования

// Спецификация одиночного представления или слоя
{
  ...,
  "mark/layer": ...,
  "encoding": {
    "x": {
      "field": ...,
      "type": "quantitative",
      "impute": {...},               // Восстановление пропусков
      ...
    },
    "y": ...,
    ...
  },
  ...
}

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

Свойство Тип Описание
frame [number или null, number или null] Массив из двух элементов, задающий окно для применения выбранного метода. Число означает смещение относительно текущей записи, null — неограниченное число предшествующих или последующих записей. Например, [-5, 5] включает пять предыдущих и пять следующих записей. По умолчанию: [null, null], то есть все записи.
keyvals Any[] или ImputeSequence Значения ключа для восстановления: массив или объект числовой последовательности. Если заданы, добавляются к значениям ключа, наблюдаемым во входных данных. Если не заданы, используются все уникальные значения поля key. При impute в encoding ключом служит поле X, если восстанавливается Y, и наоборот. Если группировки нет, свойство обязательно.
method ImputeMethod Метод вычисления поля новых записей: "value", "mean", "median", "max" или "min". По умолчанию: "value".
value Any Значение поля для метода "value".

В этом варианте Vega-Lite сам определяет ключ и поля группировки. Если восстанавливается поле оси X, ключом становится поле Y, и наоборот. Группы формируются по заданным полям каналов свойств примитива, канала key и канала detail. Отсутствующее значение Y в группе приводит к созданию новой записи при восстановлении X, и наоборот.

В следующем примере восстанавливается поле Y (b), поэтому ключом служит поле X (a), а группы задаёт цветовое поле c. Для группы c = 1 отсутствует запись с a = 3. Новая запись получает a = 3, c = 1 и b = 0:

Вместо постоянной value можно вычислить пропущенное значение по существующим точкам, например методом "mean":

Свойство frame ограничивает окно записей для расчёта. Значение [-2, 2] включает две предыдущие и две следующие записи:

Дополнительные значения ключа

keyvals добавляет значения ключа, для которых нужно проверить наличие записей. Без него значения берутся из всех уникальных значений ключевого поля. Если полей группировки нет (например, отсутствует канал color в примерах выше), keyvals обязательно: иначе преобразование не повлияет на данные.

Значения можно перечислить массивом:

Или задать объектом числовой последовательности со следующими свойствами:

Свойство последовательности Тип Описание
start number Начальное значение последовательности. По умолчанию: 0.
stop number Обязательное конечное значение последовательности, не включаемое в результат.
step number Шаг между соседними значениями. По умолчанию: 1 или -1, если stop < start.

Преобразование impute в массиве transform

// Спецификация представления
{
  ...,
  "transform": [
    ...,
    {
      // Преобразование восстановления пропусков
      "impute": ...,
      "key": ...,
      "keyvals": ...,
      "groupby": [...],
      "frame": [...],
      "method": ...,
      "value": ...
    },
    ...
  ],
  ...
}
Свойство Тип Описание
impute FieldName Обязательное поле данных, пропущенные значения которого нужно восстановить.
key FieldName Обязательное ключевое поле, однозначно определяющее объекты данных внутри группы. Восстанавливаются значения ключа, которые встречаются в данных, но отсутствуют в текущей группе.
keyvals Any[] или ImputeSequence Значения ключа для восстановления: массив или объект числовой последовательности. Если заданы, добавляются к значениям ключа, наблюдаемым во входных данных. Если не заданы, используются все уникальные значения поля key. При impute в encoding ключом служит поле X, если восстанавливается Y, и наоборот. Если группировки нет, свойство обязательно.
groupby FieldName[] Необязательный массив полей группировки. Восстановление выполняется отдельно для каждой группы.
frame [number или null, number или null] Массив из двух элементов, задающий окно для применения выбранного метода. Число означает смещение относительно текущей записи, null — неограниченное число предшествующих или последующих записей. Например, [-5, 5] включает пять предыдущих и пять следующих записей. По умолчанию: [null, null], то есть все записи.
method ImputeMethod Метод вычисления поля новых записей: "value", "mean", "median", "max" или "min". По умолчанию: "value".
value Any Значение поля для метода "value".

Ту же диаграмму, что и выше при impute в encoding, можно создать преобразованием impute. Здесь key и groupby нужно указать вручную: в encoding они определялись автоматически.

Если groupby не указан, для работы преобразования нужно задать keyvals: