Skip to content

Guilh-Code/Analise-do-Mercado-de-Vagas-de-Ciencia-de-Dados-2025

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Análise de Vagas em Ciência de Dados (2025)

Um Projeto Completo de Engenharia de Dados, Machine Learning e Business Intelligence

Este README detalha o processo completo de análise de um dataset do Kaggle, desde a limpeza e engenharia de dados em SQL, passando pela criação de um modelo preditivo em Python, até a construção de um dashboard interativo no Power BI.

📊 Dashboard Interativo Final

Abaixo, a versão final do dashboard, que consolida todos os insights gerados neste projeto.

Dashboard Final do Projeto
Baixar Arquivo Power BI

📖 Visão Geral

Este projeto simula um caso de uso real do dia a dia de um profissional de dados, com o objetivo de analisar o mercado global de vagas em Ciência de Dados para o ano de 2025. O processo abrange três grandes áreas:

  1. Engenharia de Dados: Tratamento, limpeza e enriquecimento dos dados brutos utilizando SQL para prepará-los para análise e modelagem.
  2. Machine Learning: Desenvolvimento de um modelo de regressão para prever salários anuais com base nas características das vagas, utilizando Python e Scikit-learn.
  3. Business Intelligence: Criação de um dashboard dinâmico no Power BI para visualizar os insights e permitir a exploração interativa dos dados.

💾 Fonte dos Dados

O dataset utilizado foi o "Data Science Job Postings with Salaries (2025)", disponível na plataforma Kaggle. Ele contém informações sobre vagas de emprego na área de dados, incluindo cargo, senioridade, localização, modalidade, e faixa salarial em euros.


⚙️ Processo do Projeto

O projeto foi estruturado em missões, simulando um ambiente de trabalho ágil e focado em entregas de valor em cada etapa.

1. Engenharia de Dados com SQL

A primeira fase consistiu em transformar o arquivo .csv bruto em uma base de dados estruturada e enriquecida. Todas as operações foram realizadas em um banco de dados SQLite.

Missões Executadas:

  • Estruturação: O .csv foi convertido para uma tabela em um banco de dados SQLite para permitir consultas complexas e performáticas.
  • Tradução e Padronização: Colunas categóricas como seniority_level e status foram traduzidas do inglês para o português.
  • Limpeza de Dados Nulos: Valores nulos em colunas-chave foram tratados e substituídos por "Não Informado" para garantir a consistência dos dados.
  • Engenharia de Features: Esta foi a etapa mais crítica, onde novas colunas de alto valor foram criadas a partir de dados brutos:
    • Salários: A coluna salary, que era um texto com faixas e símbolos ("€100,472 - €200,938"), foi dissecada para criar três novas colunas numéricas: salario_min, salario_max, e salario_avg. Isso foi feito com uma query SQL complexa, utilizando funções de manipulação de texto.
      -- Exemplo de código para extração dos salários
      UPDATE job_postings
      SET 
          salario_min = CAST(
              CASE
                  WHEN salary LIKE '%-%' THEN 
                      TRIM(SUBSTR(REPLACE(REPLACE(salary, '', ''), ',', ''), 1, INSTR(REPLACE(REPLACE(salary, '', ''), ',', ''), '-') - 1))
                  ELSE 
                      TRIM(REPLACE(REPLACE(salary, '', ''), ',', ''))
              END 
              AS REAL
          ),
          -- (lógica similar para salario_max)
    • Localização: As colunas pais e estado foram criadas a partir da coluna de texto location, permitindo análises geográficas.
    • Habilidades (Skills): A coluna skills foi decodificada para criar múltiplas colunas "flag" (ex: tem_python, tem_sql), que recebem 1 ou 0 indicando a presença de cada habilidade.

Tabela de Amostra (Após Limpeza em SQL)

Abaixo, uma amostra das 4 primeiras linhas da tabela final, após todo o processo de tratamento e enriquecimento.

