跳转到主要内容

用于评估Altair转换的Python引擎。

项目描述

altair-transform

Python对Altair/Vega-Lite转换进行评估。

build status code style black

altair-transform需要Python 3.6或更高版本。使用以下命令安装:

$ pip install altair_transform

Altair-transform可以直接在Python中评估AltairVega-Lite转换。这在以下示例中得到了说明。

示例:提取数据

Vega-Lite规范包括在图表规范内部对输入数据进行广泛转换的能力。以下是一个示例,展示了在Altair中实现的Gaussian随机游走的滑动窗口平均值

import altair as alt
import numpy as np
import pandas as pd

rand = np.random.RandomState(12345)

df = pd.DataFrame({
    'x': np.arange(200),
    'y': rand.randn(200).cumsum()
})

points = alt.Chart(df).mark_point().encode(
    x='x:Q',
    y='y:Q'
)

line = alt.Chart(df).transform_window(
    ymean='mean(y)',
    sort=[alt.SortField('x')],
    frame=[5, 5]
).mark_line(color='red').encode(
    x='x:Q',
    y='ymean:Q'
)

points + line

Altair Visualization

然而,由于转换被编码在渲染器中,因此从Python层无法直接访问计算值。

这就是altair_transform发挥作用的地方。它包含了一个(几乎是)完整的Vega-Lite转换层的Python实现,因此您可以轻松地提取一个包含图表中显示的计算值的pandas数据框

from altair_transform import extract_data
data = extract_data(line)
data.head()
x y ymean
0 0 -0.204708 0.457749
1 1 0.274236 0.771093
2 2 -0.245203 1.041320
3 3 -0.800933 1.336943
4 4 1.164847 1.698085

从这里,您可以直接在Python中处理转换后的数据。

示例:预聚合大数据集

Altair创建了包含完整数据集的图表规范。这种做法的优点是用于生成图表的数据完全透明;缺点是当数据集变得很大时,会导致问题。为了防止用户在尝试向前端发送过多数据时不小心崩溃浏览器,Altair默认限制数据大小。例如,一个包含20000个点的直方图

import altair as alt
import pandas as pd
import numpy as np

np.random.seed(12345)

df = pd.DataFrame({
    'x': np.random.randn(20000)
})
chart = alt.Chart(df).mark_bar().encode(
    alt.X('x', bin=True),
    y='count()'
)
chart
MaxRowsError: The number of rows in your dataset is greater than the maximum allowed (5000). For information on how to plot larger datasets in Altair, see the documentation

正如Altair的常见问题解答中提到的,有几种可能的解决方案。Altiar-transform通过transform_chart()函数提供另一种选项,该函数将根据图表规范预先转换数据,因此最终的图表规范包含的是汇总数据,而不是完整的数据集

from altair_transform import transform_chart
new_chart = transform_chart(chart)
new_chart

Altair Visualization

检查新的图表规范,我们可以看到它包含了预先汇总的数据集

new_chart.data
x_binned x_binned2 count
0 -4.0 -3.0 29
1 -3.0 -2.0 444
2 -2.0 -1.0 2703
3 -1.0 0.0 6815
4 0.0 1.0 6858
5 1.0 2.0 2706
6 2.0 3.0 423
7 3.0 4.0 22

限制

altair_transform目前仅适用于非复合图表;也就是说,它不能转换或从层叠、分面、重复或连接的图表中提取数据。

还有一些不太常用的转换选项尚未完全支持。如果您尝试使用它们,应明确引发NotImplementedError

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

altair_transform-0.2.0.tar.gz (42.3 kB 查看散列)

上传时间

构建分发

altair_transform-0.2.0-py2.py3-none-any.whl (51.5 kB 查看散列)

上传时间 Python 2 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面