聚合#

在 Altair 中有两种方式可以聚合数据:在编码本身中进行,或者使用顶层聚合转换。

字段定义的 aggregate 属性可用于计算数据组的聚合摘要统计量(例如,中位数、最小值、最大值)。

如果在指定的编码通道中至少有一个字段包含 aggregate 属性,则生成的可视化将显示聚合数据。在这种情况下,所有未指定聚合函数的字段在聚合过程中都将被视为分组字段 (group-by fields)。

例如,以下条形图按气缸数分组,聚合了 acceleration 的均值。

import altair as alt
from vega_datasets import data

cars = data.cars.url

alt.Chart(cars).mark_bar().encode(
    y='Cylinders:O',
    x='mean(Acceleration):Q',
)

Altair 的简写字符串

# ...
x='mean(Acceleration):Q',
# ...

为了方便而提供,等同于以下较长的形式

# ...
x=alt.X(field='Acceleration', aggregate='mean', type='quantitative'),
# ...

有关简写编码规范的更多信息,请参阅分箱与聚合

可以使用显式计算的聚合来显示相同的图表,方法是使用 transform_aggregate() 方法

alt.Chart(cars).mark_bar().encode(
    y='Cylinders:O',
    x='mean_acc:Q'
).transform_aggregate(
    mean_acc='mean(Acceleration)',
    groupby=["Cylinders"]
)

有关可用聚合的列表,请参阅分箱与聚合

转换选项#

transform_aggregate() 方法基于 AggregateTransform 类构建,该类具有以下选项

点击显示表格

属性

类型

描述

aggregate

array(AggregatedFieldDef)

定义要聚合的字段的对象数组。

groupby

array(FieldName)

用于分组的数据字段。如果未指定,将使用包含所有数据对象的单个组。

AggregatedFieldDef 对象具有以下选项

点击显示表格

属性

类型

描述

as

FieldName

用于每个聚合字段的输出字段名。

field

FieldName

用于计算聚合函数的数据字段。除 "count" 外,所有聚合操作都需要此字段。

op

AggregateOp

要应用于字段的聚合操作(例如,"sum""average""count")。有关更多信息,请参阅支持的聚合操作的完整列表 <https://vega.github.io/vega-lite/docs/aggregate.html#ops>__。