从 Pandas 到 Polars 四十五:Polars、Altair 和 Vegafusion

news2024/11/13 6:47:46

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能够减少数据量(例如,通过分箱、聚合或过滤),那么你将看到更大的好处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1988465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

雷达气象学(1)——雷达电磁波的散射

文章目录 1.0 电磁波的特征1.1 散射的概念及类型1.2 散射函数——表示粒子的散射能力1.3 瑞利后向散射函数1.4 后向散射截面——更好地表示粒子的散射能力1.5 反射率因子 1.0 电磁波的特征 雷达的探测方式为电磁波。电磁波是在空间传播的电场和磁场两者结合,它在时…

C++从入门到起飞之——string类的模拟实现 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、多文件之间的关系 2、模拟实现常用的构造函数 2.1 无参构造函数 2.2 有参的构造函数 2.3 析构函…

应急响应-主机安全之文件相关命令(Linux操作系统)

目录 概述常用命令file-探测给定文件的类型选项常用选项组合 stat-查看文件信息find-不止查找文件选项测试操作常用选项 locate-比find好用的查找命令选项常用选项组合 chmod-修改文件权限suidsbit chown、chgrp 修改文件所有者/所在组umask-显示或设置创建文件的权限掩码常用选…

理解Spring框架4:事务

理解Spring框架4:事务 (qq.com)

等保密评整改应该申请哪种SSL证书

在等保(信息安全等级保护)和密评(商用密码应用安全性评估)整改过程中,申请SSL证书是提升系统安全性的重要环节。下面是等保密评应该申请什么样证书的详细建议 类型选择 1 选择国密或者双算法证书 应优先考虑使用采用…

揭秘新型安卓间谍软件LianSpy的攻击手段

自2021年起,俄罗斯用户已成为一种新型未被记录的安卓后门间谍软件“LianSpy”的攻击目标。 网络安全公司卡巴斯基在2024年3月发现了这款恶意软件,并指出其利用俄罗斯的云服务Yandex Cloud进行命令和控制(C2)通信,以避免…

2024高中生必备物品有哪些?快收下这份必备物品清单!

随着新学期的脚步临近,为确保学习和生活都能顺利进行,挑选一些实用且高效的好物是非常重要的。在如今的数字化时代下,即使是学生,仍需要一系列智能电子产品,这些产品不仅能够提升学习效率,也能让学生党们的…

声明式UI语法

一、ArkTS的基本组成 Entry // 装饰器 Component // 装饰器 struct Hello { // 自定义组件State myText: string World;build() { // UI描述Column() { // 系统组件Text(Hello ${this.myText}).fontSize(50)Divider()Button(Click me).onClick(() > { // 事件方法t…

一次性讲清AI外呼系统,再也不用人工打电话

相信大家都有了解现在接到的机器人电话越来越多,那么真正操作机器人代替人工打电话其实很简单,学会了自然是节省大量人工拨打电话的时间 为什么电销要用外呼系统|||在现代科技的迅猛发展中,AI机器人已逐渐在各行各业崭露头角,与传…

022_java.lang.ThreadLocal

ThreadLocal使用案例 在并发编程中有时候需要让线程互相协作,而协作可以使用共享数据的方式来实现。针对共享数据的操作就需要锁机制来控制并发行为。锁虽好,但是毕竟会在一定程度上让线程之间互相阻塞。前辈们认为在线程需要互相协作的前提下&#xff…

服务器测试之RAID知识梳理

最近开始整理RAID卡相关规格信息,所以再重新汇总整理一下RAID相关的知识点及细节,尽量写的详细简单使用图示让大家更好理解 1.什么是Raid? RAID 是英文 Redundant Array of Independent Disks 的缩写,中文简称为独立磁盘冗余阵列…

Nuxt3所有页面使用服务端渲染需要注意些什么?

其实服务端渲染很多时候并不是所有页面都需要使用的,但是如果有些项目真的需要所有页面都使用服务端渲染,此时服务器压力很大,那要如何处理更好呢? 一、是否所有页面都需要使用服务端渲染呢? 大家可参考以下这篇文…

【深度学习】基于YOLOV5模型的图像识别-目标检测的性能指标详解与计算方法

目标检测是计算机视觉中的重要任务,主要目的是在图像中识别并定位特定的物体。YOLO(You Only Look Once)系列模型作为目标检测领域的代表性方法之一,凭借其高效和准确的特点,广泛应用于实际场景中。本文通过详细介绍目…

三十一、【人工智能】【机器学习】- 自编码器 (Autoencoders)

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

趣测系统源码获取,搭建系统详细教程,流量主+佣金+图文+挂载

一、趣测系统是什么? 趣测系统是一款集合了多种趣味测试的应用软件或小程序,以其独特的玩法和广泛的测试种类,为用户提供了全新的娱乐体验。该系统涵盖了心理测试、星座测试、性格测试、能力测试(如IQ、EQ)、情感测试…

数据结构(5.5_1)——哈夫曼树

带权路径长度: 结点的权 有某种现实含义的数值(如表示结点的重要性等) 结点的带权路径长度 从树的根到该结点的路径长度(经过的边数)与该结点上权值的乘积 树的带权路径长度 树中所有的叶结点的带权路径长度之和(WPL,Weighted Path Length) 哈夫曼树的定义&…

PyTorch深度学习实践——卷积神经网络

卷积神经网络 说明 卷积神经网络就是特征提取器,前一部分叫Feature Extraction,后一部分叫classification。卷积神经网络的过程是:卷积(线性变换,提取出重要的特征)、激活函数(非线性变换&…

【C++】:智能指针 -- RAII思想shared_ptr剖析

目录 一,内存泄漏二,智能指针的使用及原理2.1 RAII思想2.2 auto_ptr2.3 unique_ptr 三,shared_ptr(重点)3.1 shared_ptr的原理及使用3.2 shared_ptr的模拟实现1. 基本框架2. 引用计数的设计3. 拷贝构造4. 析构函数5. 赋值拷贝 3.3 shared_ptr…

Vue 3+Vite+Eectron从入门到实战系列之(三)一Electron热身运动(一)

前面我们已经把基础环境配置好了,在开始我们编写第一个页面之前,先尝试几个小的实验,体验下 electron 的乐趣。 更改我们应用的名称 系统默认的名字是从 package.json 中读取的,我们可以在这里更改。 {"name": "electron-vue3" }更改后,我们重新启动…