Blog

Postado em em 8 de abril de 2024

Análise Exploratória Automática com Python – Ydata Profiling

Aprenda a realizar análise exploratória automática com Python, utilizando a biblioteca YData Profiling. Ganhe tempo e agilidade em suas análises de dados.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Análise Exploratória Automática com Python – Ydata Profiling

Na aula de hoje, veremos como realizar uma análise exploratória automática com Python utilizando a biblioteca YData Profiling.

Essa ferramenta permite conduzir uma análise exploratória de dados de forma automatizada, poupando tempo que seria gasto manualmente.

É claro que ainda será muito importante que você saiba fazer esse processo de forma manual. No entanto, em certos casos, essa análise automática poderá te ajudar, dando mais agilidade e velocidade em suas análises.

A biblioteca YData Profiling é muito útil e pode ser uma grande aliada quando lidamos com conjuntos de dados extensos.

Então, faça o download do material disponível e vem comigo que eu vou te mostrar como utilizar a biblioteca Ydata Profiling para fazer análise exploratória automática com Python!

Ydata Profiling

O pacote que utilizaremos nesta aula é o Ydata Profiling. Você pode acessar a documentação completa dele através deste link para explorar todas as funcionalidades e capacidades que essa biblioteca oferece.

Para utilizar o YData Profiling, é necessário criar um DataFrame Pandas e passá-lo ao pacote para gerar os relatórios detalhados automaticamente. Esse será o processo que abordaremos ao longo da aula.

Primeiramente, precisamos instalar o pacote. No terminal de comandos do seu editor de código, execute o seguinte comando:

pip install -U ydata-profiling

Ou, caso esteja utilizando o Jupyter Notebook, você pode instalar essa biblioteca da seguinte forma:

pip install -U ydata-profiling[notebook]

Informações da Base de Dados

A base de dados que iremos utilizar foi baixada do Kaggle, e é a base de dados da IBM HR Analytics Employee Attrition & Performance.

Essa base foi criada por cientistas de dados da IBM e contém dados fictícios que simulam funcionários da empresa, com o objetivo de analisar os perfis que tendem a deixar o trabalho (attrition).

Attrition é um termo referente à saída voluntária de funcionários. Enquanto turnover envolve demissões e substituições desses funcionários por parte da empresa.

O foco dessa base de dados será justamente analisar a ocorrência de attrition entre os funcionários da IBM. Nela encontraremos diversas colunas sobre o nível educacional dos funcionários, satisfação com o ambiente, desempenho no trabalho e assim por diante.

Temos 35 colunas, o que é uma base relativamente grande e por isso utilizaremos a biblioteca do Ydata Profiling para uma análise exploratória rápida e eficiente.

Construção do Código e Análises Iniciais

A construção do nosso código é bastante simples. O primeiro passo será importar a biblioteca Pandas para podermos trabalhar com DataFrames, e além dele, importarmos a classe ProfileReport do pacote Ydata Profiling.

import pandas as pd
from ydata_profiling import ProfileReport

Após a importação necessária, definiremos a variável DADOS, que receberá o caminho para o nosso arquivo CSV, ou seja, nossa base de dados. Em seguida, criaremos o nosso DataFrame.

DADOS = "dados/employee_attrition.csv"
df = pd.read_csv(DADOS)
df.head()
Base de dados

Além disso, podemos visualizar as informações do DataFrame através do método info.

df.info()

informações do DataFrame

Podemos observar que se trata de uma base de dados com 35 colunas e um total de 1470 linhas, contendo informações detalhadas sobre cada funcionário.

Os dados abrangem diversas informações, como viagens a trabalho, distância casa-trabalho, nível educacional, gênero, estado civil, salário mensal, entre outros.

Criando Relatório Automático

Para realizar nossa análise exploratória automática com Python, criaremos uma variável chamada profile para armazenar o nosso relatório.

Esse relatório será criado através da classe ProfileReport, passando o DataFrame como parâmetro.

Podemos salvar esse arquivo no formato HTML com o nome de eda. Essa é uma sigla comum utilizada na área de dados para Exploratory Data Analysis (análise exploratória de dados).

profile = ProfileReport(df)
profile.to_file("reports/eda.html")

Feito isso, a biblioteca fará uma análise da base de dados e irá gerar um relatório com as principais características e estatísticas dela.

biblioteca fazendo uma análise da base de dados

