Este projeto implementa um pipeline de ETL (Extract, Transform, Load) utilizando Python e Prefect para orquestração de tarefas. O objetivo principal é realizar o processo de data wrangling em um dataset de títulos da Netflix, padronizando, limpando e preparando os dados para análises posteriores.
O pipeline inclui monitoramento de execução, registro de logs e validações simples de qualidade de dados, como verificação de valores nulos.
Este projeto foi desenvolvido como estudo prático de engenharia e preparação de dados, com foco em boas práticas de organização, modularização e automação de pipelines.
- Implementar um pipeline de ETL modular e reutilizável
- Automatizar o fluxo de processamento de dados
- Aplicar técnicas de limpeza e padronização de dados
- Utilizar uma ferramenta de orquestração (Prefect)
- Monitorar a qualidade dos dados durante o processamento
- Simular um fluxo real de preparação de dados para análise
- Python
- Pandas
- Prefect (orquestração de pipelines)
- CSV (armazenamento de dados)
- Logging (monitoramento de execução)
project/
│
├── prefect_flow.py # Orquestração do pipeline com Prefect
├── pipeline.py # Funções de extração e carga
├── transform.py # Regras de transformação e limpeza de dados
├── config.py # Caminhos de entrada e saída
│
├── data/
│ ├── netflix_titles.csv # Dataset original
│ └── df_limpo.csv # Dataset após transformação
│
└── logs/
└── pipeline.log # Logs de execução do pipeline
- Leitura do arquivo CSV contendo os dados da Netflix
- Carregamento dos dados em um DataFrame Pandas
Função responsável:
extract(csv)
Nesta etapa são aplicadas diversas regras de limpeza e padronização dos dados.
-
Remoção da coluna:
description
-
Padronização de nomes de colunas:
- Conversão para português
- Uso de nomes mais descritivos
Exemplo:
show_id → id
release_year → lancado_em
listed_in → genero
-
Tratamento de valores nulos:
-
Preenchimento com o valor "Não informado" nas colunas:
- diretor
- elenco
- pais
-
-
Limpeza de strings:
- Remoção de espaços extras na coluna de data
-
Conversão de tipos de dados:
adicionado_em→ datetimelancado_em→ ano (inteiro)
Função principal:
transform(df)
- Salvamento do dataset transformado em um novo arquivo CSV
- Substituição automática do arquivo caso já exista
Função responsável:
load(df, output)
O pipeline é gerenciado por um flow do Prefect, que organiza as etapas em tarefas independentes.
Arquivo:
prefect_flow.py
extract_task()transform_task()load_task()
O Prefect permite:
- Monitorar a execução do pipeline
- Registrar logs
- Controlar o fluxo de tarefas
- Identificar erros facilmente
Durante a transformação, o pipeline calcula:
- Quantidade total de valores nulos
- Percentual de dados faltantes
Se o percentual de valores nulos ultrapassar 10%, o sistema gera um alerta:
WARNING: Alto volume de valores nulos
Isso simula uma prática comum em pipelines reais de dados: data quality checks.
Para executar este projeto localmente, é necessário ter instalado:
- Python 3.10 ou superior
- pip (gerenciador de pacotes do Python)
- Ambiente virtual (recomendado)
No terminal, execute:
python --version
ou
python3 --version
Se o Python não estiver instalado, faça o download no site oficial: https://www.python.org/downloads/
pip install pandas prefect
config.py
Exemplo:
INPUT_PATH = "caminho/para/netflix_titles.csv"
OUTPUT_PATH = "caminho/para/df_limpo.csv"
python prefect_flow.py
Ou executar diretamente o pipeline simples:
python pipeline.py
O Dataset utilizado é o Netflix Movies and TV Shows, disponível no Kaggle: https://www.kaggle.com/datasets/shivamb/netflix-shows
Principais campos:
- Tipo (Filme ou Série)
- Título
- Diretor
- Elenco
- País
- Data de adição
- Ano de lançamento
- Classificação indicativa
- Duração
- Gênero
Este pipeline pode ser expandido para cenários mais avançados, como:
- Integração com banco de dados (PostgreSQL, MySQL)
- Uso de armazenamento em nuvem (AWS S3, Google Cloud Storage)
- Agendamento automático do pipeline
- Testes automatizados de qualidade de dados
- Versionamento de dados
- Criação de dashboards a partir dos dados tratados
- Implementação de logging estruturado
- Containerização com Docker
ETL
Data Engineering
Data Wrangling
Prefect
Python
Pandas
Data Pipeline