Вычисляемые поля — Calculate

Преобразование calculate создаёт новые поля набора данных, вычисляя их из других полей с помощью выражений.

В этом простом примере мы берём последовательность исходных значений и вычисляем несколько тригонометрических величин:

import altair as alt
import pandas as pd

data = pd.DataFrame({'t': range(101)})

alt.Chart(data).mark_line().encode(
    x='x:Q',
    y='y:Q',
    order='t:Q'
).transform_calculate(
    x='cos(datum.t * PI / 50)',
    y='sin(datum.t * PI / 25)'
)

Каждый аргумент transform_calculate — строка с выражением Vega. Язык выражений предоставляет определённый набор операций в стиле JavaScript для вычисления нового поля из существующего.

Чтобы упростить составление выражений Vega в Python, Altair предоставляет модуль expr. Его константы и функции позволяют записывать выражения с синтаксисом Python, например:

alt.Chart(data).mark_line().encode(
    x='x:Q',
    y='y:Q',
    order='t:Q'
).transform_calculate(
    x=alt.expr.cos(alt.datum.t * alt.expr.PI / 50),
    y=alt.expr.sin(alt.datum.t * alt.expr.PI / 25)
)

Выражения Altair формируют допустимые выражения Vega. При таком подходе интерпретатор Python проверяет синтаксис, а автодополнение модуля expr помогает находить доступные функции и константы.

Эти выражения также можно использовать при фильтрации данных, которую мы рассмотрим далее.

Параметры преобразования

Метод Chart.transform_calculate основан на классе CalculateTransform, который поддерживает следующие параметры:

Нажмите, чтобы показать таблицу
СвойствоТипОписание
asFieldName

Поле для хранения вычисленного значения формулы.

calculatestring

Строка с выражением. Переменная datum обозначает текущий объект данных.