Esse processo levará um certo tempo, mas após concluir essa análise, teremos um relatório em formato HTML contendo análises detalhadas das colunas do DataFrame, incluindo interações e correlações entre elas.

Como o arquivo gerado está em formato HTML, podemos abri-lo em qualquer navegador.

arquivo gerado em formato HTML

Logo no início temos a visão geral (Overview) dessa base de dados, com o número de variáveis correspondendo ao número de colunas da base de dados, o número de observações (referentes às linhas) e a ausência de valores vazios e duplicados.

Além disso, nos tipos de variáveis, a biblioteca reconheceu 3 tipos distintos: numéricas, booleanas e categóricas.

Alertas da Base de Dados

Além da visão geral dos nossos dados, temos uma aba de alertas. Esses alertas são gerados durante a análise da base de dados e indicam aspectos como constantes, alta correlação e valores únicos.

Alertas da Base de Dados

O alerta Constant indica que aquelas colunas possuem um único valor contante, dessa forma, podem ser descartadas por não contribuírem para diferenciar os funcionários.

O High correlation sinaliza uma alta correlação entre colunas específicas, podendo ser uma alta correlação positiva ou negativa.

Uma correlação positiva indica que quando o valor de uma coluna aumenta, o da outra coluna também aumenta, enquanto uma correlação negativa significa que quando o valor de uma coluna diminui, o da outra coluna também diminui.

Essas correlações identificadas são muito importantes para direcionar algumas análises futuras, tornando o processo mais eficiente.

Além dos alertas de Constant e High correlation, temos os alertas de Unique e Zeros.

Alertas da Base de Dados

O alerta Unique indica que aquela coluna é composta apenas por valores únicos, sem nenhuma repetição. Por se tratar da coluna EmployeeNumber, essa é a coluna que identifica cada um dos funcionários da empresa.

O alerta de Zeros indica uma grande presença de valores zeros em uma coluna. Isso pode levar a interpretações equivocadas, sendo essencial compreender o contexto dessas colunas para evitar análises errôneas.

O zero não necessariamente indica ausência de dados, por isso é crucial discernir entre ausência de valor e valor zero para uma análise precisa.

Por exemplo, a coluna com o número de empresas anteriores onde o funcionário trabalhou faz sentido ter uma grande presença de zeros, indicando casos de novos colaboradores sem experiência prévia.

Os zeros em colunas como treinamentos realizados no último ano podem refletir diferentes cenários, desde funcionários recém-chegados até funcionários que não realizaram treinamento no ano anterior.

Então, com base nesse alerta e analisando o tipo de cada coluna, você pode identificar se faz sentido aquela quantidade indicada de valores zero nela, ou se isso exige uma análise mais detalhada para distinguir ausência de informação e valores zeros reais.

Análise de uma Coluna Numérica

Voltando para o overview, vamos passar por um exemplo de cada tipo de variável identificada pela biblioteca. Começando por uma coluna numérica, a coluna Age (idade).

Análise de uma Coluna Numérica - Age

Perceba que ela traz a informação de alta correlação novamente e uma tabela com as informações desses dados.

Nela temos a quantidade e a porcentagem de valores distintos (Distincts), de valores ausentes (Missing) e infinitos (Infinite). A média das idades (Mean), assim como os valores mínimos (Minimum) e máximos (Maximum) presentes nessa coluna.

Além disso, temos informações sobre a presença de zeros e valores negativos nessa coluna. Nesse caso, não há nenhum valor zero ou negativo, indicando um preenchimento correto das informações.

Clicando em More details, temos mais informações sendo exibidas de um ponto de vista estatístico. Isso nos permite uma análise estatística dos dados, revelando insights sobre a idade dos funcionários, como a distribuição etária, a média, a idade mínima e máxima, entre outras.

More Details da Análise de uma Coluna Numérica

Também é possível visualizarmos o histograma ampliado, o que nos mostra a distribuição etária dos funcionários da empresa. Podemos ver a faixa etária onde estão concentrados a maioria dos funcionários da empresa.

Histograma coluna age

É possível visualizarmos também os valores de idades mais comuns dos funcionários.

Valores mais comuns de idade

E por fim, temos uma aba para os valores extremos, divididos entre os 10 menores valores e os 10 maiores.

10 maiores e menores idades

Análise de uma Coluna Booleana

Para a coluna do tipo booleana, vamos analisar a coluna Attrition, que é o foco da nossa base de dados.

