Polars简明基础教程十一:可视化(一)

news2024/9/21 4:25:56

到本次讲座结束时,你将能够:

  • 使用Polars的内部plot方法从Polars创建图表
  • 使用外部绘图库从Polars创建图表
  • 了解这些库如何支持Polars

通常,需要可视化库的最新版本来实现最大程度的兼容性

import polars as pl

import hvplot as hv
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import altair as alt
import vegafusion as vf

为Altair启用vegafusion

解释:

  1. Altair 是一个基于 Python 的声明式统计可视化库。它允许你用简洁的语法创建复杂的交互式图表。Altair 生成的图表基于 Vega-Lite 规范,这是一种用于描述数据可视化的 JSON 格式。
  2. Vegafusion 是一个优化工具,旨在加速 Altair 图表的渲染速度,特别是在处理大数据集时。它通过在服务器端执行更多的数据处理和渲染工作,从而减轻客户端浏览器的负担,使图表响应更快、更流畅。

在使用 Altair 进行数据可视化时,我们一般要激活或配置 Vegafusion 来优化图表的性能。具体来说,这意味着当你在 Polars 或其他环境中使用 Altair 创建图表时,Vegafusion 会在后台工作,确保图表加载速度快,即使数据量很大也能保持良好的用户体验。

vf.enable() # 启用vegafusion

csv_file = '../data/titanic.csv'
df = pl.read_csv(csv_file)
df.head(3)

shape: (3, 15)
┌──────────┬────────┬────────┬──────┬───┬──────┬─────────────┬───────┬───────┐
│ survived ┆ pclass ┆ sex    ┆ age  ┆ … ┆ deck ┆ embark_town ┆ alive ┆ alone │
│ ---      ┆ ---    ┆ ---    ┆ ---  ┆   ┆ ---  ┆ ---         ┆ ---   ┆ ---   │
│ i64      ┆ i64    ┆ str    ┆ f64  ┆   ┆ str  ┆ str         ┆ str   ┆ bool  │
╞══════════╪════════╪════════╪══════╪═══╪══════╪═════════════╪═══════╪═══════╡
│ 0        ┆ 3      ┆ male   ┆ 22.0 ┆ … ┆ null ┆ Southampton ┆ no    ┆ false │
│ 1        ┆ 1      ┆ female ┆ 38.0 ┆ … ┆ C    ┆ Cherbourg   ┆ yes   ┆ false │
│ 1        ┆ 3      ┆ female ┆ 26.0 ┆ … ┆ null ┆ Southampton ┆ yes   ┆ true  │
└──────────┴────────┴────────┴──────┴───┴──────┴─────────────┴───────┴───────┘

我们首先通过创建一个简单的条形图来查看是否可以直接将Polars的DataFrame传递给每个绘图库。接下来,我们将考虑从Polars与每个库协作时需要注意的其他一些要点。

条形图

我们首先统计每个乘客等级中的乘客数量。有关此处使用的方法的更多信息,请参阅课程中关于统计和聚合的部分。

passenger_class_counts_df = (
    df['pclass']
    .value_counts()
    .sort("pclass")
)

passenger_class_counts_df

shape: (3, 2)
┌────────┬───────┐
│ pclass ┆ count │
│ ---    ┆ ---   │
│ i64    ┆ u32   │
╞════════╪═══════╡
│ 1      ┆ 216   │
│ 2      ┆ 184   │
│ 3      ┆ 491   │
└────────┴───────┘

使用hvPlot内置绘图

DataFrame有一个内置的.plot方法,该方法将DataFrame传递给hvPlot库

注释:

Polars 数据库框架直接集成了 hvPlot 这个绘图工具,使得用户可以直接在 Polars 的 DataFrame 上进行数据可视化,而无需额外安装或导入其他专门的绘图库(尽管 hvPlot 本身仍需要被安装)。

hvPlot 是一个用于快速生成高质量图表的 Python 库,它构建在 HoloViews 和 Bokeh 之上,提供了非常直观的 API,使得从数据帧到图表的转换变得简单且强大。它支持多种数据源,包括 Pandas DataFrame 和 Series。

在 Polars 中,hvPlot 的功能已经被内化了,用户可以直接在 Polars DataFrame 上调用 hvPlot 的方法来创建图表,无需像以前那样先将数据转换为 Pandas DataFrame 或者单独使用 hvPlot 的函数。

passenger_class_counts_df.plot.bar(
    x="pclass",
    y="count"
)

hvPlot 是对底层绘图库的封装。默认情况下,它使用 Bokeh 库来生成交互式图表,这些图表在右侧包含控件,可以:

  •  在我们悬停在数据上时添加描述数据的工具提示
  • 支持平移和缩放
  • 有一个重置按钮以恢复到原始视图 

