Pipeline de Dados

Um pipeline de dados é um conjunto de processos organizados em etapas que capturam, processam, transformam e armazenam dados de forma automatizada e contínua. É como uma “linha de montagem” dos dados — desde a coleta até a entrega final para análise ou uso em sistemas.

Atividade: Faça uma pesquisa e traga exemplos de pipelines de dados em diferentes áreas e setores para compartilhar no nosso encontro. Descreva as etapas, as ferramentas utilizadas e aproveite esse momento para aprender um pouco mais. Esse código python está comentado:

  1. Primeiro fazermos um algoritmo em python para resolver a solicitação:
    import pandas as pd
    from openpyxl import Workbook
    from openpyxl.styles import PatternFill, Border, Side
    from openpyxl.chart import PieChart, Reference
    from openpyxl.chart.label import DataLabelList
    import os
    from datetime import datetime
    import re
    # Dados do pipeline
    dados = {
        “Setor”: [“Financeiro”, “Saúde”, “E-commerce”, “Educação”, “Industrial”, “Marketing”, “Logística”],
        “Exemplo”: [
            “Análise de Risco de Crédito”,
            “Diagnóstico Médico via IA”,
            “Recomendação de Produtos Personalizada”,
            “Plataforma de Ensino Adaptativo”,
            “Manutenção Preditiva em Máquinas”,
            “Análise de Sentimento em Redes Sociais”,
            “Roteirização Inteligente de Entregas”
        ],
        “Objetivo”: [
            “Avaliar o risco de um cliente inadimplir um empréstimo.”,
            “Usar IA para detectar doenças com base em exames.”,
            “Sugerir produtos baseados no histórico do usuário.”,
            “Personalizar o ensino de acordo com o desempenho do aluno.”,
            “Detectar falhas antes que ocorram para evitar prejuízos.”,
            “Entender a percepção da marca e otimizar campanhas.”,
            “Otimizar rotas para reduzir tempo e custo de transporte.”
        ],
        “Etapas do Pipeline”: [
            “Coleta de Dados, Processamento & Transformação, Modelagem & Machine Learning, Armazenamento & Visualização”,
            “Coleta de Dados, Pré-processamento, Modelagem, Predição & Relatórios”,
            “Coleta de Dados, Transformação, Modelagem & IA, Entrega em Tempo Real”,
            “Coleta de Dados, Processamento, Personalização, Feedback & Insights”,
            “Coleta de Dados, Processamento, Modelo Preditivo, Alertas & Ações”,
            “Coleta de Dados, NLP, Classificação de Sentimento, Dashboard Interativo”,
            “Coleta de Dados, Geolocalização, Algoritmos de Otimização, Visualização em Mapas”
        ],
        “Ferramentas Utilizadas”: [
            “APIs bancárias, Open Banking, Apache Spark, Pandas, Scikit-learn, TensorFlow, PostgreSQL, AWS S3, Power BI, Tableau”,
            “Bancos de dados hospitalares, IoT, OpenCV, NumPy, TensorFlow, PyTorch, Google Cloud Storage, MongoDB, Streamlit, Grafana”,
            “Google Analytics, BigQuery, Apache Kafka, PySpark, MLlib, Amazon SageMaker, AWS Redshift, Cassandra, Looker, Metabase”,
            “APIs de LMS, Pandas, Apache Airflow, SciPy, XGBoost, Firebase, SQL Server, Power BI, Google Data Studio”,
            “Sensores IoT, OPC-UA, MQTT, Apache Flink, Hadoop, Keras, PyCaret, Azure Data Lake, AWS DynamoDB, Power BI, Grafana”,
            “Twitter API, Facebook Graph API, NLTK, SpaCy, TextBlob, Power BI, Google Data Studio”,
            “Google Maps API, OR-Tools, Pandas, Folium, QGIS, Power BI, PostgreSQL/PostGIS”
        ],
        “Sites Relevantes”: [
            “www.bcb.gov.br, www.cvm.gov.br, www.tesouro.fazenda.gov.br”,
            “www.anvisa.gov.br, www.datasus.gov.br, www.saude.gov.br”,
            “www.ecommercebrasil.com.br, www.abcomm.org, www.sebrae.com.br”,
            “www.mec.gov.br, www.capes.gov.br, www.educacao.gov.br”,
            “www.abimaq.org.br, www.cni.org.br, www.industria.gov.br”,
            “www.abradi.com.br, www.abemd.org.br, www.midiadigital.com”,
            “www.abetra.org.br, www.abece.com.br, www.logisticabrasil.com.br”
        ]
    }
    # Criar DataFrame
    df = pd.DataFrame(dados)
    # Nome do arquivo
    hoje = datetime.now().strftime(“%Y%m%d”)
    base_name = f”{hoje}_tabelapipeline”
    ext = “.xlsx”
    arquivo_excel = base_name + ext
    contador = 2
    while os.path.exists(arquivo_excel):
        arquivo_excel = f”{base_name}_{contador}{ext}”
        contador += 1
    # Criar workbook
    wb = Workbook()
    ws = wb.active
    ws.title = “Pipelines”
    # Estilo de célula
    borda_espessa = Border(
        left=Side(border_style=”thick”, color=”000000″),
        right=Side(border_style=”thick”, color=”000000″),
        top=Side(border_style=”thick”, color=”000000″),
        bottom=Side(border_style=”thick”, color=”000000″)
    )
    fill_cinza = PatternFill(start_color=”D3D3D3″, end_color=”D3D3D3″, fill_type=”solid”)
    # Escrever cabeçalhos
    for col_idx, col_name in enumerate(df.columns, start=1):
        cell = ws.cell(row=1, column=col_idx, value=col_name)
        cell.fill = fill_cinza
        cell.border = borda_espessa
    # Escrever dados
    for row_idx, row in enumerate(df.itertuples(index=False), start=2):
        for col_idx, value in enumerate(row, start=1):
            cell = ws.cell(row=row_idx, column=col_idx, value=value)
            if row_idx % 2 == 1:
                cell.fill = fill_cinza
            cell.border = borda_espessa
    # — Criar planilha com gráfico —
    ws_grafico = wb.create_sheet(“Gráfico”)
    # Preparar dados para o gráfico: contar etapas por setor
    etapas_count = df[“Etapas do Pipeline”].apply(lambda x: len(re.split(r”,|\s*&\s*”, x)))
    df_etapas = pd.DataFrame({
        “Setor”: df[“Setor”],
        “Nº de Etapas”: etapas_count
    })
    # Escrever na nova planilha
    ws_grafico.append([“Setor”, “Nº de Etapas”])
    for i in range(len(df_etapas)):
        ws_grafico.append([df_etapas[“Setor”][i], df_etapas[“Nº de Etapas”][i]])
    # Criar gráfico de pizza
    chart = PieChart()
    chart.title = “Distribuição das Etapas de Pipeline por Setor”
    data = Reference(ws_grafico, min_col=2, min_row=2, max_row=8)
    cats = Reference(ws_grafico, min_col=1, min_row=2, max_row=8)
    chart.add_data(data, titles_from_data=False)
    chart.set_categories(cats)
    chart.height = 10
    chart.width = 10
    # Adicionar porcentagem nos rótulos
    data_labels = DataLabelList()
    data_labels.showPercent = True
    chart.dataLabels = data_labels
    # Dar mais destaque ao setor com mais etapas (explode apenas o primeiro setor da série)
    chart.series[0].explosion = 10
    # Adicionar gráfico à planilha
    ws_grafico.add_chart(chart, “E2”)
    # Salvar
    wb.save(arquivo_excel)
    print(f”Arquivo {arquivo_excel} criado com gráfico de pizza!”)
  2. Sua saída terá duas tabelas inclusive o gráfico a seguir: