Artigo
· 6 hr atrás 4min de leitura

Python incorporado e IRIS no Jupyter Notebook em um ambiente virtual.

Estou documentando uma demonstração do InterSystems IRIS que inclui Python incorporado (embedded) e Jupyter Notebook implantados no mesmo contêiner, juntamente com uma aplicação de Python incorporado desenvolvida nesse ambiente de Jupyter Notebook.

Utilizei o contêiner Docker criado por @Bob Kuszewski como ambiente de desenvolvimento para demonstrar como uma aplicação de Python incorporado pode ser criada, capaz de enviar e recuperar dados de e para o InterSystems IRIS. A vantagem de usar este contêiner como ambiente de desenvolvimento é que se trata de um ambiente virtual com o IDE do Jupyter e o IRIS conectados e executando em paralelo. O uso desta configuração, em comparação com qualquer outra, pode ser justificado pelo teste de velocidade de ingestão e consulta de dados que realizei em várias plataformas, onde o InterSystems IRIS ofereceu a taxa mais rápida tanto de ingestão quanto de consulta de dados.

A aplicação de Python incorporado escrita no Jupyter Notebook obtém dados CSV de um catálogo de conjuntos de dados externo chamado data.world usando Pandas, e armazena os dados em uma classe do IRIS que está rodando no mesmo contêiner.

Dado que a instância do IRIS está sendo executada em um contêiner Docker, não há acesso ao Studio, por isso utilizei o VS Code para criar classes na instância do IRIS. Podemos nos conectar ao IRIS e programar em ObjectScript usando as extensões da InterSystems para Servers Manager e ObjectScript, respectivamente.

Uma vez que os dados são armazenados no IRIS, utilizei uma consulta SQL para acessá-los e salvá-los em um DataFrame.

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

Depois, utilizei o Plotly, uma biblioteca usada para visualização e análise de dados, para gerar um gráfico de barras a partir dos dados armazenados na classe do IRIS. Baseei-me no dash-python-iris para o uso da biblioteca pyplot do Python na visualização.

Código da Aplicação

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

Vídeo de Demonstração

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

 

Recursos Utilizados

Referências

  1. Dash-Python: https://community.intersystems.com/post/dash-python-iris
  2. Documentação do teste de velocidade: https://usconfluence.iscinternal.com/x/lSBwIQ
Discussão (0)1
Entre ou crie uma conta para continuar