Pandas 绘图的强大之处:后端

轻松通过 Pandas 创建交互式图形。欢迎来到雲闪世界

添加图片注释,不超过 140 字(可选)

1.背景 Python 有大量的可视化包,其中最有名的三个是:Matplotlib(和 seaborn)、Plotly和Hvplot。这三个包各有优势,但需要支付入门费用才能学习如何使用这个包,有时费用相当高。 当我发现Daily Dose of Data 科学通讯(我强烈推荐的通讯)提供的Pandas 方法思维导图时,我萌生了撰写本文的想法。当时,我同时发现了 Hvplot 可视化包。我认为像使用 Hvplot 一样轻松地从一个可视化后端切换到另一个可视化后端的想法非常棒(这里有一个从 Hvplot 切换到 Plotly 的示例)。看到我们也可以用 Pandas 做到这一点,我觉得这个想法太有趣了,不得不分享。 Pandas 是 Python 数据科学的核心,我们都知道如何使用它。但集成到 Pandas 中的 Matplotlib 正在老化,在易用性和呈现方面都被其他软件包所取代。Pandas 可视化后端的强大功能让您可以利用最新的可视化软件包进行数据探索和结果渲染,而无需花时间学习这些功能强大的软件包! 2. 后端 Pandas 是基于 2 个包构建的,Numpy 和 Matplotlib。这就解释了为什么我们使用 Matplotlib 脚本来生成图形,因此生成的图形是 matplotlib 图形。 自创建以来,Pandas 不断发展,并为用户提供了修改 Pandas 使用的可视化后端的可能性。 我在研究过程中发现的 6 个可用后端是:

  • Plotnine(ggplot2)

  • 情节

  • 牵牛星

  • 全息视图

  • 曲线图

  • Pandas_bokeh

  • Matplotlib(默认后端)

有多种方法可以更改后端:

  • 2 个全局方法:

pd.set_option( "plotting.backend" , '<后端名称>' ) # 或 pd.options.plotting.backend = '<后端名称>'

  • 1 个本地方法:

df.plot(backend= '<后端名称>' , x= '...' ) 注意:更改后端需要 Pandas >= 0.25,有时需要特定的依赖项很重要,例如下面的 Hvplot。 以下有 2 个示例:

  • 使用 Plotly:

导入pandas作为pd # 基本包 pd.options.plotting.backend = "plotly" df = pd.DataFrame( dict (a=[ 1 , 3 , 2 ], b=[ 3 , 2 , 1 ])) fig = df.plot() fig.show()

  • 使用 Hvplot:

import numpy as np import pandas as pd # 基础包 import hvplot import hvplot.pandas # !需要安装的特定依赖 pd.options.plotting.backend = 'hvplot' # 后端修改 data = np.random.normal(size=[ 50 , 2 ]) df = pd.DataFrame(data, columns=[ 'x' , 'y' ]) df.plot(kind= 'scatter' , x= 'x' , y= 'y' ) # 绘图 2.1. Matplotlib Matplotlib是 Pandas 的默认可视化后端。换句话说,如果您不指定后端,则将使用 Matplotlib。它是一个高效的软件包,可以快速可视化您的数据以进行探索或提取结果,但它正在老化,并且在易用性和渲染能力方面正被其他软件包赶超。 Matplotlib 的优点在于,由于 Pandas 从创建之初就是建立在 Matplotlib 之上的,因此 Matplotlib 与 Pandas 的集成非常完美,所有 matplotlib 函数都可以在 Pandas 中使用。 提醒一下,以下是 Pandas 中集成的 11 种 Matplotlib 显示方法:

  • “area” 表示面积图,

  • “bar” 表示垂直条形图,

  • “barh” 表示水平条形图,

  • “box” 表示箱线图,

  • “hexbin” 表示六边形图,

  • “hist” 表示直方图,

  • “kde” 为核密度估计图表,

  • “density” 是 “kde” 的别名,

  • “line” 表示线图,

  • “pie” 表示饼状图,

  • “scatter” 表示散点图。

