Artículo
· 10 hr atrás Lectura de 4 min

Python embebido e IRIS en Jupyter Notebook en un entorno virtual

Estoy documentando una demostración de InterSystems IRIS que incluye Python embebido y Jupyter Notebook desplegados en el mismo contenedor, junto con una aplicación de Python embebido desarrollada en ese entorno de Jupyter Notebook.

He utilizado el contenedor Docker creado por @Bob Kuszewski como entorno de desarrollo para mostrar cómo se puede crear una aplicación de Python embebido, capaz de enviar y recuperar datos desde y hacia InterSystems IRIS. La ventaja de usar este contenedor como entorno de desarrollo es que se trata de un entorno virtual con el IDE de Jupyter y IRIS conectados y ejecutándose en paralelo. El uso de esta configuración frente a cualquier otra puede justificarse por la prueba de velocidad de ingesta y consulta de datos que realicé en varias plataformas, donde InterSystems IRIS ofreció la tasa más rápida tanto de ingesta como de consulta de datos.

La aplicación de Python embebido escrita en Jupyter Notebook obtiene datos CSV de un catálogo de conjuntos de datos externo llamado data.world mediante Pandas, y almacena los datos en una clase de IRIS que se ejecuta en el mismo contenedor.

Dado que la instancia de IRIS se ejecuta en un contenedor Docker, no hay acceso a Studio, por lo que he utilizado VS Code para crear clases en la instancia de IRIS. Podemos conectarnos a IRIS y programar en ObjectScript usando las extensiones de InterSystems para Servers Manager y ObjectScript, respectivamente.

Una vez que los datos se almacenan en IRIS, he utilizado una consulta SQL para acceder a ellos y guardarlos en un DataFrame.

import iris
query = "SELECT Property, Property, Property, Property, Property, FROM Namespace.Class"
iris.sql.exec(query)

Después, he utilizado Plotly, una biblioteca usada para la visualización y el análisis de datos, para generar un gráfico de barras a partir de los datos almacenados en la clase de IRIS. Me he basado en dash-python-iris para el uso de la biblioteca pyplot de Python en la visualización.

Código de la aplicación

import pandas as pd
df = pd.read_csv('https://query.data.world/s/tus52dys57qbhqz4qjmla3r34pnuti')

number = df['Number']
name = df['Name']
symbol = df['Symbol']
marketcap = df['Market Cap']
price = df['Price']
supply = df['Circulating Supply']
tfhr = df['Volume (24hr)']
import iris
for i in range(1515):

    num = number.loc[i]
    nam = name.loc[i]
    sym = symbol.loc[i]
    mc = marketcap.loc[i]
    pr = price.loc[i]
    sup = supply.loc[i]
    tf = tfhr.loc[i]
     

    setData = iris.cls("vizdata.vizdata")._New()

    setData.Number = str(num)

    setData.Name = str(nam)

    setData.Symbol = str(sym)

    setData.Marketcap = str(mc)

    setData.Price = str(pr)

    setData.Supply = str(sup)

    setData.TwentyFourHour = str(tf)

    setData._Save()

import iris
import plotly.express as px
import plotly.graph_objs as go
from plotly.offline import init_notebook_mode, iplot
query = "SELECT TOP 20 Name, Number, Marketcap, Price, Symbol, TwentyFourHour FROM vizdata.vizdata"
df = iris.sql.exec(query).dataframe().sort_values(by='price', ascending = False)

print(df)

fig = px.bar(df.head(20), x="name", y="price", barmode="group", text_auto='.3s')

fig.update_traces(textfont_size=12, textangle=0, textposition="outside", cliponaxis=False)

fig.update_layout(height=330)

fig.show()

Video de demostración

https://www.loom.com/share/4c26cd5c719a48789b6a67295db816ed

 

Recursos utilizados

Referencias

  1. Dash-Python: https://community.intersystems.com/post/dash-python-iris
  2. Documentación de la prueba de velocidad: https://usconfluence.iscinternal.com/x/lSBwIQ
Comentarios (0)1
Inicie sesión o regístrese para continuar