1. Por que isso é necessário?
Imagina que você é um engenheiro em uma fábrica de dados. Sua tarefa é analisar e organizar a matéria-prima (os dados) para obter um produto final (insights, relatórios). Sem limpeza e formatação, seus dados ficarão como um monte de peças espalhadas que é difícil juntar.
Dados limpos e formatados não são apenas uma questão de estética e legibilidade, mas também uma condição importante para análises corretas e criação de modelos. Dados mal processados podem levar a conclusões erradas, e ninguém quer estar na situação de perceber no final do expediente que calculou a idade média dos funcionários em fragmentos de dados ao invés de anos.
Tarefas principais de formatação
Antes de começar a codificar, vamos analisar os problemas que queremos evitar e resolver com a formatação:
- Remoção de linhas e colunas vazias: Elas são como bolsos vazios — não têm utilidade, mas podem confundir facilmente.
- Remoção de duplicatas: Registros duplicados adicionam ruído aos nossos dados.
- Preenchimento de valores ausentes: É como buracos no queijo, que às vezes vale a pena preencher com algo gostoso.
- Conversão de tipos de dados: É importante garantir que a idade seja um número, e não texto. Pra não confundir a idade real com "25 anos de experiência", escrito entre aspas.
2. Ferramentas para limpeza e formatação de dados
Agora que sabemos por que isso é necessário, vamos dar uma olhada nas ferramentas que nos ajudarão nisso, como um canivete suíço numa trilha:
-
Remoção de valores vazios:
dropna()
-
Trabalhar com duplicatas:
duplicated()
edrop_duplicates()
- Preenchimento de faltas:
fillna()
-
Conversão de tipos de dados:
astype()
Remoção de valores vazios
Valores vazios são aquelas coisas que sempre aparecem na hora errada. Com
dropna()
podemos nos livrar deles como de meias velhas que não servem mais. Vamos dar uma olhada no exemplo:
import pandas as pd
# Criamos um DataFrame com valores ausentes
data = {'Nome': ['Anna', 'Ivan', None, 'Maria'],
'Idade': [29, None, 34, 23],
'Cidade': ['Moscou', 'São Petersburgo', 'Novosibirsk', None]}
df = pd.DataFrame(data)
# Removemos as linhas com quaisquer valores NaN
cleaned_df = df.dropna()
print(cleaned_df)
Esse código irá remover todas as linhas contendo pelo menos um valor ausente.
Trabalhar com duplicatas
Às vezes, seus dados contêm duplicatas, como em um jogo de "Encontre as diferenças" onde não há diferenças. Podemos remover esses registros com drop_duplicates()
.
# Criamos um DataFrame com duplicatas
data = {'Nome': ['Anna', 'Ivan', 'Anna', 'Maria'],
'Idade': [29, 34, 29, 23]}
df = pd.DataFrame(data)
# Removemos duplicatas
unique_df = df.drop_duplicates()
print(unique_df)
Preenchimento de faltas
É possível preencher valores ausentes de várias maneiras, como com o valor médio ou mesmo um valor fixo. O método fillna()
irá te ajudar nisso:
# Preenchemos as faltas em 'Idade' com o valor médio da coluna
df['Idade'] = df['Idade'].fillna(df['Idade'].mean())
print(df)
Conversão de tipos de dados
Conversão de dados às vezes é essencial para evitar cair na armadilha de valores textuais onde se espera números:
# Convertendo o tipo de dados da coluna 'Idade' para inteiro
df['Idade'] = df['Idade'].astype(int)
print(df)
3. Aplicação prática: limpeza de um conjunto de dados real
Vamos tentar limpar e formatar um conjunto de dados real para relatórios. Por exemplo, vamos usar um arquivo Excel hipotético com informações de vendas.
# Carregando dados de um Excel
filename = "sales_data.xlsx"
df = pd.read_excel(filename)
# Removendo linhas com faltas em qualquer coluna
df = df.dropna()
# Removendo registros duplicados
df = df.drop_duplicates()
# Preenchendo valores ausentes na coluna de vendas com o valor médio dessa coluna
df['Vendas'] = df['Vendas'].fillna(df['Vendas'].mean())
# Conversão de tipos de dados
df['Código do Produto'] = df['Código do Produto'].astype(str)
# Salvando os dados formatados novamente no Excel
df.to_excel("cleaned_sales_data.xlsx", index=False)
Como resultado, conseguimos um arquivo Excel limpo e organizado, pronto para análise e produção de relatórios.
4. Erros comuns ao limpar dados
Assim como ao consertar eletrônicos, com dados sempre dá pra confundir algo, então aqui vão alguns erros comuns que você deve evitar.
Remover informações úteis junto com duplicatas. Às vezes, duplicatas podem ser um sinal de erro nos dados, e vale a pena investigar sua causa. Não confunda os tipos de dados. Às vezes parece que a conversão para outro formato é simples, mas isso pode levar à perda de dados se não verificar se a conversão é adequada.
Seguindo essas dicas e executando os passos propostos, você poderá trabalhar com dados facilmente e com prazer, mesmo que eles inicialmente pareçam o pesadelo de um analista. E lembre-se, dados, assim como seu código, devem ser limpos!
GO TO FULL VERSION