Explorar Alternativas
Agora que você já consegue pelo menos observar quais arquivos estão disponíveis, iremos avançar até que os dados disponíveis no S3 possam ser analisados pela empresa.
Info
Já sabemos que eles contém informações sobre estações de bicicleta em São Francisco.
Exercise
Answer
O formato dos arquivos disponíveis no S3 é CSV. Esse formato é utilizado para análise de dados e suportado por diversas ferramentas de análise. No entanto, pode não ser o mais eficiente em termos de armazenamento e desempenho para grandes volumes de dados.
Um formato alternativo que poderia ser considerado é o Parquet. O Parquet é um formato de arquivo colunar que oferece melhor compressão e desempenho em consultas, especialmente em cenários de big data.
Exercise
Answer
Isto é importante porque garante que todos os dados sejam armazenados de forma consistente, facilitando a validação e a análise.
Além disso, a fixação de schema permite que as ferramentas de processamento de dados otimizem suas operações, resultando em melhor desempenho e eficiência.
Sua próxima tarefa será:
- Ler todos os CSVs
- Fixar um schema adequado
- Salvar no S3 em formato Parquet no path
s3://dataeng-warmup/data_processed/insper_username/file.parquet
onde:insper_username
deve ser substituído pelo seu nome de usuário do Insper.file
deve ser substituído pelo nome do arquivo que está sendo processado.
Antes de começar a realizar as tarefas, leia um pouco mais do handout!
Ferramenta
Para realizar as tarefas, duas alternativas foram propostas pela empresa: - Pandas, - Polars.
Exercise
Answer
Se os arquivos fossem pequenos, seria. No entanto, para arquivos grandes, o pandas
pode ter problemas de desempenho e consumo de memória.
Confira o tamanho dos arquivos disponíveis no S3 e considere o uso do polars
.
Exercise
Exercise
Para conseguirmos interagir com o S3 utilizando Python, precisamos definir as credenciais de acesso. Isto será realizado no arquivo .env
. Veja um exemplo abaixo:
Exercise
Answer
Pergunte ao professor caso não saiba onde encontrar esta informação!
Uma outra boa prática é criar um ambiente virtual para aula. Você pode fazer isso utilizando o venv
, conda
ou outra ferramenta de sua preferência.
Exercise
É adequado criar um arquivo requirements.txt
para gerenciar as dependências do projeto.
Exercise
Exercise
Utilize os seguintes códigos base para realizar a leitura dos arquivos CSV:
Exercise
import os
import s3fs
import pandas as pd
from dotenv import load_dotenv
load_dotenv(override=True)
# Definir path do arquivo a ser lido
csv_path = "dataeng-warmup/data_raw/station.csv"
aws_access_key = os.getenv("AWS_ACCESS_KEY_ID")
aws_secret_access_key = os.getenv("AWS_SECRET_ACCESS_KEY")
aws_region = os.getenv("AWS_REGION")
fs = s3fs.S3FileSystem(
key=aws_access_key, secret=aws_secret_access_key, client_kwargs={"region_name": aws_region}
)
# CSV
with fs.open(csv_path, "rb") as f:
df = pd.read_csv(f)
df.head(2)
import os
import s3fs
import polars as pl
from dotenv import load_dotenv
load_dotenv(override=True)
# Definir path do arquivo a ser lido
csv_path = "dataeng-warmup/data_raw/station.csv"
aws_access_key = os.getenv("AWS_ACCESS_KEY_ID")
aws_secret_access_key = os.getenv("AWS_SECRET_ACCESS_KEY")
aws_region = os.getenv("AWS_REGION")
fs = s3fs.S3FileSystem(
key=aws_access_key, secret=aws_secret_access_key, client_kwargs={"region_name": aws_region}
)
# Observe que estammos utilizando Lazy Evaluation
with fs.open(csv_path, "rb") as f:
df = pl.scan_csv(f)
df.head(2).collect()
Exercise
Answer
Lazy evaluation é uma técnica onde a avaliação de uma expressão é adiada até que seu valor seja realmente necessário. Isso pode ajudar a melhorar o desempenho e a eficiência, especialmente ao trabalhar com grandes volumes de dados.
No contexto do polars
, a lazy evaluation permite que o sistema otimize a execução de operações em um DataFrame, agrupando e minimizando o trabalho necessário para produzir o resultado final.
Exercise
Answer
Altere de pl.scan_csv(f)
para pl.read_csv(f)
e remova o '.collect()`.
Exercise
Answer
Nesta etapa, pesquise sobre as funções de transformação do polars
.
Exercise
Exercise
Exercise
Exemplo de análise
Agora que você exportou e leu os arquivos parquet
, pode realizar análises sobre os dados. Por exemplo, você pode calcular estatísticas descritivas, criar visualizações ou aplicar modelos de machine learning.
Exercise
Questões finais
Exercise
Answer
Os dados são armazenados de forma centralizada no S3, permitindo que todos os membros da equipe acessem e trabalhem com os mesmos conjuntos de dados.
Exercise
Exercise
Answer
✅ Vantagens:
- Flexibilidade: Os analistas podem escolher as ferramentas e ambientes que melhor atendem às suas necessidades.
- Autonomia: Cada analista pode trabalhar de forma independente, sem depender de uma infraestrutura centralizada.
❌ Desvantagens:
- Consistência: Pode haver variações nos resultados devido a diferentes ambientes e configurações.
- Escalabilidade: Processar grandes volumes de dados localmente pode ser limitado pela capacidade do hardware dos analistas e pela largura de banda da rede.
- Colaboração: A falta de um ambiente centralizado pode dificultar a colaboração e o compartilhamento de resultados entre os membros da equipe.