Pandas 绘图的强大之处:后端

news2024/9/30 1:25:52

轻松通过 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开发人员)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚幻5|技能栏UI优化(2)——优化技能UI并实现技能栏的拖拽操作

这篇文章里&#xff0c;前情提要&#xff0c;文章里的序列变量应命名为序号&#xff0c;我命名错了&#xff0c;虽然不差&#xff0c;但为了后面更好的理解 一.刷新技能栏&#xff0c;用于刷新上一章文章的初始化技能栏 1.打开技能栏格子&#xff0c;打开图表&#xff0c;添加…

用AI工具制作高质量PPT的完整教程

其实使用AI或者ChatGPT写PPT的方式有很多种 下面主要说明两种方式&#xff0c;建议第二种方式 接下来我会用最简单的语言&#xff0c;一步一步说明&#xff0c;保证你能在五分钟内做完你想要的PPT 具体方法和工具&#xff0c;都在里面 1、手动生成 让ChatGPT帮你生成大纲和…

Leetcode面试经典150题-36.有效数独

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;比第一题稍微难点 class Solution {public static boolean isValidSudoku(char[][] board) {/**rowExists[i][j]代表第i行是否存在数据j1*/boolean[][] rowExists new boolean[9][9];/**rowExists[i][j]代表第i列是…

纵向合并单元格——table

将list数据处理成tableDate格式&#xff0c;id重复的数据&#xff0c;只有第一项有num字段&#xff08;num是重复的个数&#xff09;渲染表格&#xff0c;纵向合并第1、2、6列&#xff0c;id相同的合并 <template><div><el-table:data"tableData":sp…

力扣刷题--137. 只出现一次的数字 II【中等】

题目描述&#x1f357; 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 示例 1&#xff1a; 输入&am…

knime一行代码都不用写,就可以清洗数据,详细文字

knime数据清洗案例 最终效果 解决办法&#xff1a; 图文并茂的解决办法见我公众号&#xff1a;链接: knime一行代码都不用写&#xff0c;就可以清洗数据,详细步骤如下 具体使用的节点说明如下&#xff1a; 1、使用Excel Reader结节&#xff0c;将数据导入进来。 2.使用…

科技馆可视化系统:全新互动体验

通过图扑科技馆可视化平台&#xff0c;参观者可以体验互动式展示和虚拟现实展览&#xff0c;深入理解科学现象和技术创新&#xff0c;增强学习的趣味性和参与感。

HarmonyOS(52) 使用安全控件SaveButton保存图片

SaveButton使用简介 前言SaveButton简介约束与限制 实现点击事件全部源码 参考资料&#xff1a; 前言 在HarmonyOS(50) 截图保存功能实现一文中简单介绍了截图保存功能&#xff0c;本篇博文介绍一个更简单的保存图片控件SaveButton. SaveButton简介 SaveButton允许用户通过点…

全球财经动态:科技巨头风云再起,市场趋势显分化

一、美股大盘与债市动向 昨夜美股市场呈现分化格局&#xff0c;中概股表现强劲&#xff0c;而科技龙头英伟达却遭遇重挫。道指微涨&#xff0c;纳指小幅收跌&#xff0c;标普500指数则基本持平。美债收益率攀升&#xff0c;十年期国债收益率触及3.863%&#xff0c;市场避险情绪…

JavaWeb学习——原理篇学习

一、SpringBoot配置优先级 首先我们先知道三种SpringBoot支持的配置文件: 而当在一个Spring项目中&#xff0c;如果同时存在这三个配置文件&#xff0c;那么执行的优先级顺序应是&#xff1a; properties > yml > yaml 。 补充&#xff1a;属性配置 另外我们可以通过打包…

把http网站变成https

网站建设好后默认是HTTP网站&#xff0c;会被浏览器直接标注为不安全站点&#xff0c;甚至搜索引擎上也排名也不是那么出色。 HTTP协议是浏览网站和在线资源的基本协议。由于HTTP的连接未加密&#xff0c;因此往往不安全。HTTPS是默认HTTP协议的安全扩展。 访问HTTPS网站时&…

FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher

EasyPusher是一款国产的RTSP直播录制推流客户端工具&#xff0c;它支持Windows、Linux、Android、iOS等操作系统。EasyPusher采用RTSP推流协议&#xff0c;其中安卓版EasyPusher的Github托管地址为https://github.com/EasyDarwin/EasyPusher-Android。 不过EasyPusher有好几年没…

DAG路径搜索优化性能提高百倍

问题描述&#xff1a; 从一个DAG图中给定的起点 begin_line 寻找一条路径到达给定的终点 end_line。 图的拓扑关系由 top 这个映射&#xff08;map<int64, vector<int64>>&#xff09;表示&#xff0c;每条边都有一个或多个邻接的后继。begin_line 和 end_line 都…

javax.imageio.IIOException: Not a JPEG file: starts with 0xff 0xd9

目录 问题描述&#xff1a; 解决思路&#xff1a; 问题出现的原因&#xff1a; 解决方法&#xff1a; 问题描述&#xff1a; 最近在用java做一个上传图像识别文字的功能&#xff0c;上传图像后报错。 接口返回&#xff1a; {"code": 500,"success":…

滚动懒加载升级版:添加滚动回收策略

在之前的1.0版本的基础上&#xff0c;添加滚动回收策略&#xff0c;保持页面只保留固定数量的数据&#xff0c;优化渲染 否则一直往数组里push内容&#xff0c;当数组长度过大&#xff0c;可能页面会崩溃&#xff08;本需求是日志列表&#xff0c;由于日志数据可能会非常庞大&…

C++入门基础知识41——【关于C++ 运算符——杂项运算符】

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

URP custompasscustom render objects

https://dbbh666.blog.csdn.net/article/details/141296728?spm1001.2014.3001.5502 上一次 custom render pass的时候&#xff0c;直接是quad的渲染&#xff0c;如果想把任意对象绘制到FBO怎么写呢 参考这两个高手的文章&#xff0c;总结一下 https://www.bilibili.com/read…

换毛季猫咪化身掉毛怪,宠物浮毛如何清理?推荐用宠物空气净化器

我家现在有三只毛孩子&#xff0c;养宠的幸福是三倍&#xff0c;除毛的烦恼也是三倍。尤其还有两只是银渐层&#xff0c;掉毛量实在是太夸张了&#xff0c;衣服、地板、水杯家里到处都是。我也每天早晚都给它们梳毛&#xff0c;卫生也定期清理&#xff0c;可还是浮毛满天飞。 …

【前缀和】--- 初阶题目赏析

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey 了解完一维和二维前缀和模板之后&#xff0c;我们来看几道题目感受前缀和的算法原理以及使用场景。 &#x1f3e0; 寻找数组的中心下标 &am…

多张图片拼接在线制作难吗?学会这招让拼接变得很简单

你是否曾遇到过这样的困境&#xff1f;手机里的照片堆积如山&#xff0c;想要在社交平台上分享&#xff0c;却发现限制多多&#xff0c;根本没办法一次性分享完所有的精彩瞬间。这真是让人既兴奋又苦恼的事情啊&#xff01; 记得上次旅行回来&#xff0c;我拍了一大堆照片&…