再见,可视化!你好,Pandas!
2020/10/16 14:03:59
本文主要是介绍再见,可视化!你好,Pandas!,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
来源:Python数据科学
作者:东哥起飞
用Python
做数据分析离不开pandas
,pnadas
更多的承载着处理和变换数据的角色,pands
中也内置了可视化的操作,但效果很糙。
因此,大家在用Python做数据分析时,正常的做法是用先pandas
先进行数据处理,然后再用Matplotlib
、Seaborn
、Plotly
、Bokeh
等对dataframe
或者series
进行可视化操作。
但是说实话,每个可视化包都有自己独特的方法和函数,经常忘,这是让我一直很头疼的地方。
好消息来了!从最新的pandas
版本0.25.3开始,不再需要上面的操作了,数据处理和可视化完全可以用pandas
一个就全部搞定。
pandas
现在可以使用Plotly
、Bokeh
作为可视化的backend,直接实现交互性操作,无需再单独使用可视化包了。
下面我们一起看看如何使用。
1. 激活backend
在import
了pandas
之后,直接使用下面这段代码激活backend,比如下面要激活plotly
。
pd.options.plotting.backend = 'plotly'
目前,pandas
的backend支持以下几个可视化包。
- Plotly
- Holoviews
- Matplotlib
- Pandas_bokeh
- Hyplot
2. Plotly backend
Plotly
的好处是,它基于Javascript
版本的库写出来的,因此生成的Web可视化图表,可以显示为HTML
文件或嵌入基于Python的Web应用程序中。
下面看下如何用plotly
作为pandas
的backend进行可视化。
如果还没安装Plotly
,则需要安装它pip intsall plotly
。如果是在Jupyterlab
中使用Plotly
,那还需要执行几个额外的安装步骤来显示可视化效果。
首先,安装IPywidgets
。
pip install jupyterlab "ipywidgets>=7.5"
然后运行此命令以安装Plotly
扩展。
jupyter labextension install jupyterlab-plotly@4.8.1
示例选自openml.org的的数据集,链接如下:
数据链接:https://www.openml.org/d/187
这个数据也是Scikit-learn
中的样本数据,所以也可以使用以下代码将其直接导入。
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()
该数据集是葡萄酒相关的,包含葡萄酒类型的许多功能和相应的标签。数据集的前几行如下所示。
下面使用Plotly backend
探索一下数据集。
绘图方式与正常使用Pandas
内置的绘图操作几乎相同,只是现在以丰富的Plotly
显示可视化效果。
下面的代码绘制了数据集中两个要素之间的关系。
fig = data[['Alcohol', 'Proline']].plot.scatter(y='Alcohol', x='Proline') fig.show()
如果将鼠标悬停在图表上,可以选择将图表下载为高质量的图像文件。
我们可以结合Pandas
的groupby
函数创建一个条形图,总结各类之间Hue的均值差异。
data[['Hue','class']].groupby(['class']).mean().plot.bar()
将class
添加到我们刚才创建的散点图中。通过Plotly
可以轻松地为每个类应用不同的颜色,以便直观地看到分类。
fig = data[['Hue', 'Proline', 'class']].plot.scatter(x='Hue', y='Proline', color='class', title='Proline and Hue by wine class') fig.show()
3. Bokeh backend
Bokeh
是另一个Python可视化包,也可提供丰富的交互式可视化效果。Bokeh
还具有streaming API
,可以为比如金融市场等流数据创建实时可视化。
pandas-Bokeh
的GitHub链接如下:
https://github.com/PatrikHlob...
老样子,用pip安装即可,pip install pandas-bokeh
。
为了在Jupyterlab
中显示Bokeh
可视化效果,还需要安装两个新的扩展。
jupyter labextension install @jupyter-widgets/jupyterlab-manager jupyter labextension install @bokeh/jupyter_bokeh
下面我们使用Bokeh backend
重新创建刚刚plotly
实现的的散点图。
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', title='Proline and Hue by wine class', show_figure=False) show(p1)
关键语句就一行代码,非常快捷,交互式效果如下。
Bokeh
还具有plot_grid
函数,可以为多个图表创建类似于仪表板的布局,下面在网格布局中创建了四个图表。
output_notebook() p1 = data.plot_bokeh.scatter(x='Hue', y='Proline', category='class', title='Proline and Hue by wine class', show_figure=False) p2 = data[['Hue','class']].groupby(['class']).mean().plot.bar(title='Mean Hue per Class') 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(title='Distribution per Class: Hue') 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(title='Distribution per Class: Proline') pandas_bokeh.plot_grid([[p1, p2], [p3, p4]], plot_width=450)
可以看到,可视化的部分都是在pandas
的dataframe
基础上一行代码搞定,最后plot_grid
完成布局。
4. 总结
在内置的Pandas
绘图功能增加多个第三方可视化backend,大大增强了pandas
用于数据可视化的功能,今后可能真的不需再去学习众多可视化操作了,使用pandas也可以一击入魂!
原创不易,来波点赞支持。
本篇首发于我的原创公众号:Python数据科学,欢迎关注。
个人网站:http://www.datadeepin.com/
这篇关于再见,可视化!你好,Pandas!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解