В Vega-Lite поле impute в кодировании используется для
восстановления пропущенных значений в данных непосредственно на этапе
визуального описания. Это механизм заполнения разрывов в
последовательностях, который позволяет поддерживать непрерывность
визуальных представлений без предварительной очистки датасета.
Пропущенные значения (null, undefined или отсутствующие записи)
нарушают целостность визуальных преобразований, особенно в случаях
временных рядов, упорядоченных измерений или категориальных
последовательностей с ожидаемой непрерывностью. Поле impute
в Vega-Lite задаёт стратегию восстановления таких значений прямо в
декларации кодирования канала.
Основная идея заключается в том, что визуализация может самостоятельно интерпретировать «дыры» в данных и подставлять вычисленные или контекстные значения, не изменяя исходный массив данных.
Поле impute используется внутри определения канала
кодирования:
{
"mark": "line",
"encoding": {
"x": { "field": "t", "type": "quantitative" },
"y": {
"field": "value",
"type": "quantitative",
"impute": {
"method": "value",
"value": 0
}
}
}
}
Здесь impute применяется к каналу y, что
означает восстановление отсутствующих значений именно в этом
измерении.
Параметр method определяет стратегию заполнения
пропусков:
Каждый метод применяется в зависимости от структуры данных и ожидаемой логики восстановления.
Используется при method: "value". Определяет конкретное
значение, подставляемое вместо пропуска.
"impute": {
"method": "value",
"value": 0
}
Параметр groupby задаёт поля, по которым производится
разбиение данных перед импутацией. Это критично для многосерийных
графиков.
"impute": {
"method": "mean",
"groupby": ["category"]
}
В этом случае заполнение пропусков выполняется отдельно для каждой категории.
Хотя напрямую не всегда задаётся внутри impute, логика
восстановления часто зависит от упорядочивания данных через канал
x или order. Особенно это важно для методов
previous и next, где значение определяется
соседними точками.
Процесс импутации в Vega-Lite можно разложить на несколько этапов:
groupby)Важно, что импутация происходит на уровне трансформации данных внутри движка визуализации, а не на уровне исходного JSON.
{
"data": {
"values": [
{"t": 1, "v": 10},
{"t": 2},
{"t": 3, "v": 30}
]
},
"mark": "line",
"encoding": {
"x": {"field": "t", "type": "quantitative"},
"y": {
"field": "v",
"type": "quantitative",
"impute": {
"method": "mean"
}
}
}
}
В этом случае отсутствующее значение при t = 2 будет
вычислено как среднее между доступными значениями.
Наиболее предсказуемое поведение наблюдается при
quantitative типе. Здесь методы mean,
median, min, max имеют
математическую интерпретацию и дают стабильный результат.
При nominal или ordinal типах использование
impute ограничено. Чаще применяются методы
value, previous, next, так как
статистические агрегаты не имеют смысла.
Помимо использования в encoding, Vega-Lite поддерживает
отдельный трансформационный блок impute:
{
"transform": [
{
"impute": "v",
"key": "t",
"value": 0
}
]
}
Различие заключается в уровне применения:
В сложных спецификациях оба подхода могут комбинироваться, но обычно выбирается один, чтобы избежать дублирования вычислений.
При визуализации нескольких линий или групп данных
groupby предотвращает смешивание значений между
сериями.
Пример:
"impute": {
"method": "linear",
"groupby": ["series"]
}
Каждая серия интерпретируется независимо, и пропуски восстанавливаются внутри локального контекста.
Методы previous и next не могут
восстановить значения на границах последовательности, если соседние
точки отсутствуют.
Корректность методов, основанных на соседних значениях, зависит от правильного упорядочивания данных. Без стабильного порядка результат становится неопределённым.
Использование mean или median может
сглаживать данные и скрывать локальные аномалии, что влияет на
интерпретацию визуализации.
Заполнение пропусков в датах наблюдений для сохранения непрерывности линии графика.
Восстановление пропущенных измерений при нерегулярной передаче данных.
Поддержание полного набора категорий на оси, даже если часть значений отсутствует.
Импутированные значения участвуют в расчёте шкал так же, как и исходные данные. Это влияет на:
В результате восстановленные значения могут изменить общую геометрию графика, что важно учитывать при аналитической визуализации.
Импутация не равна визуальной интерполяции:
Обе концепции могут использоваться совместно, но действуют на разных уровнях обработки.