当前位置: 首页 > news >正文

使用 Mercury 直接从 Jupyter 构建 Web 程序

动动发财的小手,点个赞吧!

有效的沟通在所有数据驱动的项目中都至关重要。数据专业人员通常需要将他们的发现和见解传达给利益相关者,包括业务领导、技术团队和其他数据科学家。

虽然传达数据见解的传统方法(如 PowerPoint 演示文稿和静态报告)广受青睐,但创建它们通常很耗时。

更重要的是,这些服务要求人们离开舒适的 Jupyter Notebook——数据科学家大部分时间都花在那里。

alt

如果我们可以通过直接从 Jupyter Notebook 创建交互式和优雅的 Web 应用程序来与其他人分享我们的发现,那不是很好吗?

为此,Mercury 是一种开源工具,可简化 Jupyter Notebook 上 web 应用程序的创建。

因此,在本文[1]中,我将演示如何使用 Mercury 创建令人惊叹的 Web 应用程序并与他人共享。

开始使用 Mercury

Mercury 创建的 Web 应用程序主要由两件事驱动:

Jupyter Notebook:

这是您开发网络应用程序的地方。我们使用 Mercury 的输入和输出小部件启用交互性。

输入小部件允许用户提供输入并与应用程序交互。 Mercury 支持的一些输入小部件如下所示:

alt

输出小部件用于呈现输出。这包括 Markdowns(带变量)、JSON 等。此外,Jupyter 单元格的输出也由 Mercury 呈现。

因此,如果您的应用程序创建绘图或打印 DataFrame 等,它们将出现在网络应用程序的输出面板中。

Mercury Server

服务器将 Jupyter Notebook 呈现为 Web 应用程序。

alt

正如我们将看到的,渲染笔记本就像运行一个命令一样简单。您所要做的就是在笔记本中创建您的网络应用程序。

使用 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")

使用小部件填充应用程序

接下来,让我们添加一些小部件以允许其用户与以下虚拟数据进行交互:

alt

本质上,我们将执行以下操作:

  • 添加一个小部件以上传 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(12, figsize = (169))

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

因此,我们看到以下内容:

alt

正如预期的那样,我们有一个小部件来上传文件。让我们在这里上传虚拟数据集。

alt

上传 CSV 文件后,我们会立即看到弹出的图表。

现在,我们可以使用输入小部件来分析数据。

alt

当我们更新过滤器时,图表和行数也会更新。这是通过 Mercury 服务器实现的,它保持笔记本和应用程序之间的持续交互。

事实上,如果我们更新 notebook,更改会立即反映出来。

总结

在本文中,我们学习了如何在舒适的 Jupyter Notebook 上使用 Mercury 构建一个简单的 Web 应用程序。

另外,您还可以使用 Mercury Cloud 在云上托管您的笔记本。只需上传笔记本,即可完成。

但是,如果您不希望专门在 Mercury Cloud 上托管您的 Web 应用程序,那么您也可以将它部署在任何带有 Docker 的服务器上。

Reference

[1]

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&#xff0…...

Vue3 watch 监听对象数组中对象的特定属性

在 Vue 3 中,可以使用 watch 函数来监听对象数组中对象的特定属性。可以通过在回调函数中遍历数组来检查对象的特定属性是否发生变化,并在变化发生时执行相应的操作。 一、监听对象的特定属性 例如,假设有一个名为 items 的对象数组&#x…...

请求策略库alova小记

官方文档地址:https://alova.js.org/zh-CN/get-started/overview 定义 alova是一个简单编码即可实现特定场景的高效请求的请求策略工具。 场景痛点 现在一般的请求场景,一般分为两个部分: 请求部分。一般用axios等库触发http请求&#xf…...