在 JupyterLab 中,图表会自动显示。但如果你在使用 IPython 终端,hvPlot 也可以启动一个临时服务器,在浏览器中显示图表,只要你:

  •  首先创建一个图表对象并将其分配给变量 p
  • 调用 hv.show(p) 
p = (
     passenger_class_counts_df.plot.bar(
         x="pclass",
         y="count"
     )
 )
 hv.show(p)

在这个例子中,我们根据乘客等级(pclass)的颜色进行散点图绘制,以年龄(age)为横坐标,票价(fare)为纵坐标,并控制图表的宽度。

p = (
    df
    .plot.scatter(
    x="age",
    y="fare",
    color="pclass",    
    width=500
    )
)

hv.show(p)

然而,用于 pclass 的颜色映射并不是很有用,因为它将 pclass 的整数视为连续数值而不是离散的分类值(这是不同绘图库中常见的现象)。

在绘图之前,我们将 pclass 转换为字符串,以获得更好的颜色映射。

p = (
    df
    .with_columns(
        pl.col("pclass").cast(pl.Utf8)
    ).plot.scatter(
    x="age",
    y="fare",
    color="pclass",    
    )
)

hv.show(p)

我们可以使用 cmap 参数明确控制所使用的颜色映射。可用的颜色映射设置在这里:

https://holoviews.org/user_guide/Colormaps.html

请注意,您选择的颜色映射必须与您正在使用的 hvPlot 绘图后端(默认为 Bokeh)相匹配。

Polars简明基础教程系列

Polars简明基础教程一:Polars快速入门

Polars简明基础教程二:懒惰模式 1:引入懒惰模式

Polars简明基础教程三:懒惰模式 1:引入懒惰模式(续)

Polars简明基础教程四:懒惰模式 2:评估查询

Polars简明基础教程五:什么是Polars的“DataFrame(数据框)_上”

Polars简明基础教程六:什么是Polars的“DataFrame(数据框)_下”

Polars简明基础教程七:Series 和 DataFrame 以及它们之间的转换_A

Polars简明基础教程八:Series 和 DataFrame 以及它们之间的转换_B

Polars简明基础教程九:Numpy和Pandas的相互转换(1)

Polars简明基础教程十:Numpy和Pandas的相互转换(2)

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

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

相关文章

陈丽华珍藏梁永和书画作品,展现中华艺术之美

近两年来,富华国际集团董事局主席、中国紫檀博物馆馆长陈丽华女士收藏了多件由人民艺术家、著名画家梁永和先生亲笔创作的书画作品,其中包括《松鹤延年》、《香荷》、《江山多娇》和《硕果累累》等佳作。此外,梁永和先生还特地为陈丽华女士创…

【喜报】祝贺青创智通签约广州进德生物科技SunFMEA项目

SunFMEA SunFMEA是由北京青创智通科技有限公司自主研发的一款基于AIAG-VDA-FMEA标准的失效模式和影响分析软件,软件满足新版七步法分析流程,兼具DFMEA和PFMEA,以结构树的方式直观、完整、快速地指导用户完成FMEA分析的整个流程,能…

前端纯数组转树形结构

问题描述 前端需要处理后端返回的数据,展示如下。 解决方式 因为使用ProTable组件,那么数据只要携带children字段,就可以如上图展示。 方式一:后端返回数据的时候,直接封装好,如下: const…

electron+vue搭建命令

electronvue搭建 要使用Electron和Vue来搭建一个桌面应用程序,你可以遵循以下步骤: 1.创建一个Vue项目: vue create my-electron-app2.进入项目目录: cd my-electron-app3.添加Electron: vue add electron-builde…

指针初阶1(学习编程的第二十四天)

1.指针是什么? 编号可以抽象为地址,地址就可以抽象为指针 2.指针和指针类型 指针类型的意义:1.指针类型决定了 指针解引用的权限有多大 int有4个字节 double有8个 char只有1个 2.指针类型决定了,指针走一步,能走多…

自回归分布滞后模型 (ARDL)及 Stata 具体操作步骤

目录 一、引言 二、文献综述 三、理论原理 四、实证模型 五、程序代码及解释 六、代码运行结果 一、引言 自回归分布滞后模型(Autoregressive Distributed Lag Model,简称 ARDL)在时间序列分析中具有重要的地位,它能够同时捕…

八种排序算法的复杂度(C语言)

