Para garantir que todos os subgrafos também sigam o fluxo da esquerda para a direita, você deve especificar a orientação LR dentro de cada subgrafo. Vou ajustar o código corretamente para cada diagrama.
flowchart LR
A[Início] --> B[Leitura dos Dados]
B --> C[Transformação dos Dados]
C --> D[Carregamento dos Dados]
D --> E[Fim]
flowchart LR
subgraph Extrair[Etapa de Extração]
direction LR
A1[Ler arquivo CSV] --> A2[Gerar DataFrame com Pandas]
A2 --> A3[Verificar Tipos de Dados]
A3 --> A4[Verificar Valores Nulos]
end
flowchart LR
subgraph Transformar[Etapa de Transformação]
direction LR
B1[Remover Duplicatas] --> B2[Preencher Valores Nulos]
B2 --> B3[Adicionar Coluna 'Mês']
B3 --> B4[Calcular Total de Vendas por Produto]
end
flowchart LR
subgraph Carregar[Etapa de Carregamento]
direction LR
C1[Preparar Dados Processados] --> C2[Salvar em CSV Processado]
C2 --> C3[Salvar em Arquivo Parquet]
C3 --> C4[Preparar para Integração com AWS S3]
end
Nesta aula, o foco está em:
-
Criar uma ETL (Extract, Transform, Load) completa usando Pandas:
- Extração de dados de um arquivo CSV para um DataFrame
- Transformação e limpeza, incluindo:
- Remoção de duplicatas
- Tratamento de valores nulos
- Adição de uma coluna com o mês da venda
- Cálculo do total de vendas por produto
- Carregamento dos dados em:
- Um novo arquivo CSV
- Um arquivo Parquet para garantir eficiência na leitura/escrita
-
Preparar o projeto para futura integração com AWS S3:
- Armazenamento dos arquivos CSV e Parquet na nuvem
- Automação de pipelines com cloud computing
-
Revisar conceitos de Git e GitHub:
- Versionamento de código e controle de mudanças
- Colaboração eficiente através de repositórios no GitHub
projeto_etl/
│
├── data/
│ ├── input/
│ │ └── vendas.csv
│ └── output/
│ ├── vendas_processadas.csv
│ └── vendas_processadas.parquet
│
├── src/
│ └── etl_process.py
│
├── test/
│ └── test_etl_process.py
│
└── README.md
-
Verificar dependências
Certifique-se de ter Python 3.12+ e Git instalados:python --version git --version
-
Clonar o repositório
git clone git@github.com:lvgalvao/laennderAula04.git cd laennderAula04
-
Criar e ativar um ambiente virtual:
Windows usando GitBash:
python -m venv .venv source .venv/Scripts/activate
macOS/Linux:
python -m venv .venv source .venv/bin/activate
-
Instalar as dependências:
pip install -r requirements.txt
-
Executar o processo ETL:
Navegue até a pasta
src
e rode o script:cd etl_process python etl_process.py
O script salvará os dados processados nos formatos CSV e Parquet na pasta
data/output
.
-
Pandas
- Manipulação de dados tabulares em Python.
- Facilita a leitura e escrita de arquivos CSV e Parquet, além de fornecer operações eficientes para limpeza e transformação dos dados.
Instalação:
pip install pandas
-
PyArrow
- Suporta a conversão e manipulação de arquivos no formato Parquet, garantindo eficiência em I/O.
- Usado em conjunto com Pandas para leitura e escrita de arquivos Parquet.
Instalação:
pip install pyarrow
-
pytest
- Ferramenta para executar testes unitários, essencial para garantir que o código esteja funcionando como esperado.
- Utilizamos pytest para validar:
- A extração correta dos dados
- A transformação adequada, como preenchimento de valores nulos e cálculo de vendas
- O carregamento dos dados tanto em CSV quanto em Parquet
Instalação:
pip install pytest
-
Objetivo do pytest:
Garantir que o código ETL funcione conforme o esperado e que futuras alterações não introduzam erros. Os testes cobrem:- Extração correta dos dados do CSV
- Transformação dos dados com remoção de duplicatas e preenchimento de valores nulos
- Exportação correta para CSV e Parquet
-
Como rodar os testes:
Certifique-se de estar na pasta raiz do projeto e execute:PYTHONPATH=. pytest -v
Isso executará todos os testes com saída detalhada. Rodar os testes regularmente garante que o pipeline se mantenha funcional e livre de regressões.
-
Integrar o projeto com AWS S3:
- Automatizar a transferência dos arquivos CSV e Parquet para o S3.
-
Implementar tratamento de erros e logging:
- Melhorar a confiabilidade do processo ETL.
-
Documentar funções com docstrings:
- Facilitar manutenção e colaboração futura no projeto.
- Python 3.12+
- Git e Conta no GitHub
- Bibliotecas necessárias:
pip install pandas pyarrow pytest python-dotenv