Blog

Postado em em 7 de novembro de 2022

Limpeza de Dados em um Dataset Real – Dados Do Titanic

Fala Impressionadores! Na aula de hoje nós vamos falar sobre limpeza de dados em um dataset real, usando os dados do Titanic!

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

Limpeza De Dados em um Dataset Real

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

O é a limpeza de dados?

Fazer a limpeza de dados é garantir que todos os valores que estão sendo mantidos em um banco de dados são valores pertinentes e importantes para que o resultado seja assertivo.

Nessa aula vou usar um Dataset real do Titanic para explicar para vocês uma das formas de fazer essa limpeza.

Abaixo eu te mostro as informações dessa base de dados para que possamos fazer a limpeza de dados em um dataset real, ou seja, vamos fazer a limpeza de dados em uma base de dados real!

Limpeza De Dados
Limpeza de dados em um dataset real

Temos o arquivo da aula para baixar e te ajudar a acompanhar a explicação!

Para começar, vamos usar o Dataset do Titanic, você pode encontrá-lo na parte de competição do Kaggle.

Se tiver dúvidas sobre Dataset Desbalanceados ou quer sair do zero em ciências de dados vou deixar esses links! Vão te ajudar muito!

Voltando a explicação!

Peguei a base Train.csv e fiz o download do Kaggle, coloquei na mesma pasta do arquivo que vamos analisar.

Isso facilita na hora de escrever os códigos!

É importante lembrar que a limpeza de dados pode ser feita de várias formas diferentes.

Nessa aula pretendo mostrar uma delas em um passo a passo simples.

Primeiro temos que importar o Pandas.

Pandas.
Pandas.

Vamos fazer a importação e visualização da base.

Limpeza De Dados

Fazendo isso eu já posso ver a quantidade de linhas, quantidades de colunas e quais as informações que vamos tratar.

A partir daí vamos destrinchar essas informações, por exemplo:

Qual o formato dessa base? Qual o número de linhas e de colunas?

Shape.
Shape.

Quais as informações da base?

Informações da base.
Informações da base.

Temos todas as explicações do que são essas informações da tabela acima na documentação que fica disponível no Kaggle.

Coloquei essa informação da documentação na primeira foto do post, vou colocar aqui novamente, ok!

Essas informações da documentação nos ajudam a entender os dados, se eles são números inteiros, se é um texto ou número flutuante (float que seria um número decimal).

Todas essas informações são importantes para a nossa limpeza de dados em um dataset real.

Dados do Titanic.
Dados do Titanic.

Utilizando o Describe:

Qual o resumo estatístico?

Resumo estatístico.
Resumo estatístico.

Repare que no describe todos os números do PassengerID estão muito bem distribuídos.

Será que cada passageiro tem seu próprio ID?

Perceba também que na idade existe um padrão.

O trabalho do cientista de dados é descobrir esses padrões e descartar informações insignificantes ou acrescentar informações importantes.

Tudo que não ajuda no objetivo da análise deve ser descartado para não atrapalhar o resultado.

Também podemos verificar se existem valores únicos em cada coluna, isso se chama cardinalidade.

Se o valor está em todas as colunas, provavelmente ele não fará diferença na análise e podemos retirá-lo.

Cardinalidade.
Cardinalidade.

O mesmo serve para valores vazios.

Valores vazios.
Valores vazios.

Tudo isso faz parte de uma análise exploratória dos dados, temos uma aula mais a fundo sobre isso, se quiser ver clique no link.

Todos esses passos são extremamente necessários.

Feito isso, vamos começar a limpar os nossos dados! Começando pelos valores vazios, pois algumas pessoas não têm informação de embarque.

Podemos usar uma fórmula que vai verificar quem são essas pessoas buscando informações sobre elas.

Embarque.
Embarque.

Obs. Uma vantagem dessa base do Titanic é que copiando o nome da pessoa você pode colar no Google e buscar mais informações.

Isso significa que se estiver faltando informação ou se a informação não estiver coerente podemos verificar, corrigir, retirar ou acrescentar uma informação pertinente que não havia sido colocada de forma correta.

Como fazemos esse tratamento?

Podemos usar o (.loc), ele nos permite buscar informações ou colunas específicas e substituí-la conforme a necessidade.

Loc.
Loc.

Nesse exemplo colocamos o “s” que corresponde ao Embarked Southampton como está descrito na nossa documentação.

Posso, copiando a mesma linha de código acima, trocar Embarked por age e verificar a idade na minha base de dados.

Limpeza De Dados
Age.

Observe que temos muitas pessoas com a idade vazia, observando isso você pode pesquisar e completar essas falhas de informação na base de dados ou decidir que não são significantes dependendo do seu objetivo.

A questão principal é ir destrinchando os dados e deixando apenas informações pertinentes, importantes, que vão deixar seu resultado mais confiável.