[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,更多是组合使用来满足不同的业务场景,于是如何优雅的组合本地缓存和远程缓存就成了我们要研究的问题,而这一点&#xff…...

干货 | 如何做一个简单的访谈研究?

Hello,大家好! 这里是壹脑云科研圈,我是喵君姐姐~ 心理学中研究中,大家常用的研究方法大多是实验法、问卷调查法等,这些均是定量研究。 其实,作为质性研究中常用的访谈法,可对个体的内心想法进…...

4年外包出来,5次面试全挂....

我的情况 大概介绍一下个人情况,男,毕业于普通二本院校非计算机专业,18年跨专业入行测试,第一份工作在湖南某软件公司,做了接近4年的外包测试工程师,今年年初,感觉自己不能够再这样下去了&…...

基于遗传算法优化的核极限学习机(KELM)分类算法-附代码

基于遗传算法优化的核极限学习机(KELM)分类算法 文章目录 基于遗传算法优化的核极限学习机(KELM)分类算法1.KELM理论基础2.分类问题3.基于遗传算法优化的KELM4.测试结果5.Matlab代码 摘要:本文利用遗传算法对核极限学习机(KELM)进行优化,并用于分类 1.KE…...

评判需求优先级5大规则和方法(纯干货):

在划分用户需求时,需秉承需求任务紧跟核心业务指标,按照一定的规则和方法进行优先级的划分。 常见评判需求优先级规则有:四象限法则、KANO模型、二八原则、产品生命周期法、ROI评估法。 一、四象限法则 四象限法则是以【重要】和【紧急】程度…...

c++ 11标准模板(STL) std::vector (七)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…...

Contest3137 - 2022-2023-2 ACM集训队每月程序设计竞赛(1)五月月赛

A 1! 5! 46 169 有一种数字&#xff0c;我们称它为 纯真数。 它等于自身每一个数位的阶乘之和。请你求出不超过n的所有 纯真数。(注&#xff1a;纯真数不含有前导0&#xff09;数据范围1e18 纯真数只有四个&#xff0c;注意0!1 1,2,145,40585 int n;cin>>n;int res[]{…...

如何使用 YOLOv8 神经网络检测图像中的物体

对象检测是一项计算机视觉任务,涉及识别和定位图像或视频中的对象。它是许多应用的重要组成部分,例如自动驾驶汽车、机器人和视频监控。 多年来,已经开发了许多方法和算法来查找图像中的对象及其位置。执行这些任务的最佳质量来自使用卷积神经网络。 YOLO 是这项任务最流行的…...

Python每日一练:小艺读书醉酒的狱卒非降序数组(详解快排)

文章目录 前言一、小艺读书二、醉酒的狱卒三、非降序数组总结 前言 今天这个非降序数组&#xff0c;阅读解理小学水平&#xff0c;说起来都是泪啊。我折腾了一天都没搞定&#xff0c;从冒泡写到快速排序。换了几种都还不行&#xff0c;我又给快排加上插入排序。结果还是不能全…...

手麻系统源码,PHP手术麻醉临床信息系统源码,手术前管理模块功能

手麻系统源码&#xff0c;PHP手术麻醉临床信息系统源码&#xff0c;手术前管理模块功能 术前管理模块主要有手术排班、手术申请单、手术通知单、手术知情同意书、输血血液同意书、术前查房记录、术前访视、风险评估、手术计划等功能。 功能&#xff1a; 手术排班&#xff1a;…...

AUTOSAR - ComM - 学习一 :基础知识+配置

目录 1、概述 1.1、总览 1.2、功能描述 1.3、依赖关系 2、功能SPEC 2.1、PNC...

手把手教你搭建ROS阿克曼转向小车之(增量式PID代码实现)

在上一篇文章中我们已经成功的把编码器的反馈值给计算出来&#xff0c;这篇文章将会讲解怎么使用反馈回来的速度值进行PID计算&#xff0c;从而闭环控制电机的速度。 PID算法介绍 1.开环控制系统 开环控制系统(open-loop control system)是指被控对象的输出(被控制量)对控制器…...

C语言函数大全-- t 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- t 开头的函数 1. tan&#xff0c;tanf&#xff0c;tanl 1.1 函数说明 函数声明函数功能double tan(double x)计算 以弧度 x 为单位的角度的正切值&#xff08;double&#xff09;float tanf(float x)计算 以弧度 x 为单位的角度的正…...

安卓系统APP稳定性测试分析的研究报告

目录 第一章&#xff1a;概念 第二章&#xff1a;重要性 第三章&#xff1a;意义和作用 第四章&#xff1a;行业现状 第五章&#xff1a;常见测试方法和工具 第六章&#xff1a;实际测试场景 第七章&#xff1a;测试方案 第八章&#xff1a;测试方法 第九章&#xff1…...

网站改版后百度不收录/上海网络推广软件

在窗体属性中有个EnableGlass属性&#xff0c;设置为False即可。...

网站怎么做描文本/百度页面推广

上星期五刚到金山报到时是兴奋的&#xff0c;信心满满的&#xff0c;但现在。。。 初次任务 在报到之后&#xff0c;老大让三个方向&#xff08;UI&#xff0c;底层IO&#xff0c;算法&#xff09;的人给我分别介绍是做什么的。由于在这三个方向中&#xff0c;我最熟悉算法&…...

怎么做纯文本网站/跨境电商哪个平台比较好

在学习线性代数&#xff0c;需要写博客&#xff0c;遇到复杂的数学公式如向量、矩阵、微积分公式没法用普通的方法打印&#xff0c;所以&#xff0c;使用LaTeX解决了这个问题。一、什么是LaTeXLaTeX&#xff0c; 是一种基于TEX的排版系统&#xff0c;由美国电脑学家莱斯利兰伯特…...

wordpress修改页面组件/苏州企业网站关键词优化

ThinkPHP3.2.3的命名空间问题 命名空间的出现是为了避免命名冲突。 我们在TP3.2.3的Collection和Model的创建过程中经常会遇到这样的两行代码&#xff1a; 这是在控制器中的写法。其中namespace定义的是当前类的模块路径,use定义的是当前类的位置(继承的父类)。 这是模型中实…...

五百人建站/职业培训学校加盟

https://blog.csdn.net/jaffreyen/article/details/88574578...

wordpress如何换图片不显示/官方百度下载安装

在开发Spring Boot应用时&#xff0c;通常同一套程序会被应用和安装到几个不同的环境&#xff0c;比如&#xff1a;开发、测试、生产等。其中每个环境的数据库地址、服务器端口、日志级别等配置都会不同&#xff0c;如果在为不同环境打包时都要频繁修改配置文件的话&#xff0c…...