再见,可视化!你好,Pandas!

image

来源: Python数据科学
做者:东哥起飞

Python作数据分析离不开pandaspnadas更多的承载着处理和变换数据的角色,pands中也内置了可视化的操做,但效果很糙。python

所以,你们在用Python作数据分析时,正常的作法是用先pandas先进行数据处理,而后再用MatplotlibSeabornPlotlyBokeh等对dataframe或者series进行可视化操做。git

可是说实话,每一个可视化包都有本身独特的方法和函数,常常忘,这是让我一直很头疼的地方。github

好消息来了!从最新的pandas版本0.25.3开始,再也不须要上面的操做了,数据处理和可视化彻底能够用pandas一个就所有搞定。函数

pandas如今可使用PlotlyBokeh做为可视化的backend,直接实现交互性操做,无需再单独使用可视化包了。布局

下面咱们一块儿看看如何使用。学习

1. 激活backend

importpandas以后,直接使用下面这段代码激活backend,好比下面要激活plotlyfetch

pd.options.plotting.backend = 'plotly'

目前,pandas的backend支持如下几个可视化包。网站

  • Plotly
  • Holoviews
  • Matplotlib
  • Pandas_bokeh
  • Hyplot

2. Plotly backend

Plotly的好处是,它基于Javascript版本的库写出来的,所以生成的Web可视化图表,能够显示为HTML文件或嵌入基于Python的Web应用程序中。spa

下面看下如何用plotly做为pandas的backend进行可视化。3d

若是还没安装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()

该数据集是葡萄酒相关的,包含葡萄酒类型的许多功能和相应的标签。数据集的前几行以下所示。

image

下面使用Plotly backend探索一下数据集。

绘图方式与正常使用Pandas内置的绘图操做几乎相同,只是如今以丰富的Plotly显示可视化效果。

下面的代码绘制了数据集中两个要素之间的关系。

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

image

若是将鼠标悬停在图表上,能够选择将图表下载为高质量的图像文件。
image

咱们能够结合Pandasgroupby函数建立一个条形图,总结各种之间Hue的均值差别。

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

image

class添加到咱们刚才建立的散点图中。经过Plotly能够轻松地为每一个类应用不一样的颜色,以便直观地看到分类。

fig = data[['Hue', 'Proline', 'class']].plot.scatter(x='Hue', y='Proline', color='class', title='Proline and Hue by wine class')
fig.show()

image

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)

关键语句就一行代码,很是快捷,交互式效果以下。

image

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)

能够看到,可视化的部分都是在pandasdataframe基础上一行代码搞定,最后plot_grid完成布局。
image

4. 总结

在内置的Pandas绘图功能增长多个第三方可视化backend,大大加强了pandas用于数据可视化的功能,从此可能真的不需再去学习众多可视化操做了,使用pandas也能够一击入魂!


原创不易,来波点赞支持。

本篇首发于个人原创公众号:Python数据科学,欢迎关注。
我的网站:http://www.datadeepin.com/

相关文章
相关标签/搜索