全文共1803字,预计学习时长10分钟

图源:tehrantimes

流行 Python 数据分析库 Pandas 中的绘图功能一直是迅速绘制图表的首选之一。但是,其可用的可视化效果总是十分粗略,实用有余、美观不足。

笔者常用 Pandas 的绘图功能快速地执行一些可视的数据探索,但在介绍数据洞察时,我会使用“更美观”的绘图库(如 Plotly 或 Bokeh )来重做可视化。

自最新的 Pandas 版本0.25.3发布后,无需这样做了,现在我们可以使用第三方可视化库作为 Pandas 绘图功能的后端。Plotly是一款基于 web 实现交互式可视化的流行Python库,其最近发布了 Pandas绘图后端。

来看看如何使用 Plotly 和 Bokeh 后端创建更丰富的可视化效果。

使用不同的后端

想要激活绘图功能的不同后端需在导入 pandas 后,添加此行代码:

pd.options.plotting.backend = 'plotly'

当前可用的后端有:

· Plotly

· Holoviews

· Matplotlib

· Pandas _bokeh

· Hyplot

Plotly后端

Plotly是一个 Python库,其支持丰富的交互式可视化效果。Plotly包的好处之一在于它是在库的 Javascript 版本之上构建的,这意味着图表会基于Web,可以显示为 HTML 文件或嵌入到基于Python的Web应用程序中。用户还可以将可视化内容下载为高质量的图像文件,以便在文档或论文中使用。

下面来浏览一些Plotly作为Pandas绘图后端的快速示例。

如果还没有安装Plotly ,则需要使用pip intsall plotly来安装。如果是在Jupyterlab中使用 Plotly ,则需要额外执行几个安装步骤来显示可视化效果。首先,安装IPywaidgets:

pipenv install jupyterlab " ipywidgets>=7.5"pip install jupyterlab "ipywidgets>=7.5"

然后运行以下命令以安装Plotly扩展:

jupyter labextension install jupyterlab-plotly@4.8.1

为了说明绘图后端的用法,使用openml.org名为“wine(葡萄酒)”的数据集。

import pandas as pd      import numpy as np             from sklearn.datasets import fetch_openml             pd.options.plotting.backend ='plotly'             X,y =fetch_openml("wine", version=1, as_frame=True, return_X_y=True)      data = pd.concat([X,y], axis=1)      data.head()

该数据集由各类葡萄酒的多个特征和相应的标签组成。下图显示了数据集的前几行。

绘图功能的工作方式与标准Pandas绘图功能的工作方式大致相同,只是现在可视化效果同Plotly一样丰富。下面的代码绘制了数据集中两个特征之间的关系。

fig = data[['Alcohol', 'Proline']].plot.scatter(y='Alcohol', x='Proline')fig.show()

可以通过组合 Pandas 的groupby函数创建一个柱状图来总结类之间的平均色调差异:

data[['Hue','class']].groupby(['class']).mean().plot.bar()

将类添加到之前创建的散点图中。使用Plotly,可以轻松地给每个类使用不同的颜色,以便直观地区分:

fig = data[['Alcohol', 'Proline']].plot.scatter(y='Alcohol', x='Proline')                                      fig.show()

Bokeh 后端

Bokeh 也可以提供丰富交互式可视化效果。其可视化图表可以在 Web 浏览器中查看,嵌入到 Web应用程序中或用于创建交互式仪表板。Bokeh 甚至有一个流式 API,可以为流数据(如金融市场数据)创建实时可视化图表。

库可以通过pip来安装:

pip install pandas-bokeh

要在 Jupyterlab中显示 Bokeh的可视化效果,需要安装两个新的扩展:

jupyter labextension install @jupyter-widgets/jupyterlab-managerjupyterlabextension install @bokeh/jupyter_bokeh

使用 Bokeh 后端重新创建之前的散点图:

pd.options.plotting.backend ='pandas_bokeh'             import pandas_bokeh                            from bokeh.io import output_notebook                            from bokeh.plotting import figure, show             output_notebook()                            p1= data.plot_bokeh.scatter(x='Hue',                                                          y='Proline',                                                          category='class',                                                          ,                                                          show_figure=False)                            show(p1)

可视化效果如下:

Bokeh 有一个plot_grid函数,可为多个图表创建仪表板式布局。下面的代码在网格布局中创建四个图表:

output_notebook()             p1 = data.plot_bokeh.scatter(x='Hue',                                               y='Proline',                                               category='class',                                               ,                                               show_figure=False)                                      p2 = data[['Hue','class']].groupby(['class']).mean().plot.bar()             df_hue = pd.DataFrame({                     'class_1': data[data['class'] =='1']['Hue'],                     'class_2': data[data['class'] =='2']['Hue'],                     'class_3': data[data['class'] =='3']['Hue']},                     columns=['class_1', 'class_2', 'class_3'])             p3 = df_hue.plot_bokeh.hist()             df_proline = pd.DataFrame({                     'class_1': data[data['class'] =='1']['Proline'],                     'class_2': data[data['class'] =='2']['Proline'],                     'class_3': data[data['class'] =='3']['Proline']},                     columns=['class_1', 'class_2', 'class_3'])             p4 =df_proline.plot_bokeh.hist()             pandas_bokeh.plot_grid([[p1, p2],                                         [p3, p4]], plot_width=450)

