使用 Mercury 直接从 Jupyter 构建 Web 程序
动动发财的小手,点个赞吧!
有效的沟通在所有数据驱动的项目中都至关重要。数据专业人员通常需要将他们的发现和见解传达给利益相关者,包括业务领导、技术团队和其他数据科学家。
虽然传达数据见解的传统方法(如 PowerPoint 演示文稿和静态报告)广受青睐,但创建它们通常很耗时。
更重要的是,这些服务要求人们离开舒适的 Jupyter Notebook——数据科学家大部分时间都花在那里。
如果我们可以通过直接从 Jupyter Notebook 创建交互式和优雅的 Web 应用程序来与其他人分享我们的发现,那不是很好吗?
为此,Mercury 是一种开源工具,可简化 Jupyter Notebook 上 web 应用程序的创建。
因此,在本文[1]中,我将演示如何使用 Mercury 创建令人惊叹的 Web 应用程序并与他人共享。
开始使用 Mercury
Mercury 创建的 Web 应用程序主要由两件事驱动:
Jupyter Notebook:
这是您开发网络应用程序的地方。我们使用 Mercury 的输入和输出小部件启用交互性。
输入小部件允许用户提供输入并与应用程序交互。 Mercury 支持的一些输入小部件如下所示:
输出小部件用于呈现输出。这包括 Markdowns(带变量)、JSON 等。此外,Jupyter 单元格的输出也由 Mercury 呈现。
因此,如果您的应用程序创建绘图或打印 DataFrame 等,它们将出现在网络应用程序的输出面板中。
Mercury Server
服务器将 Jupyter Notebook 呈现为 Web 应用程序。
正如我们将看到的,渲染笔记本就像运行一个命令一样简单。您所要做的就是在笔记本中创建您的网络应用程序。
使用 Mercury 设置 Web 应用程序需要几个简单的步骤。
Install Mercury
首先,使用 pip 安装库:
pip install mercury
现在我们可以创建带有输入和输出小部件的 Web 应用程序。
使用 Mercury 开发 Web 应用程序
如上所述,使用 Mercury 创建的 Web 应用程序主要由其小部件提供支持。
导入库
要使用它们,我们首先导入库。重申一下,我们将在 Jupyter Notebook 上做所有事情。
## mercury_app.ipynb
import mercury as mr
此外,您可以根据需要导入任何其他库。对于这个博客,我将创建一个网络应用程序来分析一个自行创建的虚拟员工数据框。因此,我还将使用以下库:
## mercury_app.ipynb
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
sns.set()
配置应用程序
接下来,我们通过提供标题和描述来实例化 Mercury 应用程序。
## mercury_app.ipynb
app = mr.App(title="Employee Data Analysis",
description="Employee Report in Mercury")
使用小部件填充应用程序
接下来,让我们添加一些小部件以允许其用户与以下虚拟数据进行交互:
本质上,我们将执行以下操作:
-
添加一个小部件以上传 CSV 文件。 -
让用户根据 Company_Name 列中的条目过滤数据。这将是 MultiSelect 小部件。 -
此外,用户还可以使用滑块根据 Credits 过滤数据。
过滤数据后,我们将显示以下内容:
-
过滤后的 DataFrame 的维度。 -
Employee_Salary 和 Employee_Rating 的散点图。 -
显示 Employee_Status 列分布的条形图。
首先,我们添加文件上传小部件。
## mercury_app.ipynb
data_file = mr.File(label="Upload CSV")
可以使用 data_file 对象的文件路径属性访问文件名。因此,文件上传后,我们将使用 Pandas 读取它,如下所示:
## mercury_app.ipynb
emp_df = pd.read_csv(data_file.filepath)
现在,我们将添加另外两个小部件 — Company_Name 上的 MultiSelect 小部件和 Credits 列上的 Slider。
## mercury_app.ipynb
company = mr.MultiSelect(value=emp_df.Company_Name.unique(),
choices=emp_df.Company_Name.unique(),
label="Select Companies")
在这里,value 参数指的是初始值,choices 显示为可供选择的值列表,label 是显示在小部件旁边的自定义文本。
接下来,我们有 Slider 小部件。
## mercury_app.ipynb
credits_filter = mr.Slider(value=1,
min=emp_df.Credits.min(),
max=emp_df.Credits.max(),
label="Credits Filter", step=1)
这里,value 参数定义了初始值,min 和 max 指的是值的范围,label 和之前一样,是一个自定义文本。最后,step 定义滑块小部件的步长值。
这样,我们就完成了为交互添加的小部件。最后一步是根据小部件中的值创建绘图。
填充输出面板
首先,我们根据从小部件接收到的值过滤数据框。您可以使用 WidgetObj.value 属性访问它。
换句话说,要检索小部件的值,我们可以参考 company.value 属性。
## mercury_app.ipynb
new_df = emp_df[(emp_df.Company_Name.isin(company.value)) &
(emp_df.Credits>=int(credits_filter.value))]
接下来,使用 Markdown 输出小部件,我们打印过滤后的 DataFrame 的维度。
## mercury_app.ipynb
mr.Md(f"""The DataFrame has {new_df.shape[0]} rows
and {new_df.shape[1]} columns.""")
Mercury markdown 的一件很酷的事情是您还可以使用 f-strings,如上所示。
最后,我们创建绘图:
## mercury_app.ipynb
fig, ax = plt.subplots(1, 2, figsize = (16, 9))
sns.scatterplot(data = new_df, ax = ax[0],
x = "Employee_Rating", y = "Employee_Salary") ## scatter plot
sns.countplot(x = new_df.Employment_Status, ax = ax[1]) ## count plot
plt.show();
就是这样。现在我们的 Mercury 应用程序已准备就绪。
运行网络应用
要运行该应用程序,请在命令行中导航到您的应用程序的文件夹并运行以下命令:
mercury run
因此,我们看到以下内容:
正如预期的那样,我们有一个小部件来上传文件。让我们在这里上传虚拟数据集。
上传 CSV 文件后,我们会立即看到弹出的图表。
现在,我们可以使用输入小部件来分析数据。
当我们更新过滤器时,图表和行数也会更新。这是通过 Mercury 服务器实现的,它保持笔记本和应用程序之间的持续交互。
事实上,如果我们更新 notebook,更改会立即反映出来。
总结
在本文中,我们学习了如何在舒适的 Jupyter Notebook 上使用 Mercury 构建一个简单的 Web 应用程序。
另外,您还可以使用 Mercury Cloud 在云上托管您的笔记本。只需上传笔记本,即可完成。
但是,如果您不希望专门在 Mercury Cloud 上托管您的 Web 应用程序,那么您也可以将它部署在任何带有 Docker 的服务器上。
Reference
Source: https://towardsdatascience.com/build-elegant-web-apps-right-from-jupyter-notebook-with-mercury-78d9ebcbbcaf
本文由 mdnice 多平台发布
相关文章:
使用 Mercury 直接从 Jupyter 构建 Web 程序
动动发财的小手,点个赞吧! 有效的沟通在所有数据驱动的项目中都至关重要。数据专业人员通常需要将他们的发现和见解传达给利益相关者,包括业务领导、技术团队和其他数据科学家。 虽然传达数据见解的传统方法(如 PowerPoint 演示文…...
Python基础(二)
目录 一、类型转换 1、为什么需要数据类型转换 2、数据类型转化的函数 3、str()函数类型转换使用 4、int()函数类型转换使用 4.1int()不能将str类型数据转换成int 4.2int()将bool类型转换成int 4.3int()将float转换成int 5、Float()函数类型转换使用 5.1Float()函数不…...
第41讲:Python循环语句中的break-else语法结构
文章目录 1.在循环正常结束后执行动作的思路2.通过控制布尔值变量的方式在循环正常结束后执行某些操作2.1.while循环语句2.2.for-in循环语句3.通过else从句来执行某些操作1.在循环正常结束后执行动作的思路 在执行while循环语句或者for循环语句时,如果循环是正常结束的,非执…...
双系统-真机安装ubuntu
服务器系统最好选择legacy启动mbr硬盘,数据盘可以使用gpt格式,超过2t的只能用gpt。 华为2288v3用uefi找不到启动硬盘,或者是找到硬盘后无法引导,迁移系统得到有efi引导文件的硬盘也不行,选择用legacy吧。 ubuntu默认uefi启动,若使用legacy,则需要easybcd处理一下引导。 …...
Android实现向facebook回复消息代码
以下是一个示例代码,它基于Facebook SDK版本5.0,具体实现如下: 1. 集成Facebook SDK库 下载Facebook SDK并将其加入到Android Gradle构建文件中,像这样: groovy dependencies { implementation com.facebook.an…...
IDEA小技巧-Git的回滚强推代码找回
标题IDEA小技巧-Git的回滚&&强推&&代码找回 本地未Commit 新增文件 delete 变更文件 rollback 第一种方式 第二种方式 切换默认变更列表 Commit未push undo commit 仅适用于最后一次的提交进行回滚 drop commit 回滚 revert commit revert commi…...
即时通讯为什么不采用UDP的连接方式呢
即时通讯为什么不采用UDP的连接方式呢 博主今天从网络上找了几个比较关注的热点的内容进行讲解 1.首先介绍一下UDP连接的缺点 不可靠:UDP是一种无连接的传输协议,它不提供数据包的可靠传输保证。这意味着当使用UDP进行通信时,数据包可能会丢…...
二叉树(纲领篇)
文档阅读 文档阅读 二叉树解题的思维模式分两类: 1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。 2、是否可以定义一个递归函数,通过子问题&a…...
day41—选择题
文章目录 1.某主机的IP 地址为 180.80.77.55,子网掩码为 255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是(D)2.ARP 协议的功能是(A)3.以太网的MAC 协议提供的是(A࿰…...
Vue3 watch 监听对象数组中对象的特定属性
在 Vue 3 中,可以使用 watch 函数来监听对象数组中对象的特定属性。可以通过在回调函数中遍历数组来检查对象的特定属性是否发生变化,并在变化发生时执行相应的操作。 一、监听对象的特定属性 例如,假设有一个名为 items 的对象数组&#x…...
请求策略库alova小记
官方文档地址:https://alova.js.org/zh-CN/get-started/overview 定义 alova是一个简单编码即可实现特定场景的高效请求的请求策略工具。 场景痛点 现在一般的请求场景,一般分为两个部分: 请求部分。一般用axios等库触发http请求…...
[C++]string的使用
目录 string的使用:: 1.string类介绍 2.string常用接口说明 string相关习题训练:: 1.仅仅反转字母 2.找字符串中第一个只出现一次的字符 3.字符串里面最后一个单词的长度 4.验证一个字符串是否是回文 5.字符串相加 6.翻转字符串…...
Kali Linux 操作系统安装详细步骤——基于 VMware 虚拟机
1. Kali 操作系统简介 Kali Linux 是一个基于 Debian 的 Linux 发行版,旨在进行高级渗透测试和安全审计。Kali Linux 包含数百种工具,适用于各种信息安全任务,如渗透测试,安全研究,计算机取证和逆向工程。Kali Linux 由…...
R语言APSIM模型应用及批量模拟实践技术
查看原文>>>基于R语言APSIM模型高级应用及批量模拟实践技术 目录 专题一、APSIM模型应用与R语言数据清洗 专题二、APSIM气象文件准备与R语言融合应用 专题三、APSIM模型的物候发育和光合生产模块 专题四、APSIM物质分配与产量模拟 专题五、APSIM土壤水平衡模块 …...
破解马赛克有多「容易」?
刷短视频时,估计大家都看过下面这类视频,各家营销号争相曝光「一分钟解码苹果笔刷背后内容」的秘密。换汤不换药,自媒体们戏称其为「破解马赛克」,殊不知让多少不明真相的用户建立起了错误的认知,也让苹果笔刷第 10086…...
【.NET基础加强第八课--委托】
.NET基础加强第八课--委托 委托(Delegate)委托操作顺序实例多播委托—委托链实例实例委托传值 委托(Delegate) 委托(Delegate) 是存有对某个方法的引用的一种引用类型变量 委托操作顺序 1,定义一个委托类…...
jetcache:阿里这款多级缓存框架一定要掌握
0. 引言 之前我们讲解了本地缓存ehcache组件,在实际应用中,并不是单一的使用本地缓存或者redis,更多是组合使用来满足不同的业务场景,于是如何优雅的组合本地缓存和远程缓存就成了我们要研究的问题,而这一点ÿ…...
干货 | 如何做一个简单的访谈研究?
Hello,大家好! 这里是壹脑云科研圈,我是喵君姐姐~ 心理学中研究中,大家常用的研究方法大多是实验法、问卷调查法等,这些均是定量研究。 其实,作为质性研究中常用的访谈法,可对个体的内心想法进…...
4年外包出来,5次面试全挂....
我的情况 大概介绍一下个人情况,男,毕业于普通二本院校非计算机专业,18年跨专业入行测试,第一份工作在湖南某软件公司,做了接近4年的外包测试工程师,今年年初,感觉自己不能够再这样下去了&…...
基于遗传算法优化的核极限学习机(KELM)分类算法-附代码
基于遗传算法优化的核极限学习机(KELM)分类算法 文章目录 基于遗传算法优化的核极限学习机(KELM)分类算法1.KELM理论基础2.分类问题3.基于遗传算法优化的KELM4.测试结果5.Matlab代码 摘要:本文利用遗传算法对核极限学习机(KELM)进行优化,并用于分类 1.KE…...
别再被网站当机器人了!手把手教你编译一个‘隐身版’Chromedriver(绕过Selenium检测)
从源码到隐身:深度定制Chromedriver绕过检测的工程实践 当你的Selenium脚本突然被目标网站拦截,熟悉的"Access Denied"页面赫然出现时,那种挫败感每个爬虫开发者都深有体会。网站的反爬系统越来越智能,常规的UserAgent轮…...
OpenClaw配置优化实战:Phi-3-mini-128k-instruct性能提升30%方案
OpenClaw配置优化实战:Phi-3-mini-128k-instruct性能提升30%方案 1. 为什么需要优化OpenClaw配置 上周我遇到了一个棘手的问题:用OpenClaw处理长文档分析任务时,Phi-3-mini-128k-instruct模型的响应速度越来越慢。一个简单的"整理这篇…...
避坑指南:用Pixhawk 4飞控连接Nooploop TOFSense激光雷达,这些线序错误千万别犯
Pixhawk 4与TOFSense激光雷达安全接线全攻略:从接口定义到防烧毁实战 当你第一次拿到TOFSense激光雷达模块时,那种迫不及待想把它接入飞控的心情我完全理解——毕竟谁不想让自己的无人机立刻获得精准的测距能力呢?但作为一个曾经因为接错线而…...
保姆级教程:用Keil5将你的STM32F103工程无缝迁移到国民技术N32G45X
从STM32F103到N32G45X:嵌入式工程师的国产MCU迁移实战指南 在嵌入式开发领域,芯片选型往往决定着项目的成败。随着国产微控制器的崛起,越来越多的工程师开始考虑将原有基于STM32的项目迁移到国产平台。国民技术的N32G45X系列以其出色的性价比…...
技术面试终极指南:10个反向面试技巧助你问对公司问题
技术面试终极指南:10个反向面试技巧助你问对公司问题 【免费下载链接】reverse-interview Questions to ask the company during your interview 项目地址: https://gitcode.com/gh_mirrors/re/reverse-interview 在技术面试中,反向面试ÿ…...
SEO_资深运营揭秘,长期稳定排名的SEO策略介绍
SEO策略的核心要素:内容质量 在资深运营者的经验中,内容质量始终是SEO策略的核心要素。一个优质的网站,首先需要提供高质量、有价值的内容,这不仅能吸引用户,还能提升网站在搜索引擎中的排名。长期稳定的SEO排名离不开…...
力扣热门100题之最大子数组和
最优解法:Kadane 算法(一遍遍历)核心思想遍历数组时,维护当前最大和如果前面的和是负数,只会拖累当前数,直接抛弃前面否则,把当前数加进去全程记录最大值完整代码实现:class Solutio…...
探索MATLAB/Simulink下风光储电解制氢与氢燃料电池系统仿真模型
MATLAB/Simulink风光储电解制氢与用氢燃料电池系统仿真模型(风光伏耦合电解槽制氢和PEM燃料发电 附参考文献 电解槽和燃料电池都有水热管理模型 光储电解制氢模型,电解槽恒功率制氢,光伏风机耦合PEM制氢,电解槽与燃料电池…...
用AI提升答辩质量:10款必备工具(含爱毕业)与专业模板测评
工具对比速览 工具名称 核心功能 适用场景 特色优势 Aibiye 智能成文、文献查找、数据分析 社科/金融/理工类论文 融合多模型架构,精准把握高校规范 Aicheck 初稿生成、大纲定制、图表插入 快速完成初稿需求 全学科覆盖,20-30分钟极速生成 A…...
**发散创新:基于Python的本体推理与知识表示实战解析**在人工智能和语义网技术飞速发展的今天,**知识表
发散创新:基于Python的本体推理与知识表示实战解析 在人工智能和语义网技术飞速发展的今天,知识表示(Knowledge Representation) 已成为构建智能系统的底层核心能力之一。它不仅决定了系统对现实世界的理解深度,还直接…...
