赞
踩
到本次讲座结束时,你将能够:
通常,需要可视化库的最新版本来实现最大程度的兼容性
- 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 来优化图表的性能。具体来说,这意味着当你在 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 │
- └────────┴───────┘
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 = (
- 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简明基础教程十:Numpy和Pandas的相互转换(2)
Polars简明基础教程九:Numpy和Pandas的相互转换(1)
Polars简明基础教程八:Series 和 DataFrame 以及它们之间的转换_B
Polars简明基础教程七:Series 和 DataFrame 以及它们之间的转换_A
Polars简明基础教程六:什么是Polars的“DataFrame(数据框)_下”
Polars简明基础教程五:什么是Polars的“DataFrame(数据框)_上”
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。