Este projeto foca na criação de um pipeline completo de pré-processamento de dados com o objetivo de prever prêmios de seguro de carro. O pipeline aborda desde a limpeza inicial dos dados até a análise exploratória e a aplicação das transformações em um conjunto de teste separado.
projeto2.ipynb: Notebook de desenvolvimento e análise, onde o pipeline foi explorado, visualizado e construído usando ocar_insurance_premium_dataset.csv.aplicar_pipeline.py: Script Python final que aplica o pipeline aprendido nos dados de treino (..._dataset.csv) para processar os novos dados (..._dataset_TEST.csv), evitando vazamento de dados (data leakage).car_insurance_premium_dataset.csv: O conjunto de dados de treino.car_insurance_premium_dataset_TEST.csv: O conjunto de dados de teste.requirements.txt: As bibliotecas Python necessárias para rodar o projeto.
O Jupyter Notebook (projeto2.ipynb) é o "laboratório" onde o pipeline foi desenvolvido e testado. Ele executa todas as 7 tarefas de pré-processamento e análise no conjunto de dados de treino.
-
Padronização de Nomes (Tarefas 1 & 2):
- As colunas são convertidas para
lowercase(ex:Driver Age->driver age). - Caracteres especiais são removidos e espaços são substituídos por
_(ex:driver age->driver_age,insurance_premium ($)->insurance_premium_$).
- As colunas são convertidas para
-
Tratamento de Outliers (Tarefa 3):
- O notebook implementa corretamente as duas metodologias solicitadas: IQR e Z-Score (com limite de 3).
- Foi demonstrado (com boxplots e logs) que este conjunto de dados sintético não possuía outliers significativos, mas o código para substituí-los pela mediana está implementado.
-
Tratamento de Missing Values (Tarefa 4):
- Primeiro, o notebook verifica a existência de dados ausentes (
df.isnull().sum()). - Como não foram encontrados valores ausentes, o notebook demonstra a implementação correta usando
SimpleImputerdo Scikit-learn com a estratégiamedian, garantindo que o pipeline esteja pronto para dados do mundo real.
- Primeiro, o notebook verifica a existência de dados ausentes (
-
Tratamento de Dados Categóricos (Tarefa 5):
- O notebook analisa os tipos de dados (
select_dtypes) e identifica corretamente que não há colunas categóricas neste conjunto. - Uma excelente descrição em markdown é fornecida, explicando o que seria feito caso existissem (a diferença entre One-Hot Encoding para dados nominais e Ordinal Encoding para dados ordinais).
- O notebook analisa os tipos de dados (
-
Análise Exploratória (EDA) (Tarefa 6):
- KDE Plots: Mostram a distribuição e a forma de cada variável numérica.
- Heatmap (Correlação): Usado para identificar relações. A análise aponta corretamente a forte multicolinearidade entre
car_ageecar_manufacturing_year(-1.00) e entredriver_ageedriver_experience(0.82). - Regplots (Análise de Alvo): Gráficos de dispersão com linha de regressão são usados para visualizar a relação linear de cada feature com a variável alvo (
insurance_premium_$). As conclusões da análise (ex: prêmios mais altos para motoristas com mais acidentes) estão corretas.
-
Descrição dos Tipos de Dados (Tarefa 7):
- Uma descrição conceitual detalhada de cada tipo de dado (float, int64, bool, etc.) é fornecida no final.
O script aplicar_pipeline.py é o pipeline "em produção". Seu objetivo principal é processar o arquivo car_insurance_premium_dataset_TEST.csv usando as regras e estatísticas aprendidas apenas do car_insurance_premium_dataset.csv.
Isso é fundamental para evitar Data Leakage (Vazamento de Dados). Por exemplo, a mediana usada para substituir outliers ou valores ausentes no conjunto de teste é a mediana calculada no conjunto de treino.
- Carregar Dados: Carrega ambos os arquivos
_dataset.csv(treino) e_dataset_TEST.csv(teste). - Limpar Nomes: Aplica a padronização de nomes de colunas em ambos os dataframes.
- Aprender (Fit): O script calcula e armazena todas as estatísticas necessárias apenas do
df_treino:- Medianas de todas as colunas (para Outliers e Missing Values).
- Limites de IQR (Q1, Q3).
- Limites de Z-Score (Média, Desvio Padrão).
- Um
SimpleImputeré "treinado" (fitado) com as medianas do treino.
- Aplicar (Transform): O script aplica essas estatísticas aprendidas para transformar o
df_teste. - Gerar Saídas: Ele salva 3 versões processadas do conjunto de teste:
car_insurance_premium_dataset_TEST_outliers_iqr.csvcar_insurance_premium_dataset_TEST_outliers_zscore.csvcar_insurance_premium_dataset_TEST_imputed.csv
Siga estes passos para configurar e executar o projeto em seu ambiente local (Linux ou Windows).
- Python 3.7+
- Git (para clonar o repositório)
-
Clone o repositório:
git clone https://github.com/julia-lika/arte-dos-dados-projeto2.git
ou
git clone git@github.com:julia-lika/arte-dos-dados-projeto2.git
e, após clonar:
cd arte-dos-dados-projeto2 -
Crie um ambiente virtual (Recomendado):
- Linux/macOS:
python3 -m venv venv source venv/bin/activate - Windows:
python -m venv venv .\venv\Scripts\activate
- Linux/macOS:
-
Instale as dependências:
pip install -r requirements.txt
Certifique-se de que os arquivos car_insurance_premium_dataset.csv e car_insurance_premium_dataset_TEST.csv estejam no diretório.
- Inicie o Jupyter Lab:
jupyter lab
- No navegador, abra o arquivo
projeto2.ipynbe execute as células.
-
Execute o script
aplicar_pipeline.pyno seu terminal.- Linux/macOS:
python3 aplicar_pipeline.py
- Windows:
python aplicar_pipeline.py
- Linux/macOS:
Após executar o aplicar_pipeline.py, você verá mensagens no console detalhando o processo. Três novos arquivos serão criados no seu diretório:
car_insurance_premium_dataset_TEST_outliers_iqr.csv: O conjunto de teste com outliers (se houver) tratados pela regra do IQR do treino.car_insurance_premium_dataset_TEST_outliers_zscore.csv: O conjunto de teste com outliers (se houver) tratados pela regra do Z-Score do treino.car_insurance_premium_dataset_TEST_imputed.csv: O conjunto de teste com valores ausentes (se houver) preenchidos com a mediana do treino.