Агрегирование
Агрегирование сводит таблицу к одной записи для каждой группы. В Vega-Lite его можно задать свойством aggregate в определении поля канала или преобразованием aggregate в массиве transform. Если нужно сохранить исходные записи и добавить к ним вычисленный итог, используйте присоединённое агрегирование.
Содержание страницы
- Агрегирование в канале кодирования
- Преобразование
aggregate - Поддерживаемые операции
argminиargmax- Экспоненциальное среднее
Агрегирование в канале кодирования
// Спецификация одиночного представления или слоя
{
...,
"mark/layer": ...,
"encoding": {
"x": {
"aggregate": ..., // Агрегирование
"field": ...,
"type": "quantitative",
...
},
"y": ...,
...
},
...
}
Свойство aggregate в определении поля вычисляет итоговую статистику поля: например, медиану, минимум или максимум. Если хотя бы один канал содержит aggregate, все поля каналов без функции агрегирования становятся полями группировки1. Для каждой группы создаётся отдельный итог.
Например, столбчатая диаграмма показывает среднее значение Acceleration по числу цилиндров Cylinders:
Агрегированные поля по умолчанию считаются количественными, а неагрегированные поля группировки в таких диаграммах — номинальными.
Канал detail позволяет добавить поле группировки или вычислить статистику, не связывая это поле непосредственно с видимым свойством. В следующем примере дополнительная группировка выполняется по Origin:
1В статистике поля группировки также называют независимыми переменными или переменными условий, а агрегируемые поля — зависимыми переменными. В бизнес-аналитике им соответствуют измерения и показатели.
Преобразование aggregate
// Любая спецификация представления
{
...,
"transform": [
{
// Преобразование агрегирования
"aggregate": [{"op": ..., "field": ..., "as": ...}],
"groupby": [...]
},
...
],
...
}
Та же средняя величина Acceleration по группам Cylinders, но через массив преобразований:
| Свойство преобразования | Тип | Описание |
|---|---|---|
aggregate |
AggregatedFieldDef[] | Обязательный массив объектов, определяющих поля для агрегирования. |
groupby |
FieldName[] | Поля данных для группировки. Если не указаны, используется одна группа, содержащая все объекты данных. |
Определение итогового поля
| Свойство | Тип | Описание |
|---|---|---|
op |
AggregateFieldOp | Обязательная операция агрегирования, применяемая к полям, например "sum", "average" или "count". См. полный список поддерживаемых операций. |
field |
FieldName | Поле данных, для которого вычисляется функция агрегирования. Обязательно для всех операций, кроме "count". |
as |
FieldName | Обязательное имя выходного поля для результата агрегирования. |
Для данных с null явно задавайте разбор типов полей в формате источника, если автоматическое определение типов может ошибиться.
Поддерживаемые операции
| Операция | Результат |
|---|---|
count |
Число записей группы. Считает сами записи, поэтому результат не зависит от указанного поля. |
valid |
Число значений поля, не равных null, undefined и NaN. |
values |
Список исходных записей группы. |
missing |
Число значений поля, равных null или undefined. |
distinct |
Число различных значений поля. |
sum |
Сумма значений. |
product |
Произведение значений. |
mean |
Среднее арифметическое значений поля. |
average |
Среднее арифметическое значений поля; эквивалентно mean. |
variance |
Выборочная дисперсия. |
variancep |
Дисперсия генеральной совокупности. |
stdev |
Выборочное стандартное отклонение. |
stdevp |
Стандартное отклонение генеральной совокупности. |
stderr |
Стандартная ошибка среднего. |
median |
Медиана. |
q1 |
Первый квартиль значений поля (нижняя квартильная граница). |
q3 |
Третий квартиль значений поля (верхняя квартильная граница). |
ci0 |
Нижняя граница бутстрепного 95%-го доверительного интервала среднего. |
ci1 |
Верхняя граница бутстрепного 95%-го доверительного интервала среднего. |
min |
Минимальное значение. |
max |
Максимальное значение. |
argmin |
Исходная запись, в которой значение поля минимально. Внутри encoding задаётся объектом; см. пример ниже. |
argmax |
Исходная запись, в которой значение поля максимально. Внутри encoding задаётся объектом; см. пример ниже. |
exponential |
Экспоненциальное скользящее среднее. Задаётся объектом; см. пример ниже. |
exponentialb |
Экспоненциальное скользящее среднее с поправкой на смещение. Задаётся объектом; см. пример ниже. |
argmin и argmax
Иногда нужно получить не само минимальное или максимальное значение, а другое поле той записи, в которой достигнут экстремум. Для этого предназначены argmin и argmax. В определении поля канала свойство aggregate задаётся объектом: argmax указывает поле, по которому ищется максимум, а argmin — поле для поиска минимума.
В этой диаграмме показан производственный бюджет фильма с наибольшими сборами в США в каждом крупном жанре:
Тот же результат можно получить преобразованием aggregate и обращением к вложенному полю выбранной записи:
Подписи на конце линий
argmax помогает находить последнюю точку линии и размещать возле неё подпись:
Экспоненциальное среднее
Операция exponential создаёт сглаженное скользящее среднее, в котором недавние значения имеют больший вес. Это сглаженная альтернатива простому скользящему среднему: она подходит, когда нужно придать больший вес недавним значениям, избегая резкого изменения при выходе значений из окна усреднения. Операция задаётся объектом, в котором exponential указывает вес — число от 0 до 1. Вариант exponentialb добавляет поправку на смещение; пример записи — {"exponentialb": 0.5}.