Análise de uma Coluna Booleana

Ela nos mostra que só temos dois valores distintos, nenhum valor ausente e a quantidade referente a False e True.

Repare que essa biblioteca faz a conversão automaticamente dos valores Yes (sim) e No (não) da coluna para os valores booleanos True e False, respectivamente.

Isso facilita análises futuras e permite identificarmos se essa pode ser uma boa base para treinar modelos de machine learning.

No caso dessa base de dados, temos poucos funcionários que deixaram a empresa. Isso torna essa base de dados desbalanceada, pois temos poucos dados referentes aos funcionários que saíram da empresa.

Dessa forma, essa não é uma base de dados ideal para treinar um modelo de machine learning, pois ele terá poucas informações para identificar os principais fatores que fazem os funcionários deixarem a empresa.

Assim como para a coluna numérica, se clicarmos em More details, teremos uma visualização dos valores em porcentagem e em um gráfico de barras.

Gráfico de Análise de uma Coluna Booleana

Análise de uma Coluna Categórica

O último tipo de coluna que temos são as do tipo categórico. Para essa análise, vamos pegar como exemplo a Business Travel.

Essa coluna exibe se o funcionário viaja pela companhia e possui 3 valores distintos possíveis: Travel_Rarely (viaja raramente), Travel_Frequently (viaja com frequência) e Non-Travel (não viaja).

Análise de uma Coluna Categórica

Podemos observar que a maioria dos funcionários (71%) viajam raramente a trabalho, enquanto cerca de 19% viajam com frequência e 10% não viajam.

Isso pode ser explorado e analisado para verificar se a quantidade de viagens está relacionada à decisão dos funcionários em deixarem ou não a empresa.

Assim como para os outros tipos de dados, para essa coluna também podemos ter uma análise geral e alguns gráficos a respeito dessas informações.

Gráfico de Análise de uma Coluna Categórica

Diagramas de Interação

Outras análises muito interessantes que essa biblioteca nos proporciona são os diagramas de interação. Nesses diagramas, podemos selecionar diferentes colunas da nossa base de dados para analisar e ver como elas se relacionam.

Diagramas de Interação

Isso nos ajuda a identificar padrões significativos para nossas análises de maneira rápida e direta.

Correlação de Dados e Mapa de Calor

Outra forma de analisar as correlações entre as variáveis e identificar comportamentos e padrões relevantes é através do uso do mapa de calor que a biblioteca oferece.

Correlação de Dados e Mapa de Calor

Você pode visualizar essas informações tanto pelo mapa de calor quanto através de uma tabela.

Tabela de Correlação de Dados

Explicando de forma rápida, tanto no gráfico quanto na tabela, os valores irão variar de -1 a 1, indicando a força e a direção da relação entre as colunas.

Quanto mais próximo do 1 (cor azul), maior a correlação positiva; quanto mais próximo do -1 (cor vermelha), maior a correlação negativa entre as colunas.

A diagonal do gráfico de calor sempre será azul intenso (indicando 1), pois representa a correlação da coluna com ela mesma, sendo uma correlação positiva perfeita.

A partir dessa análise, podemos observar quais colunas têm maior correlação com o Attrition da empresa, indicando a possibilidade de análises mais detalhadas a respeito dessas características.

Valores Ausentes

Além disso, podemos verificar os valores ausentes da base de dados.

Valores Ausentes

Nesse caso, não temos nenhum valor ausente em nenhuma coluna.

Amostra dos Dados

E por fim, também podemos observar uma amostra dos dados, das primeiras e últimas linhas do DataFrame.

Amostra dos Dados

Essa análise das primeiras e últimas linhas dos dados é essencial para identificar possíveis erros ou padrões importantes para as análises.

Conclusão – Análise Exploratória Automática com Python – Ydata Profiling

Nessa aula, eu trouxe para você a biblioteca Ydata Profiling no Python e demonstrei como utilizá-la para fazer uma análise exploratória automática!

Essa é uma biblioteca que irá agilizar muito as suas análises de dados, pois permite explorar e realizar diferentes tipos de análise rapidamente com poucas linhas de código.

Vale relembrar que essa biblioteca não substitui a necessidade de você conhecer e saber realizar esses processos manualmente. No entanto, em certos casos, essa análise automática pode te ajudar, proporcionando mais velocidade e praticidade em suas análises.

Hashtag Treinamentos

Para acessar outras publicações de Ciência de Dados, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador