Engenharia Informática-Internet das Coisas

Análise de Grande Volume de Dados

<< voltar ao Plano Curricular

Publicação em Diário da República: Despacho n.º 13495/2022 - 18/11/2022

10 ECTS; 1º Ano, 1º Semestre, 30,0 PL + 30,0 TP + 30,0 OT , Cód. 390913.

Docente(s)
- Renato Eduardo Silva Panda (1)(2)

(1) Docente Responsável
(2) Docente que lecciona

Pré-requisitos
Não aplicável

Objetivos
Esta unidade curricular desenvolve competências de aquisição, preparação, armazenamento, consulta e análise de dados, articulando a ciência de dados com a engenharia de dados e o processamento em larga escala. No final da unidade curricular, os estudantes deverão ser capazes de:

1. Explicar o ciclo de vida de um projeto de dados, as características do Big Data e as implicações éticas da aquisição e utilização de dados.
2. Configurar ambientes de desenvolvimento reprodutíveis e utilizar Python e as suas bibliotecas na manipulação e análise de dados.
3. Adquirir e integrar dados de ficheiros, APIs e páginas web, construindo processos de preparação e transformação com verificações de qualidade.
4. Realizar análise exploratória e comunicar resultados através de visualizações, relatórios e dashboards interativos.
5. Comparar modelos de armazenamento e consulta, selecionando formatos e tecnologias adequados às características dos dados e aos requisitos de utilização.
6. Explicar os princípios do processamento paralelo e distribuído e aplicar estratégias de processamento em larga escala, avaliando os seus custos e limitações.
7. Desenvolver, documentar e defender soluções práticas de dados, justificando decisões técnicas e verificando criticamente os resultados e o apoio obtido através de ferramentas de inteligência artificial.

Programa
1. Introdução à ciência de dados e ao Big Data
- 1.1 Conceitos fundamentais, papéis profissionais e ciclo de vida dos projetos de dados.
- 1.2 Os 5Vs: volume, velocidade, variedade, veracidade e valor.
- 1.3 Ética, privacidade, transparência, qualidade dos dados e impacto social.
- 1.4 Reprodutibilidade, documentação, controlo de versões e utilização crítica de IA.
2. Ambiente de desenvolvimento e fundamentos de Python
- 2.1 Jupyter, scripts Python e Visual Studio Code.
- 2.2 Ambientes isolados e gestão de dependências: pip, conda e uv.
- 2.3 Docker, Docker Compose e, se possível, introdução a Dev Containers.
- 2.4 Revisão de Python: tipos, estruturas de dados, controlo de fluxo, funções e módulos.
- 2.5 Organização de projetos, Git, verificações de código e testes básicos.
3. Manipulação, análise e visualização de dados
- 3.1 NumPy e operações sobre arrays.
- 3.2 pandas: seleção, transformação, agregação e junção de dados tabulares.
- 3.3 Análise exploratória, estatística descritiva, dados em falta e valores atípicos.
- 3.4 Visualização com Matplotlib, Seaborn e Plotly; escolha de gráficos e comunicação rigorosa.
- 3.5 Dashboards interativos com Streamlit e introdução a alternativas como Dash.
4. Aquisição, integração e engenharia de dados
- 4.1 Ficheiros e formatos: CSV, JSON, Excel e Parquet.
- 4.2 APIs REST: autenticação, paginação, limites de acesso e tratamento de erros.
- 4.3 Web scraping com requests e Beautiful Soup; boas práticas de recolha.
- 4.4 Extração de dados de documentos e introdução a OCR.
- 4.5 Limpeza, normalização, integração e validação de dados de múltiplas fontes.
- 4.6 Pipelines ETL e ELT, rastreabilidade e atualização dos dados.
5. Armazenamento e consulta de dados
- 5.1 Modelos relacionais e NoSQL: documentos, chave-valor, famílias de colunas e grafos.
- 5.2 Consulta e análise com SQL; exemplos com PostgreSQL e DuckDB.
- 5.3 Armazenamento e consulta em MongoDB e Redis.
- 5.4 Armazenamento de objetos, data warehouses, data lakes e introdução a lakehouses.
- 5.5 Critérios de seleção: modelo de dados, padrões de acesso, consistência, escalabilidade e custo.
- 5.6 Experimentação comparativa com notebooks e serviços locais em Docker, quando aplicável.
6. Estratégias de processamento em larga escala
- 6.1 Limites de memória e de entrada/saída; avaliação do tempo de execução e dos recursos utilizados.
- 6.2 Processamento por blocos, operações vetorizadas e processamento incremental.
- 6.3 Formatos colunares, compressão, particionamento e leitura seletiva.
- 6.4 Paralelização, execução diferida e introdução ao processamento com Dask.
7. Processamento distribuído
- 7.1 Paradigma MapReduce e fundamentos de distribuição de dados e tarefas.
- 7.2 Arquitetura Hadoop: HDFS e YARN; enquadramento da evolução para Spark.
- 7.3 Apache Spark e PySpark: DataFrames, Spark SQL e introdução aos RDDs.
- 7.4 Transformações, ações, execução diferida, partições e transferência de dados entre tarefas.
- 7.5 Comparação de soluções locais, paralelas e distribuídas; medição e interpretação do desempenho.
- 7.6 (Se o tempo permitir) Streaming e introdução à aprendizagem automática distribuída com Spark MLlib.

