Blog

Postado em em 16 de novembro de 2023

Missingno no Python – Tratando Valores Vazios em DataFrames

Aprenda a usar a biblioteca Missingno no Python para lidar com a visualização de valores vazios em DataFrames.

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:

Missingno no Python – Tratando Valores Vazios em DataFrames

Na aula de hoje, você verá como funciona a ferramenta Missingno no Python e como utilizá-la para auxiliar na visualização de valores vazios em DataFrames.

Em análise de dados, é comum encontrarmos diversas informações ausentes em uma base de dados. Essas análises no Python geralmente são realizadas de maneira manual, exigindo a verificação da quantidade de informações vazias antes de tomar decisões.

A biblioteca Missingno no Python tornará a análise e visualização de valores vazios mais rápida, fácil e eficiente. Isso acelera a tomada de decisões durante suas análises.

Faça o download do material disponível nesta aula e aprenda a utilizar essa ferramenta que facilitará significativamente o tratamento inicial de suas bases de dados.

Visualização de Valores Vazios – Pandas e Importação da Base de Dados

Nesta aula, utilizaremos uma base de dados de exemplo obtida no site do Kaggle. O Kaggle é um site que disponibiliza bases de dados de forma gratuita e é uma excelente fonte para você treinar projetos de dados.

A base de dados que servirá como exemplo para nossa análise contém informações sobre animais disponíveis para adoção.

O primeiro passo para isso é instalar e importar a biblioteca do Pandas para importar e visualizar nossa base de dados.

Para instalar, execute o seguinte comando no terminal do seu editor de códigos:

pip install pandas

Ou na célula do Jupyter Notebook:

!pip install pandas

Como vamos lidar com análise e visualização de dados eu recomendo o uso do Jupyter Notebook, ou a extensão do Jupyter Notebook para o VSCode.

Após instalar a biblioteca Pandas, importe-a e carregue nossa tabela para visualizar os dados contidos nela.

import pandas as pd

tabela = pd.read_csv("animal-data-1.csv")
display(tabela)

Visualizando a tabela

Obs.: Lembre-se de que o display funcionará apenas se estiver usando o Jupyter Notebook ou sua extensão no VSCode; caso contrário, visualize os dados usando o print.

Essa é uma base de dados possui mais de 10 mil linhas e apresenta diversas características sobre os animais disponíveis para adoção, como raça, situação em que foi encontrado, nome, espécie, entre outras.

Suponha que desejamos analisar quais dessas características são mais relevantes para a adoção de um animal. Se uma coluna apresentar muitos valores vazios, essa coluna e esses valores podem atrapalhar a análise, pois não teremos como determinar a relevância daquela característica ou informação para a adoção do animal.

Como Funciona a Visualização de Valores Vazios?

Normalmente, ao querermos verificar a presença de valores vazios em uma tabela, utilizamos o método .info().

print(tabela.info())

Esse método nos fornece informações sobre cada uma das colunas, como o tipo de dado e a quantidade de valores não vazios nelas.

Método info

Dessa forma, podemos comparar a quantidade de valores não vazios com o total de linhas da tabela. Ou seja, colunas com valores abaixo de 10290 indicam a presença de valores vazios.

Com base na quantidade de valores vazios, é necessário analisar coluna por coluna para decidir se é mais aconselhável remover as linhas com esses valores ou as colunas.

Por exemplo, na coluna intakereason, há apenas dois valores vazios. Nesse cenário, é necessário calcular a porcentagem que esses valores representam em nossos dados e avaliar o impacto de remover as linhas ou a coluna como um todo.

Por outro lado, a coluna identichipnumber apresenta quase 2 mil valores vazios. Nesse cenário já teríamos de calcular a porcentagem que esses valores representam dos nossos dados e qual o impacto causaria remover as linhas ou a coluna como um todo.

Cada caso precisa ser analisado individualmente, com alguns cálculos, para decidir como lidar com cada coluna. Não é uma análise visual rápida e prática.

Para tornar esse processo mais prático e eficiente, podemos utilizar a biblioteca Missingno no Python.

Biblioteca Missingno no Python

Para utilizar a biblioteca Missingno no Python, é necessário primeiro instalá-la. Execute o seguinte código no terminal de comando:

pip install missingno

Ou, se estiver utilizando o Jupyter Notebook, na célula do código:

!pip install missingno

Após a instalação, podemos importá-la em nosso código, atribuindo um alias a ela, como msno:

import missingno as msno

Em seguida, utilizaremos a função matrix, passando nossa tabela como argumento. Essa função gera uma matriz na qual cada linha representa uma entrada do DataFrame, e as barras horizontais indicam a presença ou ausência de dados em cada coluna.

import missingno as msno

msno.matrix(tabela)

função matrix

As linhas pretas indicam a presença de dados, enquanto as linhas brancas representam a ausência de dados.

Essa representação visual facilita a identificação das colunas com valores vazios e a compreensão da proporção desses valores em relação ao total.

Caso prefira uma visualização diferente, a biblioteca Missingno no Python oferece outras funções, como a função bar. Essa função cria um gráfico de barras que permite visualizar a presença ou ausência de dados.

msno.bar(tabela)

Função bar

Nesse gráfico de barras, é possível estimar a porcentagem de valores preenchidos com base nas marcações no eixo Y no canto esquerdo, e obter um valor aproximado a partir das marcações no lado direito.

Tratamento de Dados no Python

Após as análises, podemos avançar para o tratamento da nossa base de dados. É importante lembrar que, ao lidar com análise de dados, não existe um padrão ou fórmula correta para seguir no tratamento dos dados.

Cada base de dados é única, e cada análise requer considerações específicas sobre quais informações, valores e abordagens utilizar para obter os melhores resultados com base nos objetivos da investigação.

Para nosso exemplo, optaremos por remover as colunas deceaseddate e returndate devido ao elevado número de valores vazios em ambas. Quanto à coluna identichipnumber, removeremos apenas as linhas com dados faltantes, resultando numa perda de 20% da base de dados total.

Para realizar essa remoção, utilizaremos o método drop, passando uma lista com as colunas desejadas para exclusão. Em seguida, empregaremos o método dropna para remover as linhas com valores vazios.

É fundamental primeiro eliminar as colunas vazias e, posteriormente, as linhas, uma vez que se tivéssemos utilizado o método dropna primeiro, correríamos o risco de excluir grande parte da tabela, considerando a quantidade de linhas vazias na coluna deceaseddate.

tabela = tabela.drop(columns=["deceaseddate", "returndate"])
tabela = tabela.dropna()

msno.bar(tabela)
Função bar 2

A partir do gráfico, observamos que todas as colunas agora estão preenchidas, sem valores vazios. Contudo, é importante ressaltar que o número de linhas reduziu de 10.290 para 8.323.

A decisão de realizar esse tipo de filtragem ainda demanda reflexão, considerando a análise que você está desenvolvendo.

Conclusão – Missingno no Python – Tratando Valores Vazios em DataFrames

Nesta aula, apresentei a biblioteca Missingno no Python, demonstrando como ela funciona e como podemos utilizá-la para facilitar a visualização de valores vazios em DataFrames.

Com essa biblioteca, você pode agilizar, simplificar e tornar mais eficiente suas análises de dados, obtendo uma visualização intuitiva da presença de informações e valores vazios em DataFrames.

É fundamental lembrar que, embora a biblioteca Missingno seja uma ferramenta valiosa para a visualização desses valores, ela é apenas um recurso adicional para auxiliar na análise de dados. Antes de decidir excluir ou não linhas e valores, é crucial ponderar sobre o impacto disso na análise que está sendo desenvolvida.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


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