Compreensão de Negócios e dos Dados

Uma breve análise da satisfação dos colaboradores diante de certas circunstâncias

Quando passamos da primeira etapa de carregamento e limpeza dos dados, em seguida, muito provavelmente vamos buscar conhecer melhor os dados. Talvez existam perguntas que queiramos responder e não sabemos por onde começar. Em contrapartida, também é possível não termos nenhum dado à disposição, e muitas perguntas interessantes a se fazer.

  1. Como entro no campo?
    O que aqueles que trabalham na indústria sugerem para ajudar outros a entrarem no campo?
  2. Quais são os salários e colocação daqueles que participaram de um bootcamp de codificação?
    O que os dados sugerem para recém-formados em relação à sua posição de trabalho e seu salário?
  3. Quão bem podemos prever o salário de um indivíduo? Quais aspectos se correlacionam bem com o salário?
    Quais são os aspectos do indivíduo que se correlacionam melhor com o salário? Como podemos prever o salário atráves de outros atributos?
  4. Quão bem podemos prever a satisfação do trabalho de um indivíduo? Quais aspectos se correlacionam bem com a satisfação no trabalho?
    Quais fatores estão mais relacionados a maior satisfação no trabalho?

Anteriormente abordamos as quatro perguntas em que nos concentraremos enquanto trabalhamos nos passos restantes do processo CRISP-DM. O nosso próximo passo do processo é coletar os dados e organizá-los de uma forma que nos permita responder às perguntas. Para responder as perguntas, antes precisamos cumprir alguns passos.

1. Entendimento de negócios

2. Compreensão de Dados

Agora podemos olhar para o terceiro passo do processo:

3. Preparar dados

O processo de preparação dos dados é o que mais consome tempo, muitas vezes usando 80% do tempo de análise de dados. Vamos ver o que precisamos fazer com alguns dos dados para encontrar os insights.

Usaremos dados da pesquisa Stackoverflow para obter alguma visão sobre cada uma dessas perguntas. No resto da lição, você pode trabalhar comigo para responder a essas perguntas, ou você pode tomar sua própria abordagem para ver se as conclusões que você tira são semelhantes às que você encontraria ao longo desta lição.

Vamos dar início agora às respostas das perguntas, primeriamente vamos ver nos dados como responder a primeira dessas perguntas. dados como responder a primeira delas sobre como entrar no campo da programação e se tornar um desenvolvedor de acordo com a pesquisa do Stackoverflow.

Para começar, devemos carregar as bibliotecas de praxe:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_csv('./survey_results_public.csv')
df.head()
df

O que aquele já na indústria sugere para quem quer entrar? Vamos verificar através do atributo CousinEducation podemos ver exatamente o que os indivíduos sugeriram para ajudar. Abaixo podemos ver o campo completo que os participantes da pesquisa veriam.

df2 = pd.read_csv('./survey-results-schema.csv')list(df2[df2.Column == 'CousinEducation']['Question'])

Vamos ver o que os participantes da pesquisa disseram:

study = df['CousinEducation'].value_counts().reset_index().
study.head()

A saída não era bem assim, ele agrupou itens como se um participante tivesse dados mais do que uma resposta. Primeiramente vamos mudar a coluna “index” para um nome mais apropriado:

study.rename(
columns = {'index': 'method', 'CousinEducation':'count'},
inplace = True)

Agora, vendo rapidamente os dados, podemos criar uma lista com os métodos individuais marcados pelo usuário. Também posso encontrar isso nos documentos.

Também podemos agrupar mais de um dado com ponto e vírgula, tendo o valor distinto de cada bloco. Ele vira um conjunto para termos um de cada a cada ‘;’.

Agora vamos ver a frequência com que esses valores aparecem aplicando a função. Aparentemente a mior acaha que se deve fazer cursos on-line

study_df['perc'] = study_df['count'] / np.sum(study_df['count'])
study_df

É possivel ver que quase 21% das pessoas sugeriram cursos online, bem mais do que os outros métodos disponíveis. Vamos um pouco além e dizer que nos importamos mais com os métodos sugeridos para aqueles que ganham mais ou por quem está mais satisfeito no trabalho. É uma análise interessante.

A função agora foi atualizada para poder ver como o salário está relacionado aos respectivos métodos que temos em ‘method’. Contudo, essa função demora uma eternidade para ser executada, precisamos de uma solução melhor. Quando a função terminar de ser executada, vamos ordenar pela coluna “mean”, ou seja, queremos que o método educacional com o maior salário médio apareça antes que o resto.

salário médio dos que contribuem com código aberto

No final da tabela, há um intervalo de confiança de 95% ao redor do salário médio, além do desvio padrão e da variância. Analisando esses dados, podemos ver se há uma sobreposição que sugira que não há diferença significativa entre os métodos ou se, pelo contrário, essa diferença de fato existe.

o que os dados sugerem sobre cursos intensivos em termos de emprego e salário?

Temos aqui novamente a importação das bibliotecas necessárioa

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_csv('./survey_results_public.csv')
df.head()

Veremos os formandos dos cursos intensivos. Limitaremos o conjutno de dados a apenas esses indivíduos.

bootcamp_df = df[df['TimeAfterBootcamp'].isnull() == False]
not_bootcamp_df = df[df['TimeAfterBootcamp'].isnull() == True]
bootcamp_df.shape

