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

💡 作者:韩信子@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官方GitHubhttps://github.com/ShowMeAI-Hub

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

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

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

💡 看板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 布局的示例。

下面我们准备输入和输出布局的显示。

#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)

上面散点图的输入是 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)

参考资料

推荐阅读

1 声望
1 粉丝
0 条评论
推荐阅读
万字长文剖析ChatGPT
简单来说,ChatGPT 是自然语言处理(NLP)和强化学习(RL)的一次成功结合,考虑到读者可能只熟悉其中一个方向或者两个方向都不太熟悉,本文会将 ChatGPT 涉及到的所有知识点尽可能通俗易懂的方式展现出来,有基...

xiangzhihong15阅读 1.7k

最好用的 python 库合集
🎈 分词 - jieba优秀的中文分词库,依靠中文词库,利用词库确定汉子之间关联的概率,形成分词结果 {代码...} 🎈 词云库 - wordcloud对数据中出现频率较高的 关键词 生成的一幅图像,予以视觉上的突出 {代码...} 🎈 ...

tiny极客11阅读 2.9k评论 2

封面图
SegmentFault 思否宣布将接入百度「文心一言」,提升开发者获取知识的效率
作为中国领先的新一代开发者社区,我们以「凝聚集体智慧,推动技术进步」为使命,长期关注前沿技术发展及产业应用。2023 年 2 月 11 日,ChatGPT for SegmentFault 浏览器插件上线,SegmentFault 成为了国内首个...

SegmentFault思否11阅读 3.1k评论 1

数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...

白鲸鱼9阅读 5.4k

对 ChatGPT 做一次技术面试(ChatGPT 没能通过)
问:对一个系统的描述如下:系统中有大量注册用户,用户可以关注其他用户。用户可以发布消息,消息包含发布者、发布时间和可见性。消息的可见性可以是公开、不公开或仅对关注自己的用户可见。请设计这个系统的数...

捏造的信仰8阅读 1.6k评论 1

封面图
超详细的ChatGPT注册教程来了
最近一周,大家都在讨论ChatGPT,一些主流的技术社区更是将ChatGPT吹的神乎其技,那ChatGPT是什么呢?又能给我们带来哪些变化呢?。带着这些问题,我打算先注册并使用 ChatGPT,供想要体验 ChatGPT 的小伙伴们参考。

xiangzhihong4阅读 3k评论 3

使用 🧨 Diffusers 实现 ControlNet 高速推理
自从 Stable Diffusion 风靡全球以来,人们一直在寻求如何更好地控制生成过程的方法。ControlNet 提供了一个简单的迁移学习方法,能够允许用户在很大程度上自定义生成过程。通过 ControlNet,用户可以轻松地使用...

HuggingFace3阅读 1.3k

封面图
1 声望
1 粉丝
宣传栏