当前位置: 首页 > 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…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...