(Série: Python para Análise de Dados — Parte 2)

Fala, pessoal! Sejam muito bem-vindos de volta à nossa série sobre análise de dados com Python. No nosso primeiro encontro, vimos como dar os primeiros passos com o Pandas, criando DataFrames, filtrando informações e entendendo a estrutura básica das tabelas.

Mas quem já trabalhou com dados na vida real sabe de uma verdade universal: os dados brutos são uma bagunça. Arquivos corrompidos, valores faltando, espaços em branco indesejados e linhas duplicadas aparecem o tempo todo. É por isso que hoje vamos aprender a fazer aquela faxina profissional usando o Pandas.

O Inimigo Oculto: Identificando Valores Ausentes (NaN)

O primeiro passo de qualquer análise séria é descobrir se existem buracos nos seus dados. No Pandas, valores vazios ou nulos são chamados de NaN (Not a Number). Para encontrá-los rapidamente, usamos a combinação de isna() com sum():

import pandas as pd
import numpy as np

# Criando um DataFrame de exemplo com alguns valores ausentes (NaN)
dados = {
    'Produto': ['Notebook', 'Mouse', 'Teclado', 'Monitor', 'Headset'],
    'Preço': [3500.0, 150.0, np.nan, 1200.0, np.nan],
    'Estoque': [10, 25, 15, np.nan, 30]
}

df = pd.DataFrame(dados)

# Contando quantos valores nulos existem em cada coluna
print(df.isna().sum())

O Que Fazer com os Dados Faltantes?

Identificou os buracos? Agora você tem duas escolhas principais: remover as linhas problemáticas ou preencher esses espaços com algum valor inteligente (como a média da coluna ou zero).

# Opção A: Removendo qualquer linha que tenha pelo menos um valor nulo
df_limpo = df.dropna()

# Opção B: Preenchendo valores nulos (por exemplo, preenchendo o preço ausente com 0 ou com a média)
df['Preço'] = df['Preço'].fillna(0)

# Preenchendo o estoque com a média dos valores existentes na coluna
media_estoque = df['Estoque'].mean()
df['Estoque'] = df['Estoque'].fillna(media_estoque)

print(df)

Removendo Linhas Duplicadas

Outro clássico dos erros de extração de dados são as duplicatas. Elas distorcem análises, inflam contagens e estragam médias. Limpar isso no Pandas é extremamente simples:

# Verificando se há linhas duplicadas no DataFrame
print("Linhas duplicadas:", df.duplicated().sum())

# Removendo as duplicatas de vez (o parâmetro inplace=True altera o DataFrame original)
df.drop_duplicates(inplace=True)

Convertendo Tipos de Dados (Data Types)

Às vezes, um número importante (como o preço de um produto ou um ID) é importado como se fosse texto (string) por causa de um caractere especial ou erro de leitura. Se tentarmos fazer uma operação matemática, o Python vai reclamar. Para resolver isso, usamos o método astype() ou funções de conversão:

# Verificando o tipo de cada coluna
print(df.dtypes)

# Convertendo a coluna 'Estoque' de float para inteiro (int)
df['Estoque'] = df['Estoque'].astype(int)

# Convertendo uma coluna de texto para data, caso necessário:
# df['Data_Venda'] = pd.to_datetime(df['Data_Venda'])

Limpando Textos (String Methods)

Dados textuais costumam vir cheios de inconsistências: espaços extras no começo ou fim, mistura de maiúsculas e minúsculas ("São Paulo", "são paulo ", "SÃO PAULO"). O acessor .str do Pandas resolve isso em lote:

# Exemplo de tratamento de strings em uma coluna de cidades
# df['Cidade'] = df['Cidade'].str.strip()          # Remove espaços extras nas pontas
# df['Cidade'] = df['Cidade'].str.capitalize()     # Padroniza a primeira letra maiúscula

Próximos Passos

Com esses comandos de limpeza no bolso, seus dados finalmente estão higienizados, confiáveis e prontos para o próximo nível. No terceiro artigo da nossa série, vamos entrar de cabeça na Análise Exploratória de Dados (EDA) e começar a extração dos primeiros insights reais dos nossos datasets!

Espero que esteja gostando da nossa serie de posts sobre Análise de dados com Python,mas e você! como tem lipado os seus dados? conta aqui nos comentarios e juntos vamos enriquecer o conhecimento! Até a próxima, e bons códigos!