Skip to content

Projeto completo de Data Science para análise de RH do bootcamp Stack 2021.

Notifications You must be signed in to change notification settings

vichShir/stack-data-science-bootcamp-2021

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stack - Bootcamp de Data Science 2021 🔎🎲

Jupyter Notebook Python Apache Airflow Docker Streamlit MySQL

📃 Descrição

O objetivo do projeto é desenvolver uma aplicação de Recursos Humanos (RH), que permita predizer se um colaborador deixará a empresa. O projeto engloba desde a extração dos dados até a implantação de um WebApp.

O projeto foi elaborado pela Stack no bootcamp de Data Science com algumas modificações minhas. Recomendo também o site Minerando Dados de Data Science dos mesmos fundadores.

Imagem retirada do canal da Stack

😵 Problema

O problema envolve o setor de RH de uma empresa, que deseja entender o que leva seus colaboradores a deixarem.

  • Quais fatores influenciam para um colaborador deixar a empresa?
    • Pessoas insatisfeitas?
    • Ambiente de trabalho?
      • Cargo, Departamento...
    • Salário?
    • Tempo na empresa?
  • Podemos nos antecipar e saber se um determinado colaborador vai sair da empresa?
    • Desempenho do colaborador.
    • Carga de trabalho.
  • Como diminuir o turnover?

📚 Conteúdo

  • Fonte de dados com MySQL e arquivos
  • Data Lake com MinIO
  • Automatização de Pipeline com Apache Airflow
  • Conteinerização com Docker
  • Análises e modelagem com Python e Jupyter Notebook
  • WebApp com Streamlit

🎲 Entendendo a estrutura dos dados

  • Banco de dados:
    • Projetos atribuídos a cada colaborador.
    • Data de contratação, acidente de trabalho.
    • Departamento, Salário e se o colaborador deixou a empresa.
  • Avaliação de desempenho:
    • Satisfaction Level - O nível de satisfação do colaborador.
    • Last Evaluation - Nota atribuída ao colaborador na última avaliação de desempenho.
    • Com os dados de registros de horas de trabalho, podemos conseguir a quantidade de horas trabalhadas nos últimos meses.

Imagem retirada do canal da Stack

Preparação do ambiente

  1. Faça download do Anaconda no site: https://www.anaconda.com/products/individual#Downloads

  2. Instalar o Docker Desktop no Windows ou no Linux: https://www.docker.com/get-started

  3. Faça download do Visual Studio code: https://code.visualstudio.com/download

Crie um diretório na sua máquina para armazenar scripts e outros artefatos, exemplo:

C:\bootcampds

/home//bootcampds

Instalação e Configuração do Mysql Server

Se estiver usando Windows abra o Powershell e digite:

Crie o container do mysql habilitando a porta 3307:

docker run --rm --name mysqlbd1 -e MYSQL_ROOT_PASSWORD=bootcamp -p "3307:3306" -d mysql

Teste o acesso ao banco de dados usando o Visual Studio Code:

Abra o Visual Studio Code e instale a extensão: Database Client

img

Teste o acesso ao banco de dados Mysql:

Coloque as configurações:

Host: 127.0.0.1

Username: root

Port: 3307

Password: bootcamp

img

Instalação e Configuração do Data Lake com Minio Server

Dentro do diretório bootcampds crie o diretório datalake.

Se estiver usando Windows abra o terminal do Powershell e execute o comando:

docker run -d -p 9000:9000 -p 9001:9001 -v "$PWD/datalake:/data" minio/minio server /data --console-address ":9001"

Teste o acesso ao Minio:

Abra o browser e digite: http://localhost:9001/login

username: minioadmin

password: minioadmin

