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
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?
- 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
- 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
-
Faça download do Anaconda no site: https://www.anaconda.com/products/individual#Downloads
-
Instalar o Docker Desktop no Windows ou no Linux: https://www.docker.com/get-started
-
Faça download do Visual Studio code: https://code.visualstudio.com/download
C:\bootcampds
/home//bootcampds
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
Teste o acesso ao banco de dados Mysql:
Coloque as configurações:
Host: 127.0.0.1
Username: root
Port: 3307
Password: bootcamp
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
-
Dentro do diretório bootcampds crie o diretório airflow.
-
Navegue até o diretório airflow e crie o diretório dags.
-
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
As variáveis criadas devem ficar como:
-
Acesse o link abaixo e faça download de todos os arquivos que usaremos nesta aula.
-
Inicie o container do Minio com o comando:
-
Abra o Docker Desktop para iniciar o docker engine
-
Abra o Powershell (Windows) e execute o comando abaixo para iniciar o container do Minio:
docker container start <nome-do-container>
-
Em seguida acesse o console do minio no endereço: http://localhost:9001/login
-
Crie os buckets landing, processing e curated como na imagem a seguir:
-
Clique em Buckets em seguida clique em create bucket
-
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:
-
Clique no bucket landing
-
Crie outra pasta chamada working-hours e faça upload dos arquivos .xlsx veja como fica na imagem abaixo:
-
Ao clicar no bucket landing ficamos como:
-
-
Abra o Docker Desktop para iniciar o docker engine
-
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
-
Em seguida abra o Visual Studio Code para carregar o arquivo .sql para dar carga no banco de dados:
-
Clique com o botão direito do mouse na conexão como mostrado na imagem abaixo
-
Escolha a opção Import Sql
-
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:
-
Descompacte os arquivos .py dentro do seu diretório usado no bootcamp, exemplo C:\Felipe\bootcampds ou /home/felipe/bootcamps
-
Mova os arquivos .py para o diretório airflow/dags como na imagem abaixo:
-
Atenção: Certifique que todos os arquivos estão dentro do diretório airflow/dags
-
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
-
Aguarde uns 5 minutos e acesse o console do airflow no endereço: http://localhost:8080/
-
Faça o login com usuário admin e a senha bootcamp.
-
Ao clicar em Dags deve aparecer as dags criadas como na imagem abaixo:
- Atenção: Antes de executar as dags verifique se o ip do mysql ou do minio alterou.
- Para verificar use o comando:
docker container inspect mysqlbd1
e visualize o campo IP Address