Se o volume de informação para ser trocado ou retirado for muito grande, vale a pena considerar com o dono do projeto separar alguém para esta demanda ou fazer um robô que cumpra com esse objetivo.

Podemos verificar a coerência das informações de várias maneiras:

Describe no formato de uma lista.

Limpeza De Dados
Lista.

Ou com o Plot.box em forma de gráfico.

Limpeza De Dados
Plot.box.

E Plot.hist outra forma de gráfico:

Limpeza De Dados
Plot.hist.

Escolha a forma que for mais conveniente para você poder analisar melhor o dado.

Nos casos acima a tabela e os gráficos parecem coerentes.

As idades das pessoas estão entre 4 meses e 80 anos, números possíveis e perfeitamente normais para “idade”. Não existe uma discrepância nas informações.

Se houvesse um ponto muito fora da curva poderia se tornar foco da nossa atenção e indício de um possível erro a ser pesquisado e corrigido.

A média é de 28 anos o que pode nos ajudar, caso os dados de algumas pessoas estejam incompletos podemos usar a média sabendo que ela não irá interferir na análise porque são boas aproximações.

Podemos nos perguntar também:

Será que existe distinção de idade das pessoas dependendo da classe?

Para isso podemos usar o groupby e separar por classe e por idade, escolhendo o resultado como média ou mediana.

Groupby.
Groupby.

Podemos perceber que a diferença existe, a mediana das idades muda entre as classes.

Se acrescentarmos o gênero vamos ver nessa base uma diferença ainda maior.

Acrescentando informações.
Acrescentando informações.

Você pode incluir na análise quantas informações julgar necessária para observar uma característica daquela base de dados.

Tome cuidado para a análise não ser tão rasa a ponto de dar um resultado impreciso ou tão específica que só vai funcionar para uma única situação de análise.

Tentem agrupar de forma que faça sentido e que você tenha uma quantidade de registros suficiente para ter uma validade estatística.

Ótimo. Dito isso, vamos agora utilizar o Transform do Pandas para armazenar esses valores.

Transform.
Transform.

O objetivo do Transform é dar um resultado para cada uma das linhas.

Copie o código acima e troque o final por Transform com a função de agregação que nós queremos.

Transform aplicação.
Transform aplicação.

Fazendo isso ele faz a função de agregação de forma direta das informações referente a mediana das idades.

Limpeza De Dados
Agregando a mediana.

Podemos também pegar esses valores usando o Fillna:

Fazemos isso criando uma coluna que vai pegar os valores vazios de age e substituir pela mediana do Groupby, pelos valores que fazem mais sentido.

Se o Age não for vazio, ele retorna o próprio valor do Age.

Nós só conseguimos fazer isso usando o Transform como no código abaixo.

Fillna.
Fillna.

Executando esse código nós já vamos ter o tratamento dessa base!

Se voltarmos nas idades vamos ver que já não temos valores nulos!

Outro exemplo:

Podemos analisar as cabines, veja que os valores gerados pela companhia podem não ter importância na nossa análise.

Vamos retirar esses dados usando o Drop.

Limpeza De Dados
Cabine.

Saber se a informação será ou não retirada depende do que você busca no projeto.

Neste exemplo a informação da cabine não faz sentido, então estou mostrando como retirar este valor.

Usando esse passo a passo podemos fazer várias avaliações como Outliers (Valores atípicos), verificando e pesquisando se são ou não absurdos e se precisam de tratamento na base.

Analisando a base final:

Agora podemos verificar novamente nossa cardinalidade.

Cardinalidade.
Cardinalidade.

Nessa tabela se repetem os valores de PassengerID, Name e Ticket.

Do que nos adianta ter um valor que só representa o número de linhas, por exemplo?

Note que o Ticket aparece como um valor muito impreciso.

Podemos retirar o Ticket e o PassengerID usando o Drop.

Drop.
Drop.

Já o nome pode ser uma informação relevante para alguma pesquisa que pode ser realizada pela empresa, por isso vamos manter o nome.

Cada dado deve ser tratado separadamente, esse trabalho que pode ser repetitivo é extremamente importante para nossa assertividade.

Essa parte de limpeza de dados em um dataset real é muito comum para que você consiga de fato tratar os dados antes de começar a fazer suas análises.

Esse é um passo MUITO IMPORTANTE para que você evite inserir informações erradas ou informações desnecessárias dentro da sua análise!

Pronto! Terminamos o tratamento dessa base!

Conclusão – Limpeza De Dados em um Dataset Real

O objetivo desta aula foi mostrar como fazer uma limpeza de dados em um dataset real.

Conseguimos identificar e tratar valores nulos, verificar média e mediana.

Fazer substituições importantes dos dados de modo inteligente.

Excluir e acrescentar informações que vão tornar a análise de dados mais precisa.

Eu fico por aqui! Espero ter ajudado!

Até breve,

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 ter acesso a um Minicurso de Finanças no Excel de forma 100% gratuita? Preencha seu e-mail abaixo!