交互式仪表板!Python轻松完成!⛵
  • 作者:韩信子@ShowMeAI
  • 数据剖析实战系列:www.showmeai.tech/tutorials/4…
  • 本文地址:www.showmeai.tech/article-det…
  • 声明:版权所有,转载请联络渠道与作者并注明出处
  • 保藏ShowMeAI检查更多精彩内容

引言

在本篇内容中,ShowMeAI将给大家解说运用 ipywidget 模块创立交互式仪表板。

交互式仪表板!Python轻松完成!⛵

咱们本次用到的数据集是 Kaggle 的 CardioGoodFitness,大家能够通过 ShowMeAI 的百度网盘地址下载。

实战数据集下载(百度网盘):大众号『ShowMeAI研究中心』回复『实战』,或者点击 这儿 获取本文 [41]ipywidgets:运用Python创立交互式仪表板 『CardioGoodFitness 数据集

ShowMeAI官方GitHub:github.com/ShowMeAI-Hu…

首要,咱们需求导入所需的模块。

import pandas as pd
import ipywidgets 
import seaborn as sns
import matplotlib.pyplot as plt

咱们先看一下数据变量。数据中包括 2 个连续变量,收入 Income 和英里数 Miles。

交互式仪表板!Python轻松完成!⛵

看板Demo实现:了解Miles的散布

预备工作

ipywidget 模块包括了很多可用的小部件。在这个演示中,咱们将运用下拉框挑选类别数据,以便更好地了解里程散布。咱们将挑选箱线图来制作每个类别的里程数据。

%matplotlib widget
# Drop down for boxplot variable to be select
drop_down_name = ipywidgets.Dropdown(options=list(df.drop(['Miles','Income'],axis=1).columns),
                                value=list(df.drop(['Miles','Income'],axis=1).columns)[0],
                                description='Columns:',
                                disabled=False)

接下来,咱们能够创立一个函数,答应输入用于制作英里箱线图的列名称。

#selected_vals = column used to plot
def boxplot(selected_vals):
    plt.close('all')
    fig = plt.figure(figsize=(9,5))
    plt.style.use('seaborn')
    sns.boxplot(df[selected_vals],df['Miles'])
    plt.title('Boxplot of miles for' + selected_vals)
    plt.show()

之后,咱们需求创立一个 layout/布局,Jupyter 交互式小部件具有一个 layout 特点,包括了许多影响小部件布局的 CSS 特点。

最简单的自定义是 HBox,它是一个水平布局的挑选器,而 VBox 代表一个垂直布局的挑选器。下面是 HBox 或 VBox 布局的示例。

交互式仪表板!Python轻松完成!⛵
交互式仪表板!Python轻松完成!⛵

下面咱们预备输入和输出布局的显现。

#layout for filtering 
ui2 = ipywidgets.HBox([drop_down_name])
# link your function to your input 
out2 = ipywidgets.interactive_output(boxplot,
                                     {'selected_vals' : drop_down_name})
# display your box plot
display(ui2,out2)
交互式仪表板!Python轻松完成!⛵

上面散点图的输入是 x、y 和色调。因为每个变量都是一个挑选,咱们运用了下拉框。

输入规划、选项、值和要定义的描述

# dropbox select x axis
drop_down_x = ipywidgets.Dropdown(options=list(df.columns),
                                value=list(df.columns)[0],
                                description='X variable:',
                                disabled=False)
# dropbox select y axis
drop_down_y = ipywidgets.Dropdown(options=list(['Miles','Income']),
                                value=list(['Miles','Income'])[0],
                                description='Y variable:',
                                disabled=False)
# dropbox select category
drop_down_category= ipywidgets.Dropdown(options=list(df.drop(['Miles','Income'],axis=1).columns),
                                value=list(df.drop(['Miles','Income'],axis=1).columns)[0],
                                description='Category:',
                              disabled=False)

散点图制作

# scatter plot function
def scatter(x,y,category):
    plt.close('all')
    fig = plt.figure(figsize=(9,5))
    plt.style.use('seaborn')
    sns.scatterplot(data=df,x=x,y=y,hue=category)
    plt.title('Scatterplot of ' +x+' versus '+ y)
    #plt.xlabel('Date')
    plt.show()

显现HBox或VBox的挑选器布局

# display the layout of filtering
ui3 = ipywidgets.HBox([drop_down_x,drop_down_y,drop_down_category])

将绘图与挑选器相关联

# related the plot link to filtering 
out3 = ipywidgets.interactive_output(scatter,
                                     {'x' : drop_down_x,
                                     'y': drop_down_y,
                                     'category':drop_down_category})

显现挑选后的输入和输出

#display the input and output
display(ui3,out3)
交互式仪表板!Python轻松完成!⛵

参考资料

  • ipywidget
  • layout/布局

推荐阅读

  • 数据剖析实战系列:www.showmeai.tech/tutorials/4…
  • 机器学习数据剖析实战系列:www.showmeai.tech/tutorials/4…
  • 深度学习数据剖析实战系列:www.showmeai.tech/tutorials/4…
  • TensorFlow数据剖析实战系列:www.showmeai.tech/tutorials/4…
  • PyTorch数据剖析实战系列:www.showmeai.tech/tutorials/4…
  • NLP实战数据剖析实战系列:www.showmeai.tech/tutorials/4…
  • CV实战数据剖析实战系列:www.showmeai.tech/tutorials/4…
  • AI 面试题库系列:www.showmeai.tech/tutorials/4…

交互式仪表板!Python轻松完成!⛵