Skip to content

Python (Pandas)

O nó Python executa scripts de análise de dados em um ambiente isolado, robusto e preparado para engenharia de dados. Ele é ideal para manipulações complexas, uso de bibliotecas científicas (scipy, scikit-learn) ou integrações via API que seriam difíceis de fazer apenas com SQL.

Ambiente de Execução

O ambiente é Headless (sem interface gráfica), projetado para processamento em lote.

  • Status e Logs: Use print() apenas para mensagens de status e progresso. O sistema exibe apenas a última mensagem impressa na interface do usuário
  • Erros: Para abortar o processo com erro, use raise Exception("Mensagem")
  • Bibliotecas Pré-Instaladas:
    • Core: pandas, numpy
    • Formatos: fastparquet, pyarrow, openpyxl
    • Ciência de Dados: scipy, scikit-learn
    • Web/API: requests, urllib3, beautifulsoup4, scrapy
    • Banco de Dados: psycopg2, mysql-connector-python, pymssql, pymongo

Estrutura do Script

Para garantir compatibilidade com o motor de execução do Horus, seu script deve seguir estas regras:

  1. Inputs: Os inputs do fluxo estão disponíveis como DataFrames globais chamados input_0, input_1, etc.
  2. Output Obrigatório: O resultado final do processamento deve ser atribuído a uma variável chamada DataFrame df.
  3. Colunas: Por convenção e compatibilidade, mantenha todos os nomes de colunas em MAIÚSCULO.
  4. Estilo Notebook: Prefira um código linear, passo-a-passo, declarando variáveis descritivas (raw_data, clean_data). Evite encapsular tudo em funções complexas desnecessariamente.

Exemplo de Código

python
# 1. Carregamento e Verificação
print("Iniciando processamento...")
# input_0 é injetado automaticamente pelo sistema
if input_0.empty:
    raise Exception("O input_0 está vazio!")

# 2. Transformação (Estilo Linear)
clean_data = input_0.dropna(subset=['VALOR'])

# Exemplo: Enriquecimento usando cálculo vetorizado (rápido)
print("Calculando impostos...")
clean_data['IMPOSTO'] = clean_data['VALOR'] * 0.15
clean_data['TOTAL_LIQUIDO'] = clean_data['VALOR'] - clean_data['IMPOSTO']

# Conversão de tipos (Pandas)
clean_data['DATA_VENDA'] = pd.to_datetime(clean_data['DATA_VENDA'])

# 3. Resultado Final
print("Finalizando...")
# A variável 'df' será lida pelo Horus como saída do nó
df = clean_data

# Nota: Não use print(df) para ver dados, pois isso não é visível no log final de forma estruturada.

AI Assistant

O editor do nó Python conta com um assistente de IA especializado. Você pode pedir para ele gerar o código clicando no botão de IA. Ele já conhece todas as bibliotecas e regras acima.

TIP

Performance: O Python envolve carregar dados do disco para a memória RAM.

  • Dê preferência a operações vetorizadas do Pandas/Numpy.
  • Evite loops for iterando linhas (iterrows).
  • Para transformações puramente relacionais (JOIN, GROUP BY), o nó SQL (DuckDB) costuma ser mais eficiente pois evita a serialização desnecessária.

Configurador Python

O nó Configurador Python é uma variação especial que executa sempre no início do fluxo, antes de qualquer outro processador. Ele é ideal para criar variáveis dinâmicas que serão usadas pelos nós subsequentes.

Características

  • Entradas: Os nós de entrada para o configurador python serão executados antes de todos os outros nós
  • Propósito: Ler variáveis existentes e criar novas variáveis para o fluxo
  • Uso Típico: Montar SELECTs dinâmicos com UNION ALL para múltiplas organizações/filiais ou montar connection string dinamicamente

Exemplo: SELECT Dinâmico com UNION ALL

python
# Lê a lista de IDs de organizações (variável global ou fixa)
organization_ids = [101, 102, 103, 104]

# Monta um SELECT com UNION ALL para cada organização
selects = []
for org_id in organization_ids:
    selects.append(f"SELECT * FROM vendas WHERE organization_id = {org_id}")

query_final = " UNION ALL ".join(selects)

# Salva a query numa variável que será usada pelo nó SQL
variables = {"QUERY_VENDAS": query_final}

Após executar o Configurador Python, a variável QUERY_VENDAS estará disponível para uso no nó de consulta SQL (substitua {QUERY_VENDAS}).