Cree programas web directamente desde Jupyter usando Mercury

¡Haz una fortuna con tu pequeña mano, dale un pulgar hacia arriba!

La comunicación eficaz es fundamental en todos los proyectos basados ​​en datos. Los profesionales de datos a menudo necesitan comunicar sus hallazgos y conocimientos a las partes interesadas, incluidos los líderes empresariales, los equipos técnicos y otros científicos de datos.

Si bien los métodos tradicionales para comunicar información a partir de datos, como las presentaciones de PowerPoint y los informes estáticos, son populares, su creación suele llevar mucho tiempo.

Además, estos servicios requieren que las personas dejen la comodidad de sus Jupyter Notebooks, donde los científicos de datos pasan la mayor parte de su tiempo.

alternativa

¿No sería genial si pudiéramos compartir nuestros descubrimientos con otros mediante la creación de aplicaciones web interactivas y elegantes directamente desde Jupyter Notebook?

Con ese fin, Mercury es una herramienta de código abierto que simplifica la creación de aplicaciones web en Jupyter Notebooks.

Entonces, en este artículo [1] , demostraré cómo usar Mercury para crear impresionantes aplicaciones web y compartirlas con otros.

Empezar con Mercurio

Las aplicaciones web creadas por Mercury se basan principalmente en dos cosas:

Cuaderno Jupyter:

Aquí es donde se desarrollan aplicaciones web. Habilitamos la interactividad usando los widgets de entrada y salida de Mercury.

Los widgets de entrada permiten a los usuarios proporcionar información e interactuar con las aplicaciones. Algunos de los widgets de entrada admitidos por Mercury son los siguientes:

alternativa

Los widgets de salida se utilizan para representar la salida. Esto incluye Markdowns (con variables), JSON, etc. Además, Mercury también genera la salida de las celdas Jupyter.

Entonces, si su aplicación crea gráficos o imprime DataFrames, etc., aparecerán en el panel de salida de la aplicación web.

Servidor de mercurio

El servidor representa Jupyter Notebooks como aplicaciones web.

alternativa

Como veremos, renderizar un cuaderno es tan fácil como ejecutar un solo comando. Todo lo que tiene que hacer es crear su aplicación web en el cuaderno.

Configurar una aplicación web con Mercury requiere unos simples pasos.

Instalar Mercurio

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

使用小部件填充应用程序

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

alternativa

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

  • 添加一个小部件以上传 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

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

alternativa

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

alternativa

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

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

alternativa

当我们更新过滤器时,图表和行数也会更新。这是通过 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

Este artículo es publicado por mdnice multiplataforma

Supongo que te gusta

Origin blog.csdn.net/swindler_ice/article/details/130516872
Recomendado
Clasificación