2.2. Plotly Plotly是 Plotly 公司开发的一款可视化软件包。该公司开发了 Plotly.js 框架,允许在 Python 中以交互方式可视化数据。Plotly 公司还提供 Python 仪表板软件包Dash。 要从 Pandas 使用 Plotly,只需导入Plotly express并更改后端: 导入pandas作为pd 导入plotly.express作为px # 导入包 df = pd.read_csv( "iris.csv" ) # 本地修改 Pandas 后端 df.plot.scatter(backend = "plotly" , x = "sepal.length" , y = "sepal.width" ) Pandas 返回一个与 Plotly 相同类型的对象: df.plot.scatter(backend = "plotly" , x = "sepal.length" , y = "sepal.width" ) # → <class 'plotly.graph_objs._figure.Figure'> px.scatter(x=df[ "sepal.length" ], y = df[ "sepal.width" ]) # → <class 'plotly.graph_objs._figure.Figure'> 优点是你可以直接将用 Pandas 创建的图形集成到 Plotly 世界中,尤其是 Dash! 一个限制是 Plotly 与 Pandas 的集成还不够完美,正如 Plotly 网站上详细说明的那样 2.3. Hv图 Hvplot是一款基于 bokeh 的交互式可视化包。 这是一个令人兴奋的包,我很久以前就发现了它,它一直让我着迷,不仅因为 Hvplot 集成了 Pandas 中的后端概念,还因为它有Holoviz 套件和相关包(如Panel)来创建动态客户端网站。 甚至没有 Pandas 后端的概念,Hvplot 也不需要过度学习就可以开始使用,只需将Pandas 的.plot()替换为.hvplot()即可: 导入pandas作为pd 导入hvplot df = pd.read_csv( "iris.csv" ) # 使用 Pandas 绘图 df.plot.scatter(backend = "hvplot" , x = "sepal.length" , y = "sepal.width" ) # 与 hvplot 相同的图 df.hvplot.scatter(backend = "hvplot" , x = "sepal.length" , y = "sepal.width" ) 使用 Hvplot 后端的方式与 Plotly 后端相同,只需导入 Hvplot 包的依赖项: import numpy as np import pandas as pd # 基础包 import hvplot import hvplot.pandas # 安装特定依赖 pd.options.plotting.backend = 'hvplot' # 后端修改 data = np.random.normal(size=[ 50 , 2 ]) df = pd.DataFrame(data, columns=[ 'x' , 'y' ]) df.plot(kind= 'scatter' , x= 'x' , y= 'y' ) # 绘图 与 Plotly 类似,使用 hvplot 后端的 Pandas 生成的图表属于 Hvplot 类型: df.plot.scatter(backend = "hvplot",x = "sepal.length",y = "sepal.width" ) # → <class 'holoviews.element.chart.Curve'> df.hvplot.scatter(backend = "hvplot",x = "sepal.length",y = "sepal.width" ) # → <class 'holoviews.element.chart.Curve'> Hvplot 是功能极其强大的 Holoviz 套件的一部分,该套件还包含许多其他相关工具,可推动数据分析的发展,例如Panel、geoviews、datashader等工具。这种类型的一致性允许从 pandas 创建图形,同时仍能利用 Holoviz 套件。 3. 结论 Pandas 后端是一种非常有效的解决方案,无需投入时间即可发现和利用最新的 Python 可视化包:在 18 个字符(包括空格)内,可以将标准 matplotlib 图形本地转换为交互式 Plotly 图形,从而充分利用这种可视化类型的所有优势。 然而,该解决方案有一定的局限性:它不适合需要大量定制的高级可视化目标,例如数据新闻中的高级可视化,因为 Pandas 中的包集成尚不完善。此外,该解决方案仅涵盖基于 Pandas 构建的可视化包,而不包括其他可视化解决方案,例如 D3.js。 Hvplot 目前是我最喜欢的可视化软件包:它非常容易上手,可以与所有主要的数据处理包(Polars、Dask、Xray 等)配合使用,并且是一系列应用程序的一部分,可让您从图表转到动态完整的客户端网站。

感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值