当前位置: 首页 > news >正文

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

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

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

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

import polars as plimport 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() # 启用vegafusioncsv_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_dfshape: (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简明基础教程十:Numpy和Pandas的相互转换(2)

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

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

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

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

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

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

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

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

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

http://www.lryc.cn/news/424384.html

相关文章:

  • 实战项目:贪吃蛇游戏的实现(上)
  • SHT30温湿度传感器全解析——概况,性能,MCU连接,样例代码
  • SQL server 同环比计算模板
  • python发送外部请求
  • c++并发编程面试题
  • K8S上安装LongHorn(分布式块存储) --use
  • 2024年前端技术发展趋势分析
  • spring boot 笔记大杂烩
  • 如何在香港云服务器上优化网站性能?
  • STM32低功耗与备用备份区域
  • 武汉某汽配公司携手三品软件 共绘PLM项目新蓝图
  • uniapp多图上传uni.chooseImage上传照片uni.uploadFile,默认上传9张图
  • MySQL——内置函数
  • 2024年最新版小程序云开发数据模型的开通步骤,支持可视化数据库管理,支持Mysql和NoSql数据库,可以在vue3前端web里调用操作
  • 智慧水库大坝安全监测预警系统解决方案
  • 基于SpringBoot+VUE的社区团购系统(源码+文档+部署)
  • LeetCode 3151. 特殊数组 I【数组】简单【Py3,C++,Java,GO,Rust】
  • 超级字符串技能:提升你的编码游戏
  • 米联客-FPGA程序设计Verilog语法入门篇连载-16 Verilog语法_时钟分频设计
  • 【Echarts】custom自定义图表实现甘特图
  • 【高等代数笔记】003线性方程组的解法(一)
  • Scrapy入门教程
  • Microsoft VBA Excel VBA学习笔记——双重筛选+复制数值1.0
  • 谷歌反垄断官司败诉后,或又面临被拆分风险?
  • 数据结构入门——06树
  • FFmpeg源码:av_packet_move_ref、av_packet_make_refcounted函数分析
  • 12 中断
  • 经典算法题总结:十大排序算法,外部排序和Google排序简介
  • 服务器是什么?怎么选择适合自己的服务器?
  • 区块链技术的应用场景