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

Pandas 图表的威力:后端

原文:towardsdatascience.com/the-power-of-pandas-plots-backends-6a08d52071d2?source=collection_archive---------9-----------------------#2024-08-30

从 Pandas 中轻松创建交互式图形

https://medium.com/@petoulemonde?source=post_page---byline--6a08d52071d2--------------------------------https://towardsdatascience.com/?source=post_page---byline--6a08d52071d2-------------------------------- Pierre-Etienne Toulemonde

·发布于Towards Data Science ·5 分钟阅读·2024 年 8 月 30 日

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d5b796700b79a971847f9d847e9373d9.png

图片由Lukas Blazek提供,来源于Unsplash

索引

  1. 上下文

  2. 后端

    2.1. Matplotlib

    2.2. Plotly

    2.3. Hvplot

  3. 讨论

  4. 离开之前的一句话

1.上下文

Python 有许多可视化包,其中三个最著名的是:Matplotlib(以及 seaborn)、Plotly 和 Hvplot。这三种包各有其优点,但都需要付出学习成本,甚至有时相当可观。

本文的灵感来源于我发现的《Pandas 方法思维导图》,该导图由Daily Dose of Data science newsletter提供(这是我强烈推荐的一个通讯)。当时,我正好在探索 Hvplot 可视化包。我认为,像 Hvplot 这样轻松切换不同可视化后端的想法非常棒(这里有一个示例,展示如何从 Hvplot 切换到 Plotly)。看到我们也可以用 pandas 实现这一点,我觉得这个想法太有趣,不能不分享出来。

Pandas 是 Python 数据科学的核心,我们都知道如何使用它。但集成到 Pandas 中的 Matplotlib 已经显得有些老旧,并且在易用性和展示效果上被其他包超越。Pandas 可视化后端的强大之处在于,它让你能够利用最新的可视化包进行数据探索和结果呈现,而无需花时间学习这些包,尽管这些包非常强大!

2. 后端

Pandas 是基于两个包构建的,Numpy 和 Matplotlib。这也解释了为什么我们使用 Matplotlib 脚本来生成图表,因此生成的图表是 Matplotlib 图表。

自从 Pandas 创建以来,它不断发展,并提供了用户修改 Pandas 使用的可视化后端的可能性。

我在研究过程中找到的 6 个可用的后端是:

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

pd.set_option("plotting.backend",'<name of backend>')# ORpd.options.plotting.backend='<name of backend>'
df.plot(backend='<name of backend>',x='...')

注意:更改后端需要 Pandas >= 0.25,有时还需要一些特定的依赖项,例如下面的 Hvplot。

这里有 2 个示例:

importpandasaspd# Basic packagespd.options.plotting.backend="plotly"df=pd.DataFrame(dict(a=[1,3,2],b=[3,2,1]))fig=df.plot()fig.show()
importnumpyasnpimportpandasaspd# Basic packagesimporthvplotimporthvplot.pandas# ! Specific dependency to installpd.options.plotting.backend='hvplot'# Backend modificationdata=np.random.normal(size=[50,2])df=pd.DataFrame(data,columns=['x','y'])df.plot(kind='scatter',x='x',y='y')# Plotting

2.1. Matplotlib

Matplotlib 是 Pandas 的默认可视化后端。换句话说,如果不指定后端,将使用 Matplotlib。它是一个高效的包,可以快速可视化数据以进行探索或提取结果,但它已经老化,并且在易用性和渲染能力上被其他包赶超。

Matplotlib 的优势在于,由于 Pandas 从创建之初就基于 Matplotlib,因此 Matplotlib 与 Pandas 的集成非常完美,所有 Matplotlib 函数都可以在 Pandas 中使用。

提醒一下,这里是集成到 Pandas 中的 11 个 Matplotlib 显示方法:

2.2. Plotly

Plotly 是由 Plotly 公司开发的可视化包。该公司开发了框架 Plotly.js,用于在 Python 中进行交互式数据可视化。Plotly 公司还提供了 Python 仪表板包 Dash。

要在 Pandas 中使用 Plotly,只需导入Plotly express并更改后端:

importpandasaspdimportplotly.expressaspx# Import packagesdf=pd.read_csv("iris.csv")# Modifying locally Pandas backenddf.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 网站(Plotly 网站详情)。

2.3. Hvplot

Hvplot 是一个基于 bokeh 的交互式可视化包。

这是一个令人兴奋的包,我是前些时候发现的,至今仍令我着迷,既因为 Hvplot 集成了类似于 Pandas 的后端概念,也因为 Holoviz 套件 以及相关包如 Panel 用于创建动态客户端网站。