为内置的Pandas绘图功能添加多个第三方后端,这大大增强了该库用于数据可视化的能力。从此之后,pandas就可以集美貌与实用于一身啦。

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

import pandas as pd什么意思_Pandas万花筒:让绘图变得更美观相关推荐

  1. python万花筒教程_Pandas万花筒:让绘图变得更美观

    全文共1803字,预计学习时长10分钟 图源:tehrantimes 流行 Python 数据分析库 Pandas 中的绘图功能一直是迅速绘制图表的首选之一.但是,其可用的可视化效果总是十分粗略,实用 ...

  2. import numpy as np\n, import pandas as pd\n, import matplotlib.pyplot as plt

    这三行代码都是在导入 Python 中的三个库: "import numpy as np":这行代码导入了 numpy 库,并将其简写为 np.numpy 是一个用于科学计算的 P ...

  3. import pandas as pd# 读取两个 Excel 文件df1 = pd.read_excel(file1.xlsx)df2 = pd.read_excel(file2.xlsx)...

    import pandas as pd 是在 Python 中导入 Pandas 库的语句.pd 是 Pandas 库的常用简称.使用这个语句后,你就可以使用 Pandas 库中的各种函数和方法来处理 ...

  4. import pandas as pd什么意思_【医学名词】多发性骨髓瘤MR、SD、PD分别是什么意思?...

    原标题:[医学名词]多发性骨髓瘤MR.SD.PD分别是什么意思? 根据今年2020已修订多发性骨髓瘤指南当中,有关医学名词的普及有利于提高病友家属对疾病的认知性.除了之前分享的相关名词外,下文再介绍有 ...

  5. python import pandas as pd_python – Pandas pd.Series.isin性能与集合与数组

    这可能不是很明显,但pd.Series.isin使用O(1) – 查找. 经过分析,证明了上述说法,我们将利用其洞察力创建一个Cython原型,可以轻松击败最快的开箱即用解决方案. 假设"s ...

  6. pandas 替换 某列大于_pandas数据分析总结大全(入门加进阶)

    前言 python有个很好用的数据分析库pandas,前段时间做了个数据挖掘的比赛,里面数据分析的部分,是用pandas来实现的,今天借助自己实践的经验,来总结一下pandas常用的数据分析方法. 1 ...

  7. python pandas教程百家号_Pandas 常见的基本方法

    说明:文章所有内容均截选自实验楼教程[Pandas 使用教程],想要查看教程完整内容,点击教程即可~ 前言: Pandas 是非常著名的开源数据处理工具,我们可以通过它对数据集进行快速读取.转换.过滤 ...

  8. pandas自动创建文件夹_pandas快速入门

    pandas有两类数据对象:dataframe和series.Series是一个带标签的一维数组,通常索引在左,值在右.dataframe是一个带标签的二维数组,可以理解成series的字典,共用索引 ...

  9. pandas 替换 某列大于_Pandas简单入门 1

    1写在前面我是从16年开始学习Python的,在使用Python最开始的一段时间,基本是操作list列表和dict字典两个简单的数据结构,后来接触数据的特征越来越多,发现即使是嵌套字典记录数据也很困难 ...

最新文章

  1. 搭建glusterfs集群
  2. Java List.size()方法:返回列表中元素的个数(亲测)
  3. lamp不解析php,lamp环境无法解析php环境
  4. showcase basketball stadium
  5. 程序员的最大噩梦是什么?
  6. 帆软mysql迁移_平台数据迁移- FineReport帮助文档|报表开发|报表使用|学习教程
  7. 用c语言写贪吃蛇(简易)(适用初学者)(保姆级)
  8. Python语音基础操作--5.4小波分解
  9. 一分钟轻松掌握 !Java 高级数据结构 -- 原生 BitSet 源码刨析
  10. 在x64上构建智能家居(home assistant) (一) Supervised版本安装
  11. Android 没有出现menu 按键显示 解决
  12. springboot篇】二十一. 基于springboot电商项目 十二 订单服务
  13. 如何使用Arduino开发板读/写SD卡模块的数据
  14. 手绘 | 我说话直,你别介意——我呸!
  15. 步进电机控制器设计 利用Quartus ii9.0设计一个具有四相单四拍
  16. 计算机内存的维修方法,电脑修理技巧之内存故障解决
  17. 立象(ARGOX) 条码标签打印机通用库 PLLB(BWIN-SCAPI)
  18. css+nth-child+无效,CSS nth-child()和:eq()在我的代码中不起作用
  19. 自我总结前端vue笔记
  20. Mybatis插件better-mybatis-generator的下载与使用

热门文章

  1. python解包的概念_Python学习第176课——tar解包和压缩
  2. telegraf输出MySQL_Grafana+influxdb+telegraf初探-快速监控主机与mysql
  3. ImportError: cannot import name ‘joblib‘
  4. RuntimeError: DataLoader worker (pid(s) 13512, 280, 21040) exited unexpectedly
  5. 数字图像处理-0.绪论
  6. “横平竖直”进行连线+将相邻框进行合并
  7. 安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】
  8. Replace Array with Object(以对象取代数组)
  9. android 遍历所有view,Android 算法:遍历ViewGroup找出所有子View
  10. C语言for循环的嵌套例题,c语言 for循环的嵌套(含答案)