起源: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 pdimport numpy as npfrom sklearn.datasets import fetch_openmlpd.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-managerjupyter labextension install @bokeh/jupyter_bokeh
上面咱们应用Bokeh backend
从新创立刚刚plotly
实现的的散点图。
pd.options.plotting.backend = 'pandas_bokeh'import pandas_bokehfrom bokeh.io import output_notebookfrom bokeh.plotting import figure, showoutput_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/