Data Science | Data Cleaning

“War is ninety percent information”
Napoleão Bonaparte

Felipe Sibuya
Turing Talks
5 min readJun 9, 2019

--

Quando iniciamos os estudos de Data Science, pensamos que a análise de dados ou a implementação de modelos é a parte mais demorada para ser realizada. Na verdade, não é gasto nem 30% do tempo de desenvolvimento de um projeto nessas tarefas. E se eu disser que mais de 60% do tempo é direcionado para simplesmente limpar dados?

A princípio, parece simples o trabalho de manipular e limpar dados. Mas quando começamos a tocar neles, percebemos a complexidade de tratar dados faltantes, dados em diversos formatos, valores muito discrepantes, erros de digitação, diversos encodings, …

Antes de sequer plotar o primeiro gráfico, ou menos ainda escolher entre um Random Forest ou Boosting, é necessário tratar esses problemas comuns de dados. Caso não seja feita uma boa limpeza de dados, seu modelo corre o risco de apresentar falhas, além de problemas de implementação.

Sem mais delongas, hoje no Turing Talks iremos apresentar alguns meios de realizar Data Cleaning.

Entendimento de seus dados

Após obter seus dados, é necessário entender como eles estão organizados. Para realizar tal tarefa, utilizaremos 3 métodos da biblioteca pandas que foram vistos no último Turing Talks: df.head(), df.info() e df.describe(). Esses métodos te permitem obter informações básicas, mas essenciais para realizar nossa tarefa de limpar nossos dados. Por isso, recordaremos rapidamente como usá-los.

.head()

Esse método mostra as 5 primeiras linhas de seu dataset, permitindo um entendimento mais básico de como os dados estão organizados.

Dados da base Titanic

.info()

O objetivo de usar este método é entender quais são os types, quantos dados não nulos há, o nome das colunas, quantas linhas tem nos dados e o quanto de memória é utilizado.

Dados da base Titanic

.describe()

Ao utilizar este método, serão exibidos uma tabela sobre cada coluna, numérica ou de strings, alguns dados estatísticos, como moda, quartis e quantidade de termos. Com estes dados, podemos compreender qual o comportamento de nossos dados, além de entender a sua distribuição.

Dados da base Titanic

Manipulação de Dados Faltantes (Missing Values)

Um problema muito comum em grandes bases de dados é a falta de alguns dados em algumas linhas e colunas. A princípio, caso o número de dados faltantes seja baixo, isso não representa grandes problemas para a utilização de modelos, mas mesmo assim é necessário realizar o tratamento destes.

Existem várias opções para realizar tal operação. Para o Turing Talks de hoje, irei apresentar 2: o completamento (fillna) e a retirada (dropna).

Dados Duplicados

Ao realizar a extração de dados, é muito comum encontrar alguns erros de duplicação de dados. Esses erros podem ocorrer devido à problemas na mineração, falhas na entrada de dados, erros do servidor… Independente da causa desses problemas, é necessário verificar e retirar valores duplicados.

Para realizar tal tarefa, podemos utilizar o método df.drop_duplicates().

Trabalhando com Datas

Datas são essenciais para acompanhar séries temporais, análise de desenvolvimento de países, vendas de uma loja, desempenho da bolsa de valores, … Quando trabalhamos com esse tipo de dado no python, é possível manipular datas com o formato datetime.

Muitas vezes quando iniciamos a leitura das bases de dados, as datas são reconhecidas como strings, devido aos diversos formatos e calendários em que podemos representá-las. Apesar disso, é possível manipular as datas para serem reconhecidas como datetime.

Tratando Colunas

Após extrair os dados, às vezes acabamos coletando muito mais dados que o necessário, ou colunas com nomes codificados ou complicados para o entendimento. Ao invés de pensar em extrair novamente esses dados ou alterá-los no local de extração, podemos realizar tais operações no pandas.

Para demonstrar como retirar uma coluna inteira e como alterar o nome de uma coluna, utilizaremos o dataset Adult.

Mudanças nos Dados

Quando começamos a avaliar as bases de dados, é muito comum encontrar os dados com erros ou em um formato pouco conveniente. Ao invés de pensar em alterar os valores no banco de dados, podemos realizar algumas mudanças diretamente no pandas.

Seja para corrigir erros de digitação mais simples ou para converter uma coluna de Fahrenheit (°F) para Celsius (°C), podemos realizar pequenas operações nas colunas dos DataFrames. Para demonstrar algumas das possibilidades de alteração de valores nas colunas, iremos limpar uma base de dados hipotética de uma pesquisa em uma escola.

Juntando Bases de Dados

Nem todos os dados podem ser encontrados em um único banco de informações. Mas e se você precisar analisar dados de diversos bancos, como fará para ligar eles entre si?

No pandas há duas ferramentas que te permitem ligar DataFrames diferentes, seja adicionando mais linhas ou adicionando mais colunas aos seus dados. Para realizar essas duas operações, são utilizados o df.concat() e o df.merge() em uma base de dados hipotética de uma loja de doces.

Conclusões

Nunca antes geramos tantos dados quanto hoje. Mas antes de analisar e tomar decisões em cima desses, não podemos esquecer que a sua confiabilidade e qualidade é muito mais importante que sua quantidade.

No momento que iniciamos os trabalhos com bases de dados para aplicar IA, sempre devemos nos preocupar com os dados obtidos. Realizar a limpeza deles não é uma opção, é uma obrigação para desenvolver bons algoritmos e ter bons resultados.

Esperamos ter contribuído com o seu aprendizado de Inteligência Artificial com esse pequeno resumo de alguns dos desafios encontrados no trabalho com dados. Se você quiser saber mais, acompanhe o Turing Talks e siga a nossa página no Facebook.

--

--