归并排序(递归与非递归实现,C语言)-CSDN博客 快速排序(三种方法,非递归快排,C语言)-CSDN博客 堆排序(C语言)-CSDN博客 选择排序(C语言)以及选择排序优化-CSDN博客 冒泡排序(C语言)-CSDN博客 直接插入排序(C语言)-CSDN博客 希尔排序( 缩小增量排序 )(C语言)-CSDN博客 计数…

【文件IO】文件内容操作

读文件、写文件,都是操作系统提供了 API,在 Java 中也进行了封装,叫“文件流”/“IO流” Stream 流,形象比喻,水流/气流 水流的特点:我要通过水龙头,接 1000ml 水 直接一口气,把 100…

µC/OS-III

第一章 μCOS 简介 1.1 初识 μCOS 实际上,一个 CPU 核心在某一时刻只能运行一个任务,由于切换处理任务的速度非常快,因此给人造成了一种同一时刻有多个任务同时运行的错觉。 操作系统的分类方式可以由任务调度器的工作方式决定&am…

RCE漏洞基础初了解

目录 一、简介 二、php的命令执行函数 2.1 exec 2.2 passthru 2.3 shell_exec 2.4 popen 三、代码执行 3.1 php的回调后门 3.1.1 回调后门的老祖宗 3.1.2 数组造成单参数回调后门 3.1.3 绕过安全狗 ​编辑 四、来看看php中webshell奇淫技巧 4.1eval长度限制突破方法…

problem with running OpenAI Cookbook‘s chatbot

题意:运行 OpenAI Cookbook 的聊天机器人时遇到问题 问题背景: Im having trouble running the chatbot app in the OpenAI Cookbook repository. 我在运行 OpenAI Cookbook 仓库中的聊天机器人应用程序时遇到了问题。 What I tried 我尝试的内…

240810-Gradio通过HTML组件打开本地文件+防止网页跳转到about:blank

A. 最终效果 B. 可通过鼠标点击打开文件,但会跳转到about:blank import gradio as gr import subprocessdef open_pptx():pptx_path /Users/liuguokai/Downloads/240528-工业大模型1.pptxtry:subprocess.Popen([open, pptx_path])return "PPTX file opened s…

七、3 AD单通道(代码)

1、步骤 (1)开启GPIO和ADC的时钟、配置ADCCLK的分频器 (2)配置GPIO (3)配置多路开关(把左边的通道接入到右边的规则组中) (4)配置ADC转换器 (…

HarmonyOs编写一个案例实现一个照片选择(阶段进阶 四种需求 逐一完善)

需求1. .实现照片选择 并将选择好的照片展示出来 import { GoodItem } from ../06/modules;Entry Component struct PhotoPage {State message: string 实现一个相册;State List: GoodItem[] [{goods_name: dsfjlsjkfsf,goods_price: 100,goods_img: https://img1.baidu.com…

Springboot3 配置sql打印到控制台

一、pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId><version>3.1.2</version></dependency> 二、application.yml com.lingyang.system # log4j2配…

《密码编码学与网络安全原理与实践》第十一章、第十二章、第十三章 数据完整性算法

数据完整性算法 概念消息加密实现认证对称加密提供认证公钥加密提供认证 Hash函数要求满足特点哈希函数安全性要求密码分析基于分组密码链接的Hash函数生日攻击&#xff1a; MD5SHA-256算法步骤SHA-3散列函数实现消息认证散列函数实现消息认证方法一散列函数实现消息认证方法二…

HttpClient在ASP.NET Core中的最佳实践:实现高效的HTTP请求

引言 在现代Web开发中&#xff0c;HTTP请求的高效性和可靠性对于应用的整体性能至关重要。ASP.NET Core提供了HttpClient类&#xff0c;它是一个强大且灵活的工具&#xff0c;可以用来发送HTTP请求并处理响应。然而&#xff0c;如何在ASP.NET Core中实现高效的HTTP请求&#x…

Java基础篇/IO流的介绍和了解

一、java的IO是基于流&#xff08;stream&#xff09;概念的&#xff0c;什么是流: 在Java中&#xff0c;流&#xff08;Stream&#xff09;是一种抽象的数据传输方式&#xff0c;它代表了数据的序列。流可以用于表示来自各种源的数据输入&#xff0c;以及向各种目的地发送数据…

商品信息采集技巧大公开:五种高效采集方法分享

摘要&#xff1a; 面对日益激烈的电商竞争&#xff0c;高效采集淘宝商品信息成为商家致胜的关键。本文将揭秘2024年最实用的五种淘宝商品信息采集技巧&#xff0c;助您在大数据时代抢占先机&#xff0c;提升市场竞争力。 一、为何淘宝商品信息采集如此重要&#xff1f; 在电…

新闻稿件管理系统

TOC springboot109新闻稿件管理系统 系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理新…