Instalação e Configuração do Airflow.

  1. Dentro do diretório bootcampds crie o diretório airflow.

  2. Navegue até o diretório airflow e crie o diretório dags.

  3. Faça download da imagem e execute o container do Apache Airflow

    3a. Se estiver usando Windows abra o terminal do Powershell e execute o comando:

    docker run -d -p 8080:8080 -v "$PWD/airflow/dags:/opt/airflow/dags/" --entrypoint=/bin/bash --name airflow apache/airflow:2.1.1-python3.8 -c '(airflow db init && airflow users create --username admin --password bootcamp --firstname Felipe --lastname Lastname --role Admin --email [email protected]); airflow webserver & airflow scheduler'

    3b. Instale as bibliotecas necessárias para o ambiente:

    Execute o comando abaixo para se conectar ao container do airflow:

    docker container exec -it airflow bash

    Em seguida instale as bibliotecas:

    pip install pymysql xlrd openpyxl minio

    3c. Se não der nenhum erro, acesse a interface web do Apache Airflow com o endereço (Aguarde uns 5 minutos antes de abrir o terminal):

    https://localhost:8080

    Faça o login de acesso ao Apache Airflow

Clique em Admin >> Variables

Crie as seguintes variáveis:

data_lake_server = 172.17.0.4:9001 data_lake_login = minioadmin data_lake_password = minioadmin

database_server = 172.17.0.2 ( Use o comando inspect para descobrir o ip do container: docker container inspect mysqlbd1 ) database_login = root database_password = bootcamp database_name = employees

img

As variáveis criadas devem ficar como:

img

Aula 1 - Modelagem de Dados - 19/10/2021

Configurando o Data Lake

  1. Acesse o link abaixo e faça download de todos os arquivos que usaremos nesta aula.

    1. link: https://bit.ly/arquivos-bootcamp
  2. Inicie o container do Minio com o comando:

    1. Abra o Docker Desktop para iniciar o docker engine

    2. Abra o Powershell (Windows) e execute o comando abaixo para iniciar o container do Minio: docker container start <nome-do-container>

    3. Em seguida acesse o console do minio no endereço: http://localhost:9001/login

    4. Crie os buckets landing, processing e curated como na imagem a seguir:

    5. Clique em Buckets em seguida clique em create bucket

      img

    6. Após criar os buckets clique no bucket landing e crie a pasta: performance-evaluation em seguida clique em Upload e carregue o arquivo: employee_performance_evaluation.json Veja a imagem abaixo:

      img

    7. Clique no bucket landing

    8. Crie outra pasta chamada working-hours e faça upload dos arquivos .xlsx veja como fica na imagem abaixo:

      img

    9. Ao clicar no bucket landing ficamos como:

    img

Subindo o banco de dados e carregando o banco de dados

  1. Abra o Docker Desktop para iniciar o docker engine

  2. Abra o console do Powershell (Windows) ou o terminal linux e execute o comando abaixo para iniciar o container do mysql: docker container start mysqlbd1

  3. Em seguida abra o Visual Studio Code para carregar o arquivo .sql para dar carga no banco de dados:

  4. Clique com o botão direito do mouse na conexão como mostrado na imagem abaixo

    img

  5. Escolha a opção Import Sql

  6. Aguarde o processo de importação. Após importar clique em atualizar a conexão para visualizar o banco de dados employees recém criado. Veja imagem abaixo:

    img

Subindo o Airflow e criando as Dags:

  1. Descompacte os arquivos .py dentro do seu diretório usado no bootcamp, exemplo C:\Felipe\bootcampds ou /home/felipe/bootcamps

  2. Mova os arquivos .py para o diretório airflow/dags como na imagem abaixo:

    img

  3. Atenção: Certifique que todos os arquivos estão dentro do diretório airflow/dags

  4. Abra o console do Powershell (Windows) ou o terminal linux e execute o comando abaixo para iniciar o container do mysql: docker container start airflow

  5. Aguarde uns 5 minutos e acesse o console do airflow no endereço: http://localhost:8080/

  6. Faça o login com usuário admin e a senha bootcamp.

  7. Ao clicar em Dags deve aparecer as dags criadas como na imagem abaixo:

    img

Rodando as Dags:

  1. Atenção: Antes de executar as dags verifique se o ip do mysql ou do minio alterou.
  2. Para verificar use o comando: docker container inspect mysqlbd1 e visualize o campo IP Address