从 Pandas 到 Polars 四十四:Polars 和 数据可视化库Seaborn

news2025/1/8 3:44:04

在我对Matplotlib感到沮丧并发表帖子时,我的朋友让我试试Seaborn库。近年来我一直在使用Altair,因此并没有过多考虑Seaborn。然而,Seaborn的新界面给我留下了深刻印象,并且我很高兴地发现,Seaborn将直接接受Polars的DataFrame来进行许多图表绘制。

(注:Seaborn 是一个基于Matplotlib的数据可视化库,它提供了一个高级界面来绘制有吸引力的和有意义的统计图形。Seaborn使复杂图形的绘制变得简单,并且提供了许多内置的主题和调色板来定制图形的外观。Seaborn非常适合数据探索和可视化,特别是当您想从数据中提取有意义的模式或趋势时。)

在这篇文章中,我将探讨如何将Polars的DataFrame传递给Seaborn以进行一些高级图表的绘制,并分享一些使用Seaborn可视化Polars DataFrame的其他技巧。

联合图(Jointplot)

Seaborn中的高级可视化之一就是联合图(jointplot)。这是一种两列的散点图,但每个列的分布也会被绘制出来。此外,我们还可以添加一个色调字段(hue field),通过第三列来为这些图着色。

在这个例子中,我使用了泰坦尼克号数据集,对乘客年龄和支付票价两列进行了联合图绘制,并根据乘客等级列进行了颜色区分。

import polars as plimport seaborn as sns

df = pl.read_csv("titanic.csv")
sns.jointplot(
    data=(
        df
        .with_columns(
            [   
                # 对Age和Fare的浮点型列取对数    
                pl.col(pl.Float64).log(),
                # 将passenger_class的列从当前的数据类型转换为字符串类型                
                pl.col("Pclass").cast(pl.Utf8)
            ]
        )
    ),
    x="Age",
    y="Fare",
    hue="Pclass",)

数值还是分类?

像Plotly或Seaborn这样的绘图库的一个共同特点是,它们会根据数据的dtype(数据类型)推断数据应该如何呈现。这可能会导致图表以令人困惑的方式显示!

在这个例子中,我们想根据乘客等级(Pclass)列来着色。这一列的值是1、2或3,所以它有一个整数dtype。然而,从绘图的角度来看,这一列实际上是一种有序的分类列,而不是数值列。然而,由于整数dtype,Seaborn和Plotly会将其视为数值列,并尝试将其视为定量数据。

为了解决这个问题,我们必须将Pclass列转换为字符串dtype。我们在上面的示例中通过表达式pl.col("Pclass").cast(pl.Utf8)来实现这一点。然后,图表就会按照我们期望的方式显示。

将Polars DataFrame传递给Seaborn会导致在内部复制你的数据。为了避免不必要的复制,我建议使用select函数只复制你的图表所需的列的子集,例如df.select(["Age","Fare","Pclass"]).to_pandas()。

       往期热门文章:

从 Pandas 到 Polars 二十六:在Polars中,不要遍历列

从 Pandas 到 Polars 二十三:如果你的数据已经排序,Polars可以为你提供助力

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

从 Pandas 到 Polars 十三:流式处理的关键参数

从 Pandas 到 Polars 十:“Polars 表达式“是什么?

从 Pandas 到 Polars 六:在 Polars 中流式处理大型数据集

从 Pandas 到 Polars 0:理解Polars嵌套列类型

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

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

相关文章

4.7.深层循环神经网络

深层循环网络 ​ 就是更深了,因为之前的网络都只有一层隐藏层,弄多一点 ​ 我们将多层循环神经网络堆叠在一起,通过对几个简单层的组合,产生了一个灵活的机制。上图展示了一个具有 L L L个隐藏层的深度循环神经网络,每…

滑动验证码的介绍!

一、什么是滑动验证? 滑动验证(通常也被称为滑块验证)是一种用户交互式的验证方法。它要求用户通过鼠标或触摸屏,将滑块按照指定的路径或方向滑动到正确的位置,以完成验证过程。这种验证方式不仅增加了自动化攻击的难…

mysql源码编译启动debug

对于没有C语言基础的同学来说,想看看源码,在搞定编辑器做debug的时候就被劝退了,发生点啥了,完全看不懂,不知道从哪里入手去做debug;我为了看看 mysql 的 insert buffer 到底存的是索引页还是数据页&#x…

Tik Tok账号被限流什么原因?怎么解决?

TikTok账号被限流,无疑是让众多内容创作者头疼的问题。浏览量骤减,账号活跃度下降,究竟是什么原因导致的限流?今天,我们将深入探讨TikTok限流的几大成因,大家运营的时候尽量避免这些问题,同时也…

极狐GitLab与无问芯穹达成战略合作,共探AI落地软件智能研发场景新机遇

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…

教程 | USB-IF USBCV软件工具使用指南

一. 概述 CVTest 是基于 USBCV 软件工具的合规性测试,可以验证设备是否符合 USB 规范和标准。USBCV 则是 USB-IF 提供的一款免费 USB 装置测试软体,简要做 USB2.0 及 USB3.0 装置相关测试。本文将基于 NXP LPC5516 HID 类键盘简要讲解 USBCV 中公有 USB…

