关于pandas:再见可视化你好Pandas

47次阅读

共计 3446 个字符,预计需要花费 9 分钟才能阅读完成。

起源:Python 数据迷信
作者:东哥腾飞

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

因而,大家在用 Python 做数据分析时,失常的做法是用先 pandas 先进行数据处理,而后再用 MatplotlibSeabornPlotlyBokeh 等对 dataframe 或者 series 进行可视化操作。

然而说实话,每个可视化包都有本人独特的办法和函数,常常忘,这是让我始终很头疼的中央。

好消息来了!从最新的 pandas 版本 0.25.3 开始,不再须要下面的操作了,数据处理和可视化齐全能够用 pandas 一个就全副搞定。

pandas当初能够应用 PlotlyBokeh 作为可视化的 backend,间接实现交互性操作,无需再独自应用可视化包了。

上面咱们一起看看如何应用。

1. 激活 backend

importpandas之后,间接应用上面这段代码激活 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()

如果将鼠标悬停在图表上,能够抉择将图表下载为高质量的图像文件。

咱们能够联合 Pandasgroupby函数创立一个条形图,总结各类之间 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)

能够看到,可视化的局部都是在 pandasdataframe根底上一行代码搞定,最初 plot_grid 实现布局。

4. 总结

在内置的 Pandas 绘图性能减少多个第三方可视化 backend,大大加强了 pandas 用于数据可视化的性能,今后可能真的不需再去学习泛滥可视化操作了,应用 pandas 也能够一击入魂!


原创不易,来波点赞反对。

本篇首发于我的原创公众号:Python 数据迷信 ,欢送关注。
集体网站:http://www.datadeepin.com/

正文完
 0