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

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

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

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

python 复制代码
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 会在后台工作,确保图表加载速度快,即使数据量很大也能保持良好的用户体验。

python 复制代码
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与每个库协作时需要注意的其他一些要点。

条形图

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

python 复制代码
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 的函数。

python 复制代码
passenger_class_counts_df.plot.bar(
    x="pclass",
    y="count"
)

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

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

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

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

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

python 复制代码
p = (
    df
    .plot.scatter(
    x="age",
    y="fare",
    color="pclass",    
    width=500
    )
)

hv.show(p)

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

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

python 复制代码
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)

相关推荐
小王毕业啦8 小时前
2005-2024年 省级-总抚养比、儿童抚养比、老年人抚养比数据(xlsx)
大数据·人工智能·数据挖掘·数据分析·社科数据·实证分析·经管数据
云栖笑笑生12 小时前
我把 Python re 模块比喻成摸金手套
数据挖掘
小飞象—木兮13 小时前
《销售数据分析标准实践手册》:核心内涵与关键指标、落地销售数据分析的全流程···(附相关材料下载)
大数据·人工智能·数据挖掘·数据分析
hhb_61816 小时前
SPSS问卷调查数据信效度分析及回归建模实操案例
人工智能·数据挖掘·回归
码界筑梦坊16 小时前
113-基于Python的国际超市电商销售数据可视化分析系统
开发语言·python·信息可视化·毕业设计·fastapi
码界筑梦坊17 小时前
111-基于Python的中国旅游用户数据可视化分析系统
python·信息可视化·django·毕业设计·旅游
码界筑梦坊17 小时前
114-基于Python的1688电脑硬件数据可视化分析系统
开发语言·python·信息可视化·数据分析·毕业设计·echarts·数据可视化
小熊Coding19 小时前
懂车帝汽车销售数据可视化分析系统
python·信息可视化·django·汽车·数据可视化分析·懂车帝·汽车销售数据分析
七夜zippoe20 小时前
DolphinDB实时监控大屏:数据可视化实战
信息可视化·可视化·监控·大屏·dolphindb
FIT2CLOUD飞致云20 小时前
集成MiniMax,移动端适配,SQLBot开源智能问数系统v1.8.0版本发布
ai·数据分析·开源·智能问数·sqlbot