两个向量的余弦相似度如何计算

两个向量的余弦相似度是通过测量两个向量在方向上的相似性来计算的。它是向量空间中两个向量夹角的余弦值。如果两个向量的方向相同,它们的余弦相似度接近1;如果两个向量的方向完全相反,它们的余弦相似度接近-1;如果两个向量正交&…

求职Leetcode题目(5)

1.分割回文串 每一个结点表示剩余没有扫描到的字符串,产生分支是截取了剩余字符串的前缀;产生前缀字符串的时候,判断前缀字符串是否是回文。如果前缀字符串是回文,则可以产生分支和结点;如果前缀字符串不是回文&#…

[ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘(已解决)

今天在使用navicate Premium运行sql文件时出现如下错误: 错误:1273 - Unknown collation: utf8mb4_0900_ai_ci 报错原因: 生成转储文件(也就是sql文件)的数据库版本为8.0,而要运行sql文件的数据库版本为5.6,因为是高版…

Redis 实现消息队列

Redis 实现消息队列 文章目录 Redis 实现消息队列导引1. 基于List结构的消息队列2. 基于PubSub的消息队列3. 基于Stream的消息队列(推荐)3.1 XADD3.2 XREAD3.3 XGROUP 导引 消息队列(Message Queue),从概念上来理解就是用来存放消息的队列,最简单的消息…

芯片外置电阻RC如何实现振荡器功能?

大家好,这里是大话硬件。 这篇文章来实现DC-DC控制器内部的振荡器模块功能。 在调试DC-DC控制器时,如果要改变其开关频率,通常是修改芯片外围的RC参数, 如下图所示。 结合常用芯片UC3842系列的内部框图,实现方式如下: 实现方案如下: 根据上述的原理,实现的思路:…

springboot整合mybatis-plus和pagehelper插件报错,

在springboot和myabtisplus版本没有冲突的情况下,MybatisPlusAutoConfiguration配置类没有生效,查看该类发现存在生效条件,即: 1.必须存在数据源的Bean对象 2.必须存在SqlSessionFactory和SqlSessionFactoryBean类(这…

【QT常用技术讲解】tableWidget右键菜单及多进程编程

前言 本文在QT项目的开发框架的基础上(源代码)增加tableWidget的右键菜单功能,并使用进程实现ping计算机的功能来讲解,本文不对进程间通信进行讲解。 概述 一个项目在开发过程中,通常面临着引入“第三方应用”&#x…

二叉树:镜像树,子结构,二叉树转链表,二叉树的倒数K个数,对称,Z型打印

1.把一棵二叉树转换为它的镜像树。 void mirror_tree(TreeNode *root) {if(rootNULL) return ;TreeNode *temproot->right;root->rightroot->left;root->lefttemp;mirror_tree(root->right);mirror_tree(root->left);}2、输入两棵二叉树A,B&…

Day 21

Java Script 1.什么是JavaScript 概述 JavaScript是一门世界上最流行的脚本语言 Java、JavaScript 一个合格的后端人员,必须要精通JavaScript 历史 JavaScript 的历史_javascript历史-CSDN博客 ECMAScript它可以理解为是JavaScript的一个标准 2.基本使用及…

AI智能名片微信小程序在社群运营中的价值与应用研究

摘要:在数字化转型的浪潮中,社群运营已成为企业营销策略的重要组成部分,它不仅促进了品牌与消费者之间的深度互动,还为企业带来了持续的用户增长和价值转化。本文深入探讨了AI智能名片微信小程序在社群运营中的创新应用&#xff0…

常用数据库详解:从关系型到非关系型的探索

常用数据库详解:深入探索关系型与非关系型数据库 在数据驱动的世界中,数据库系统是存储、管理、检索和更新数据的核心技术。从历史悠久的关系型数据库到新兴的非关系型数据库,每种数据库都有其独特的设计哲学、优势和适用场景。本文将深入探…

不同环境下RabbitMQ的安装-2 ARM架构、X86架构、Window系统环境下安装RabbitMQ

ARM架构、X86架构、Window系统环境下RabbitMQ的安装 RabbitMQ安装1 Erlang语言介绍2 安装Erlang2.1 ARM架构的CentOS虚拟机中安装Erlang2.2 X86架构的CentOS虚拟机中安装Erlang2.3 Windows系统安装Erlang2.3.1 下载Erlang2.3.2 安装Erlang2.3.3 配置Erlang2.3.4 检测Erlang 3.安…

资质延期成本预测:河南建筑装饰企业预算制定策略

资质延期成本预测对于河南建筑装饰企业来说是确保企业资质顺利延续的重要环节。以下是企业预算制定策略的一些关键点: 一、了解政策与要求 首先,河南建筑装饰企业需要详细了解河南省住房和城乡建设厅及相关部门关于资质延期的具体政策和要求。这包括延…

Linux Vim实用教程:从新手到专家的完全指南

Linux Vim最全面的教程涵盖了从Vim的安装、基本操作、高级功能到个性化配置等各个方面,旨在帮助用户全面掌握这款强大的文本编辑器。下面将详细介绍Linux Vim的功能: 安装过程 在Debian/Ubuntu系统上安装Vim:需要执行sudo apt-get update和su…