作者:韩信子@ShowMeAI
数据分析实战系列:https://www.showmeai.tech/tutorials/40
本文地址:https://www.showmeai.tech/article-detail/410
申明:版权所有,转载请分割平台与作者并注明出处
珍藏ShowMeAI查看更多精彩内容

引言

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

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

实战数据集下载(百度网盘):公众号『ShowMeAI钻研核心』回复『实战』,或者点击 这里 获取本文 [[41]ipywidgets:应用Python创立交互式仪表板](https://www.showmeai.tech/art...) 『CardioGoodFitness 数据集

ShowMeAI官网GitHub:https://github.com/ShowMeAI-Hub

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

import pandas as pdimport ipywidgets import seaborn as snsimport matplotlib.pyplot as plt

咱们先看一下数据变量。数据中蕴含 2 个连续变量,支出 Income 和英里数 Miles。

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

筹备工作

ipywidget 模块蕴含了很多可用的小部件。在这个演示中,咱们将应用下拉框抉择类别数据,以便更好地理解里程散布。咱们将抉择箱线图来绘制每个类别的里程数据。

%matplotlib widget# Drop down for boxplot variable to be selectdrop_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 plotdef 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 布局的示例。

上面咱们筹备输出和输入布局的显示。

#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 plotdisplay(ui2,out2)

下面散点图的输出是 x、y 和色调。因为每个变量都是一个抉择,咱们应用了下拉框。

输出设计、选项、值和要定义的形容

# dropbox select x axisdrop_down_x = ipywidgets.Dropdown(options=list(df.columns),                                value=list(df.columns)[0],                                description='X variable:',                                disabled=False)# dropbox select y axisdrop_down_y = ipywidgets.Dropdown(options=list(['Miles','Income']),                                value=list(['Miles','Income'])[0],                                description='Y variable:',                                disabled=False)# dropbox select categorydrop_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 functiondef 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 filteringui3 = 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 outputdisplay(ui3,out3)

参考资料

  • ipywidget
  • layout/布局

举荐浏览

  • 数据分析实战系列:https://www.showmeai.tech/tutorials/40
  • 机器学习数据分析实战系列:https://www.showmeai.tech/tutorials/41
  • 深度学习数据分析实战系列:https://www.showmeai.tech/tutorials/42
  • TensorFlow数据分析实战系列:https://www.showmeai.tech/tutorials/43
  • PyTorch数据分析实战系列:https://www.showmeai.tech/tutorials/44
  • NLP实战数据分析实战系列:https://www.showmeai.tech/tutorials/45
  • CV实战数据分析实战系列:https://www.showmeai.tech/tutorials/46
  • AI 面试题库系列:https://www.showmeai.tech/tutorials/48