Metodologia de avaliação
- 25%: Projeto I, aquisição, preparação e análise exploratória de dados (5 valores).
- 25%: Projeto II, integração, armazenamento e consulta de dados através de um pipeline ETL/ELT (5 valores).
- 25%: Projeto III, processamento de dados em larga escala com Spark e/ou Dask (5 valores).
- 25%: Exame teórico (5 valores).

Notas mínimas:
- 50% em cada projeto: 10 valores em 20, equivalentes a 2,5 em 5.
- 35% no exame: 7 valores em 20, equivalentes a 1,75 em 5.
- Classificação final mínima de 9,5 valores em 20, cumpridos todos os mínimos.

A classificação final é a soma das quatro componentes na escala de 0 a 5; equivale à média das quatro classificações na escala de 0 a 20.

A entrega e a defesa de cada projeto são obrigatórias, nos prazos e momentos definidos durante a avaliação contínua. Os projetos não são repetíveis nem substituíveis por exame. A falta de entrega ou de defesa de qualquer projeto determina a exclusão da avaliação da UC nesse ano letivo, em todas as épocas. O incumprimento do mínimo em qualquer projeto impede a aprovação.

As classificações dos projetos mantêm-se nas diferentes épocas do mesmo ano letivo. Apenas o exame teórico pode ser repetido nas épocas de avaliação aplicáveis. A defesa permite verificar a compreensão e a contribuição individual, incluindo o uso de IA.

Bibliografia
- Marr, B. (2022). Data Strategy: How to Profit from a World of Big Data, Analytics and the Internet of Things. USA: Kogan Page
- McKinney, W. (2017). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython. USA: O'Reilly
- Rioux, J. (2022). Data Analysis with Python and PySpark. USA: Manning
- Santos, M. e Costa, C. (2019). Big Data – Concepts, Warehousing, and Analytics. . Lisboa: FCA
- Triguero, I. e Galar, M. (2023). Large-Scale Data Analytics with Python and Spark. UK: Cambridge University Press

Método de Ensino
Aulas TP com conceitos, casos e tutoriais práticos. Aulas PL de experimentação com notebooks e Docker, ao ritmo de cada estudante, e apoio aos projetos. Trabalho autónomo e uso crítico de IA para explicações, aprendizagem e validação de soluções.

Software utilizado nas aulas
Python, Jupyter, Visual Studio Code, pip, conda/Miniconda ou micromamba, uv, Git, Docker e Docker Compose; NumPy, pandas, Matplotlib, Seaborn, Plotly, Streamlit, requests e Beautiful Soup; SQL, DuckDB, PostgreSQL, MongoDB, Redis, Dask e PySpark. Ruff e pytest como apoio à qualidade e verificação do código. Dev Containers, Dash e ferramentas de extração documental/OCR em exemplos complementares.

 

Aprovado em Conselho Técnico Cientifico: 31 de outubro de 2026

Download da Ficha da Unidade Curricular (FUC)

 

 


<< voltar ao Plano Curricular
Elemento gráfico

Notícias | Agenda

ISO 9001
NP4552
SGC
KreativEu
erasmus
catedra
b-on
portugal2020
centro2020
compete2020
crusoe
fct
feder
fse
poch
portugal2030
poseur
prr
santander
republica
UE next generation
Centro 2030
Lisboa 2020
Compete 2030
co-financiado