共计 3446 个字符,预计需要花费 9 分钟才能阅读完成。
起源: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/