从 Pandas 到 Polars 四十五:Polars、Altair 和 Vegafusion
创始人
2024-11-05 14:07:53

Altair长期以来一直是我最喜欢的可视化库。它允许我通过简洁且一致的API制作美丽的可视化图表。然而,去年我发现我无法将Polars的DataFrame传递给Altair图表时,我感到很失望。

但那些日子已经过去了。在这篇文章中,我们将探讨随着Altair 5的发布,我们如何可以使用Altair和Polars,以及VegaFusion如何帮助Altair扩展到更大的数据集。

这是我使用泰坦尼克号数据集在我的课程中制作的一个简单图表。

class_survival_counts = (     df     .groupby('Survived','Pclass')     .count())alt.Chart(     class_survival_counts,     width=600).mark_bar().encode(     x="Pclass:N",     y="count:Q",     color="Survived:N")

很棒的一点是,这段代码和输出结果看起来与从Pandas中来的完全一样。

然而,对于像Polars这样的基于Arrow的库来说,Altair还处于早期阶段,您可能仍然会遇到一些奇怪的bug。

要使用Polars,您需要Altair v5+版本。在撰写本文时,您可以从PyPi安装此版本作为发布候选版。

Vegafusion

围绕Altair的另一个激动人心的发展是Vegafusion。Vegafusion可以帮助Altair图表通过服务器端渲染来克服著名的MaxRowsError。

(注:Vega Fusion 是一个用于 Python 的库,它旨在提供高性能的交互式可视化工具。Vega Fusion 是基于 Vega-Lite 语法的,这是一种轻量级的声明性语法,用于描述数据可视化。Vega Fusion 通过结合 Python 的数据处理能力和 Vega-Lite 的可视化能力,使得在 Python 中创建复杂的交互式图表变得更加容易。

Vega Fusion具有以下特点

  • 高性能:Vega Fusion 通过客户端和服务器端的数据转换和计算来提高可视化性能,特别是对于大数据集。
  • 交互性:创建的图表具有丰富的交互性,如缩放、平移、筛选等功能。
  • 易于使用:用户可以使用 Python 代码定义 Vega-Lite 规格,而不需要直接编写 JSON。
  • 兼容性:可以在 Jupyter Notebook、JupyterLab、Python Web 应用等环境中使用。)

什么是服务器端渲染?

在传统的Altair图表中,您将数据行提供给Altair,然后Altair(通过Vega-lite库)将这些数据传递给您的浏览器,浏览器使用Vega-lite将数据转换为可以渲染的HTML对象。然而,随着数据行数的增加,这种客户端渲染方式会让您的浏览器需要处理越来越多的数据。

使用Vegafusion时,渲染过程发生在服务器端。这意味着您可以像往常一样创建Altair图表,但随后数据会被传递给Vegafusion引擎。相比于浏览器,Vegafusion引擎更擅长处理大型数据集。然后,Vegafusion引擎将渲染好的HTML传递给您的浏览器。

要使用Vegafusion,您需要导入它并运行vf.enable(),这会告诉Altair由Vegafusion负责渲染工作。

import altair as altimport vegafusion as vfvf.enable()

当然,如果你的浏览器需要渲染大量的HTML对象,它可能仍然会感到不堪重负!例如,如果你正在制作一个包含数千个点的散点图,这仍然会给你的浏览器带来很大的工作量(甚至可能导致崩溃)。但是,如果Vegafusion能够减少数据量(例如,通过分箱、聚合或过滤),那么你将看到更大的好处。

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...