job_title seniority_level status company location post_date headquarter industry ownership company_size revenue salary skills salario_min salario_max salario_avg estado pais tem_python tem_sql tem_r tem_machine_learning tem_aws tem_spark tem_deep_learning tem_scikit_learning tem_tensorflow tem_pytorch tem_azure tem_gcp tem_tableau tem_pandas tem_git tem_java tem_powerbi
Cientista de Dados Sênior Híbrido company_003 Grapevine, TX . Hybrid 17 days ago Bentonville, AR, US Varejo Pública €352.44B Public "€100,472 - €200,938" "['spark', 'r', 'python', 'scala', 'machine learning', 'tensorflow']" 100472.0 200938.0 150705.0 TX US 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0
Cientista de Dados Líder Híbrido company_005 Fort Worth, TX . Hybrid 15 days ago Detroit, MI, US Manufatura Pública 155,030 €51.10B "€118,733" "['spark', 'r', 'python', 'sql', 'machine learning']" 118733.0 118733.0 118733.0 TX US 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
Cientista de Dados Sênior Híbrido company_008 Chicago, IL . Scottsdale, AZ . Austin, TX . Hybrid 8 days ago San Jose, CA, US Tecnologia Pública 34,690 €81.71B "€112,797 - €194,402" "['sql', 'r', 'python']" 112797.0 194402.0 153599.5 IL US 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Cientista de Dados Não Informado Presencial company_009 On-site 3 days ago Stamford, CT, US Finanças Privada 1,800 Private "€114,172 - €228,337" [] 114172.0 228337.0 171254.5 NULL NULL 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2. Modelagem Preditiva com Python

Com os dados limpos, o próximo objetivo foi construir um modelo de Machine Learning capaz de prever a média salarial (salario_avg).

Etapas do Processo:

  1. Seleção: Definição das features (as "pistas", como cargo, senioridade, skills) e do target (o alvo, salario_avg).
  2. Pré-processamento: As features categóricas (texto) foram transformadas em um formato numérico que o modelo entende, utilizando a técnica de One-Hot Encoding.
    # Transformando colunas de texto em colunas numéricas (0s e 1s)
    X_encoded = pd.get_dummies(X, drop_first=True).astype(int)
  3. Divisão: Os dados foram divididos em 80% para treino e 20% para teste com train_test_split.
  4. Desafio de Depuração: Um desafio real surgiu quando o primeiro modelo (LinearRegression) falhou, retornando erros absurdos. A investigação revelou que o problema não era um, mas uma combinação de fatores:
    • Outliers Extremos: Identificação e remoção de vagas com salários anuais na casa dos milhões.
    • Valores Nulos (NaN): Tratamento de valores nulos que persistiram nas features e no alvo.
    • Instabilidade do Algoritmo: Mesmo com os dados limpos, a LinearRegression se mostrou instável. A decisão foi trocar de algoritmo.
  5. Treinamento: Um modelo mais robusto, RandomForestRegressor, foi escolhido e treinado. Este modelo, baseado em um "comitê" de árvores de decisão, é menos sensível a outliers e aprende padrões mais complexos.
  6. Otimização: Para extrair a melhor performance, a ferramenta GridSearchCV foi utilizada para testar diversas combinações de hiperparâmetros (as "configurações" do modelo) e encontrar a melhor delas.

Resultados do Modelo Final:

Após a otimização, o modelo final foi avaliado no conjunto de teste (dados que ele nunca viu antes), alcançando os seguintes resultados:

  • Erro Médio Absoluto (MAE): € 28,818.08
    • Em média, as previsões do modelo erram o salário anual por aproximadamente €28.8k, um valor razoável dada a ampla variação salarial.
  • Coeficiente de Determinação (R²): 62.37%
    • O modelo consegue explicar cerca de 62% da variação nos salários com base nas características da vaga, um resultado sólido para dados do mundo real.

3. Visualização de Dados com Power BI

A fase final consistiu em consolidar todos os insights em um dashboard interativo. Esta foi minha primeira experiência com Power BI, focada em aprender a ferramenta do zero para criar um produto final profissional.

Processo de Construção:

O dashboard foi construído do zero, focando em clareza e interatividade.

Abaixo, uma imagem da fase inicial de planejamento e construção do layout.

Construção do Dashboard
Construção do Dashboard

Após a estruturação, foram aplicados design, formatação e otimização para chegar à versão final, que inclui:

  • KPIs Principais: Cartões com o total de vagas e as médias salariais.
  • Filtros Interativos: Segmentações de dados por cargo, modalidade e indústria.
  • Análise de Senioridade: Gráficos mostrando a distribuição de vagas e a média salarial por nível.
  • Análise Geográfica: Um mapa interativo mostrando a concentração de vagas por país.
  • Análise de Habilidades: Um gráfico de rosca destacando as skills mais requisitadas.

O resultado é uma ferramenta que não apenas apresenta os dados, mas permite que o usuário explore e tire suas próprias conclusões, simulando um ambiente real de Business Intelligence.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published