Установка отсчета () отсечки в Альтаире?

Вот простой сюжет с использованием альтаира:

import altair as alt
import pandas as pd

df = pd.DataFrame([['a',2],['a',3],['b',4],['b',5],['b',4],['c',8]], columns=['Letters', 'Numbers'])

Я готовлю count() для каждой буквы: так a:2, b:3, а также c:1,

chart = alt.Chart(df).mark_bar().encode(
   alt.X('Letters:N', sort=alt.EncodingSortField(op='count', order='descending')),
   alt.Y('count():Q'))

Как я могу отфильтровать данные так, чтобы, например, count() должно быть>= 2, поэтому только a а также b строятся? Я знаю как это сделать с pandas, но хотел бы сделать все это в один шаг с altair,

1 ответ

Решение

Вы можете сделать это с помощью агрегатного преобразования, за которым следует преобразование фильтра:

alt.Chart(df).transform_aggregate(
    count='count()',
    groupby=['Letters']
).transform_filter(
    'datum.count >= 2'
).mark_bar().encode(
   alt.X('Letters:N', sort=alt.EncodingSortField(op='count', order='descending')),
   alt.Y('count:Q')
)

https://stackru.com/images/5c662e689705d92442e6dd1791d b4a482a5cf772.png

Другие вопросы по тегам