用于评估Altair转换的Python引擎。
项目描述
altair-transform
Python对Altair/Vega-Lite转换进行评估。
altair-transform
需要Python 3.6或更高版本。使用以下命令安装:
$ pip install altair_transform
Altair-transform可以直接在Python中评估Altair和Vega-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
然而,由于转换被编码在渲染器中,因此从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
检查新的图表规范,我们可以看到它包含了预先汇总的数据集
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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | b348c94a3a71254baac626635f38300121dc61a98eb46b25568a6aecc4202d66 |
|
MD5 | 7f7e4e531d4fe72b3b024b7253a16e34 |
|
BLAKE2b-256 | d015f84008e6cd08d0f99976091cd82e1b39796f5abdbcfc2d6890261fdb1c87 |
altair_transform-0.2.0-py2.py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5c69161dd423b0f6a456abe765dbfb2ab7d5e9cef3a77b91e185179c6da328b2 |
|
MD5 | 40b6e748d434bfc2b0ebe0a8f45a6e0a |
|
BLAKE2b-256 | 11909a08fee17264b0ff2a4a563b0412adecf46086c350bc2fe6df60e64ed422 |