来源:PythonDataScience作者:东哥飞飞用Python做数据分析离不开pandas。Pnadas更多的作用是处理和转换数据。Pandas也内置了可视化操作,但是效果很粗糙。因此,当你使用Python进行数据分析时,通常的做法是先使用pandas处理数据,然后使用Matplotlib、Seaborn、Plotly、Bokeh等可视化dataframe或series。但说实话,每个可视化包都有自己独特的方法和功能,我经常忘记这一点。这是我一直头疼的地方。好消息!从最新的pandas0.25.3版本开始,不再需要以上操作。数据处理和可视化可以单独使用pandas完成。Pandas现在可以使用Plotly和Bokeh作为可视化的后端,直接实现交互操作,无需使用单独的可视化包。让我们一起看看如何使用它。1.激活后台导入pandas后,直接使用如下代码激活后台,例如下面激活plotly。pd.options.plotting.backend='plotly'目前,pandas后端支持以下可视化包。PlotlyHoloviewsMatplotlibPandas_bokehHyplot2。PlotlybackendPlotly的优势在于它是基于Javascript版本的库编写的,因此生成的Web可视化图表可以显示为HTML文件或嵌入到基于Python的Web应用程序中。让我们看看如何使用plotly作为pandas的后端进行可视化。如果你还没有安装Plotly,你需要pipintsallplotly安装它。如果您在Jupyterlab中使用Plotly,则需要一些额外的安装步骤来显示可视化效果。首先,安装IPywidgets。pipinstalljupyterlab"ipywidgets>=7.5"然后运行这个命令来安装Plotly扩展。jupyterlabextensioninstalljupyterlab-plotly@4.8.1例子选自openml.org的数据集,链接如下:数据链接:https://www.openml.org/d/187这个数据也是Scikit-learn中的示例数据,因此也可以使用以下代码直接导入。将熊猫导入为pdimportnumpy作为npfromsklearn.datasets导入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后端探索数据集。绘图的完成方式与正常使用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[['Hue','Proline','class']].plot.scatter(x='Hue',y='Proline',color='class',title='Proline和Hue按葡萄酒分类')fig.show()3.BokehbackendBokeh是另一个Python可视化包,同样提供了丰富的交互式可视化效果。Bokeh还有一个流式API来创建流式数据(例如金融市场)的实时可视化。pandas-Bokeh的GitHub链接如下:https://github.com/PatrikHlob...照例可以用pip安装,pipinstallpandas-bokeh。为了在Jupyterlab中显示Bokeh可视化,需要安装两个新的扩展。jupyterlabextensioninstall@jupyter-widgets/jupyterlab-managerjupyterlabextensioninstall@bokeh/jupyter_bokeh接下来,我们使用Bokeh后端重新创建plotly刚刚实现的散点图。pd.options.plotting.backend='pandas_bokeh'importpandas_bokehfrombokeh.ioimportoutput_notebookfrombokeh.plottingimportfigure,showoutput_notebook()p1=data.plot_bokeh.scatter(x='Hue',y='脯氨酸',category='class',title='ProlineandHuebywineclass',show_figure=False)show(p1)的关键语句就一行代码,非常快,交互效果如下。Bokeh还有一个plot_grid函数,可以为多个图表创建类似仪表板的布局,下面以网格布局创建四个图表。output_notebook()p1=data.plot_bokeh.scatter(x='Hue',y='Proline',category='class',title='ProlineandHuebywineclass',show_figure=False)p2=data[['Hue','class']].groupby(['class']).mean().plot.bar(title='MeanHueperClass')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='DistributionperClass:Hue')df_proline=pd.DataFrame({'class_1':data[data['class']=='1']['Proline'],'class_2':data[data['class']=='2']['Proline'],'class_3':数据[data['class']=='3']['Proline']},columns=['class_1','class_2','class_3'])p4=df_proline.plot_bokeh.hist(title='每类分布:脯氨酸')pandas_bokeh.plot_grid([[p1,p2],[p3,p4]],plot_width=450)可以看出可视化部分是在pandasdataframe的基础上用一行代码完成的,最后plot_grid完成布局4.总结在内置Pandas绘图功能多个第三方可视化后端的加入,大大增强了pandas对数据可视化的功能。以后可能真的不用学很多可视化操作了,pandas也可以用来打魂!原创不易,快来支持我吧。本文首发于本人原创公众号:PythonDataScience,欢迎关注。个人网站:http://www.datadeepin.com/
