Mercury を使用して Jupyter から直接 Web プログラムを構築する

小さな手を動かして大金を稼いで、親指を立ててください!

すべてのデータ駆動型プロジェクトでは、効果的なコミュニケーションが重要です。データ専門家は多くの場合、調査結果や洞察をビジネス リーダー、技術チーム、その他のデータ サイエンティストなどの関係者に伝える必要があります。

PowerPoint プレゼンテーションや静的レポートなど、データから洞察を伝える従来の方法が人気ですが、その作成には時間がかかることがよくあります。

さらに、これらのサービスを利用するには、データ サイエンティストがほとんどの時間を費やす快適な Jupyter Notebook から離れる必要があります。

代替

Jupyter Notebook から直接インタラクティブでエレガントな Web アプリケーションを作成して、発見を他の人と共有できたら素晴らしいと思いませんか?

そのために、Mercury は、Jupyter Notebook での Web アプリケーションの作成を簡素化するオープンソース ツールです。

そこで、この記事[1]では、Mercury を使用して素晴らしい Web アプリケーションを作成し、他のユーザーと共有する方法を説明します。

水銀を始めましょう

Mercury によって作成された Web アプリケーションは、主に次の 2 つのことによって動かされます。

ジュピターノートブック:

ここで Web アプリケーションを開発します。Mercury の入力ウィジェットと出力ウィジェットを使用して対話性を実現します。

入力ウィジェットを使用すると、ユーザーは入力を提供し、アプリケーションと対話できるようになります。Mercury でサポートされている入力ウィジェットの一部は次のとおりです。

代替

出力ウィジェットは、出力をレンダリングするために使用されます。これには、マークダウン (変数を含む)、JSON などが含まれます。さらに、Jupyter セルの出力も Mercury によってレンダリングされます。

したがって、アプリケーションがプロットを作成したり、DataFrame などを印刷したりすると、それらは Web アプリケーションの出力パネルに表示されます。

マーキュリーサーバー

サーバーは Jupyter Notebook を Web アプリケーションとしてレンダリングします。

代替

後で説明するように、ノートブックのレンダリングは 1 つのコマンドを実行するのと同じくらい簡単です。あなたがしなければならないのは、ノートブックで Web アプリケーションを作成することだけです。

Mercury を使用して Web アプリケーションをセットアップするには、いくつかの簡単な手順が必要です。

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(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

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

代替

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

代替

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

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

代替

当我们更新过滤器时,图表和行数也会更新。这是通过 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マルチプラットフォームによって公開されています

おすすめ

転載: blog.csdn.net/swindler_ice/article/details/130516872