Parece que j[a cerca de 2.600 nesse conjunto de dados. Muitos cursos intensivos dizem que visam ajudar as pessoas que são sub-representadas na comunidade técnica. Vejamos algumas dessas características para ver o que aparece no conjunto de dados.

bootcamp_df['Gender'].value_counts() / (bootcamp_df.shape[0] - sum(bootcamp_df['Gender'].isnul()))

Observando o gênero, existe o desdobramento dessas áreas: 86% é do sexo masculino, 11% é do sexo feminino e 3% restantes, fragmentados em todos os outros grupos abaixo de 1%.

Se compararmo o gênero dos graduados fora do intensivo, veremos se isso realmente ajuda os grupos sub-representados. Vemos que há um grupo 4% maior entre os homens, e isso vem diretamente da porção feminina.

Há mais mulheres nos cursos intensivos do que a na indústria atual. No entanto no que diz respeito ao resto dos grupos, é quase igual.

not_bootcamp_df['Gender'].value_counts()/
(not_bootcamp_df.shape[0] - sum(not_bootcamp_df['Gender'].isnull()))
Há mais mulheres nos cursos intensivos do que na indústria atual

Além disso, poderíamos separar por nível de formação. Daqueles que participaram do intensivo, cerca de 48% tinham diploma de bacharel antes de participar e 23% possuíam mestrado.

Podemos ver outros segmentos onde quase 2% tinham doutorado e 1.6% possuía formação profissional. Muitos anos gastos no mundo da educação tradicional antes de passar por um curso intensivo.

bootcamp_df['FormalEducation'].value_counts()/
(bootcamp_df.shape[0]-sum(bootcamp_df['FormalEducation'].isnull()))

Logo, parece que é mais oportuno para as pessoas com diploma de bacharel. Há um aumento de 6% entre os participantes, mas não arece está realmente mudando as formações profissionais de doutorado ou de mestrado. As pessoas estão apenas escolhendo outra formação que não seja mestrado ou doutorado.

Outra visão interessante é de quanto tempo após o curso intensivo foi necessário para encontrar um emprego.

bootcamp_df['TimeAfterBootcamp'].value_counts()/bootcam_df.shape[0]

Acima vemos que 46% das pessoas já tinham empregos, 11% conseguiram imediatamente após a formação e cerca de 10% conseguir emprego antes de concluir o programa. Somando, são 64% que tinham emprego antes de terminar o curso. Um pouco menos de 10% não arranjaram um emprego

  • Pelo menos 20% dos indivíduos ganharam empregos como desenvolvedores após a graduação ou mais cedo.
  • Aproximadamente 46% dos graduados em bootcamp no conjunto de dados já tinham empregos como desenvolvedores antes de iniciar o bootcamp.

Agora plotaremos em um histrograma os salários:

bootcamp_df['Salary'].hist(bins=20)

A distribuição de salários é bem ampla, variando num espectro de 0 a US$200.000 anuais. Parece haver um pico enorme no começo da distribuição, que pode ser referente às pessoas que estão buscando ingressar neste mercado.

Não há muita consistência em torno do salário para os graduados.

Os cursos intensivos não parecem ser muitos consistentes em termos de posição salarial. Existem outros fatores que estão envolvidos além de apenas alguém fazer ou não um curso intensivo. Além do mais, há o aspecto de muitos estarem empregados antes do término.

Nesta etapa, exploraremos a satisfação com o trabalho de acordo.

df['JobSatisfaction'].isnull().mean()
a proporção de valores ausentes é de 20.14%

Então, de acordo com o status do cargo, qual grupo tem a maior média de satisfação com o seu trabalho? Queremos observar o status de emprego:

df['EmploymentStatus'].count_values()

Podemos ver que existem 7 categorias de status de emprego, onde sua maioria ainda está empregada. Portanto, qual grupo tem a maior média de satisfação com o trabalho? Aplicaremos um groupby e retornaremos a média:

df.groupby('EmploymenteStatus').mean()

De acordo com o status de emprego, qual o grupo com a maior satisfação? Podemos ver que são os independentes, freelancers e autonômos.

As empresas menores parecem ter funcionários mais satisfeitos? É possível que haja alguma associação com o tamanho da empresa, CompanySize. Aplicaremos outro groupby:

df.groupby('CompanySize').mean()['JobSatisfaction'].sort_values()
empresas menores, funcionários mais satisfeitos

Podemos ver que conforme o porte das empresas é menor, os funcionários parecem estar mais satisfeitos com as suas ocupações, apesar de uma diferença ínfima. Portanto, as três maiores classificações de porte de empresa, têm colaboradores menos satisfeitos.

A flexibilidade para trabalhar fora do escritório influencia na satisfação do colaborador?

df.groupby('HomeRemote').mean()['JobSatisfaction'].sort_values()

A flexibilidade para trabalhar remotamente também reflete na satisfação. Aqueles que nunca trabalharam remotamente indicam ser os mais insatisfeitos, enquanto os que trabalham remotamente com frequência têm o maior índice de satisfação.

df.groupby('ProgramHobby').mean()['JobSatisfaction'].sort_values()

Parece que os menos satisfeitos com o trabalho não programam como hobby, e os mais satisfeitos programam sim como hobby.

Podemos tentar fazer algo para provar a significância das hipóteses levantadas por métodos inferenciais.

De acordo com essa seleção feita abaixo, aqueles que tem um grau de doutorado parecem ter mais satisfação com seus empregos. Um valor considerável em comparação às outras classificações.

Atenção à diferença entre os doutorados e bacharelados!

df.groupby('FormalEducation').mean()['JobSatisfaction'].sort_values()

Composing a repository of books (i bought), authors (i follow) & blogs (direct ones) for my own understanding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store