即使没有 Pandas 后端的概念,Hvplot 也不需要过多的学习就能开始使用,只需将 Pandas 的.plot()替换为.hvplot()

importpandasaspdimporthvplot df=pd.read_csv("iris.csv")# Plot with Pandasdf.plot.scatter(backend="hvplot",x="sepal.length",y="sepal.width")# Same plot with hvplotdf.hvplot.scatter(backend="hvplot",x="sepal.length",y="sepal.width")

使用 Hvplot 后端的方式与使用 Plotly 后端相同,只需要导入 Hvplot 包的依赖项:

importnumpyasnpimportpandasaspd# Basic packagesimporthvplotimporthvplot.pandas# Specific dependency to installpd.options.plotting.backend='hvplot'# Backend modificationdata=np.random.normal(size=[50,2])df=pd.DataFrame(data,columns=['x','y'])df.plot(kind='scatter',x='x',y='y')# Plotting

与 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 等)兼容,并且是一个持续应用的部分,可以让你从图表扩展到动态的全客户端网站。

4. 离开前的一句话

在我的研究过程中,我没有找到预期的那么多文档。我认为这个概念很棒,所以我本以为会有很多相关文章。如果你觉得这个解决方案真的有用,或者只是一个看起来很酷但没有实际用途的东西,欢迎在评论中告诉我。

感谢阅读!

http://www.jsqmd.com/news/842904/

相关文章:

  • 微信支付直连商户,自动处理消费者投诉,支持多微信商户号
  • 解放双手!MAA明日方舟助手:3步告别重复操作,开启游戏智能管理新时代
  • 2026年靠谱的测量室/天津精密测量室用户好评公司 - 品牌宣传支持者
  • 探索高精度测量的新境界:AD7124中文手册推荐
  • 请求签名算法破解:从Chrome DevTools到Python还原的完整流程
  • STM32H7网络延迟问题分析与解决方案
  • 【亲测免费】 ShellNew Settings 右键菜单管理工具
  • 频谱估计与无限采样框架的技术突破与应用
  • 【免费下载】【mysql】Connector/J 8.0.31 - Java数据库连接驱动
  • STM32---蓝牙模块ECB02(主机模式_多从机连接与切换策略)
  • 给科服的Linux课程
  • 一天一个昇腾 Agent-Skills 小技巧:让昇腾专家经验变成 Agent 能力,Agent-Skills 仓来了
  • 网站建设公司推荐:业内公认高水准网站制作公司一览
  • 告别传统MPLS!手把手教你用SRv6 TE Policy搭建EVPN L3VPN(附华为设备配置详解)
  • 2026年05月烘干房服务优选指南:国内口碑企业大盘点,猪舍喷雾消毒/物资烘干房/生猪调运消毒,烘干房服务公司推荐 - 品牌推荐师
  • 2026年比较好的三相电机/台州交流电机/台州高效节能电机/永磁电机厂家对比推荐 - 品牌宣传支持者
  • 2026年4月膜企业推荐,热熔胶膜/复合材料薄膜/膜/薄膜/箱包膜/桌面透明膜/手机膜/医用材料膜,膜生产厂家哪家靠谱 - 品牌推荐师
  • 2026年5款论文降AI工具实测:如何用降AI率工具科学降低AI指标(附对比表) - 降AI实验室
  • 3DMAX建模效率革命:QuickBoolean插件核心功能深度解析与实战指南
  • 5个实用Workflow示例:从订单处理到内容审核的完整指南
  • VisionPro脚本中集成Halcon深度学习模型的实战配置与图像格式转换
  • Windows安卓驱动终极解决方案:一键安装最新ADB和Fastboot工具
  • 2026年知名的海康大华安防设备回收/双鸭山大华安防设备回收/双鸭山安防设备回收/安防设备回收可靠服务公司 - 品牌宣传支持者
  • 【免费下载】 掌握MagicDraw,从这份中文培训教程开始!
  • Watchify核心原理深度解析:理解文件监视与增量构建机制
  • 如何阅读《超喜欢的趣味数学书 有趣的数学园地》,这本书适合多大的小朋友看
  • 2026年质量好的用于冰箱内胆成型石英加热器/江苏石英加热器涂布设备/用于真空环境石英加热器/石英加热器加热软化碳纤维设备稳定供货厂家推荐 - 品牌宣传支持者
  • 【免费下载】 探索GD32F303的无线升级之旅:基于YMODEM协议的固件升级解决方案
  • 2026年4月市场可信赖的二手钢结构厂房拆除施工性价比高的,规范施工拆除厂房钢结构无损回收材料 - 品牌推荐师
  • 2026年比较好的台州非标打磨机/打磨毛刺机厂家精选合集 - 行业平台推荐