Por Que Pandas?

Se você trabalha com dados em Python, Pandas é simplesmente indispensável. Esta biblioteca oferece estruturas de dados poderosas e ferramentas de análise que tornam a manipulação de dados muito mais simples e intuitiva.

O Que é Pandas?

Pandas é uma biblioteca open-source que fornece estruturas de dados de alto desempenho e fáceis de usar, especialmente para trabalhar com dados tabulares (tipo planilhas) e séries temporais.

Estruturas Básicas

DataFrame

O DataFrame é a estrutura mais importante do Pandas - pense nele como uma tabela do Excel, mas muito mais poderosa.

import pandas as pd

# Criando um DataFrame simples
dados = {
    'nome': ['Ana', 'Bruno', 'Carlos', 'Diana'],
    'idade': [25, 30, 35, 28],
    'cidade': ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Curitiba'],
    'salario': [5000, 6000, 7000, 5500]
}

df = pd.DataFrame(dados)
print(df)

Series

Uma Series é uma coluna única de dados, semelhante a um array ou lista, mas com um índice associado.

# Acessando uma coluna como Series
idades = df['idade']
print(type(idades))  # pandas.core.series.Series

Operações Essenciais

1. Leitura de Dados

# Ler CSV
df = pd.read_csv('dados.csv')

# Ler Excel
df = pd.read_excel('dados.xlsx')

# Ler JSON
df = pd.read_json('dados.json')

# Ler de URL
url = 'https://exemplo.com/dados.csv'
df = pd.read_csv(url)

2. Exploração Inicial

# Primeiras linhas
print(df.head())

# Últimas linhas
print(df.tail())

# Informações sobre o DataFrame
print(df.info())

# Estatísticas descritivas
print(df.describe())

# Verificar valores nulos
print(df.isnull().sum())

3. Seleção de Dados

# Selecionar uma coluna
nomes = df['nome']

# Selecionar múltiplas colunas
subset = df[['nome', 'idade']]

# Filtrar linhas
maiores_30 = df[df['idade'] > 30]

# Filtros múltiplos
sp_maiores_30 = df[(df['cidade'] == 'São Paulo') & (df['idade'] > 30)]

4. Manipulação de Dados

# Adicionar nova coluna
df['salario_anual'] = df['salario'] * 12

# Remover coluna
df = df.drop('cidade', axis=1)

# Ordenar dados
df_ordenado = df.sort_values('salario', ascending=False)

# Agrupar e agregar
media_por_cidade = df.groupby('cidade')['salario'].mean()

Limpeza de Dados

Lidando com Valores Nulos

# Remover linhas com valores nulos
df_limpo = df.dropna()

# Preencher valores nulos
df['idade'].fillna(df['idade'].mean(), inplace=True)

# Substituir valores específicos
df['cidade'].replace('Rio de Janeiro', 'RJ', inplace=True)

Conversão de Tipos

# Converter para numérico
df['idade'] = pd.to_numeric(df['idade'], errors='coerce')

# Converter para datetime
df['data'] = pd.to_datetime(df['data'])

# Converter para categoria (economiza memória)
df['cidade'] = df['cidade'].astype('category')

Operações Avançadas

Merge e Join

# Dados de dois DataFrames
clientes = pd.DataFrame({
    'id': [1, 2, 3],
    'nome': ['Ana', 'Bruno', 'Carlos']
})

pedidos = pd.DataFrame({
    'id': [1, 1, 2],
    'produto': ['Livro', 'Caderno', 'Caneta'],
    'valor': [30, 15, 5]
})

# Merge (similar ao JOIN do SQL)
resultado = pd.merge(clientes, pedidos, on='id')

Pivot Tables

# Criar tabela pivot
pivot = df.pivot_table(
    values='salario',
    index='cidade',
    columns='departamento',
    aggfunc='mean'
)

Apply - Funções Customizadas

# Aplicar função a uma coluna
df['nome_maiusculo'] = df['nome'].apply(lambda x: x.upper())

# Aplicar função a múltiplas colunas
def calcular_bonus(row):
    if row['salario'] > 6000:
        return row['salario'] * 0.1
    return row['salario'] * 0.05

df['bonus'] = df.apply(calcular_bonus, axis=1)

Análise de Dados com Pandas

Estatísticas Básicas

# Média, mediana, moda
print(df['salario'].mean())
print(df['salario'].median())
print(df['salario'].mode())

# Correlação entre colunas
correlacao = df[['idade', 'salario']].corr()

Agregações

# Múltiplas agregações
resumo = df.groupby('cidade').agg({
    'salario': ['mean', 'min', 'max'],
    'idade': 'mean'
})

Dicas de Performance

1. Use Categorias para Dados Repetitivos

# Economiza muita memória
df['categoria'] = df['categoria'].astype('category')

2. Leia Apenas Colunas Necessárias

# Mais rápido e usa menos memória
df = pd.read_csv('dados.csv', usecols=['nome', 'idade', 'salario'])

3. Use Chunks para Arquivos Grandes

# Processar em pedaços
for chunk in pd.read_csv('dados_grandes.csv', chunksize=10000):
    # Processar cada chunk
    processo(chunk)

Exportação de Dados

# Salvar em CSV
df.to_csv('resultado.csv', index=False)

# Salvar em Excel
df.to_excel('resultado.xlsx', index=False)

# Salvar em JSON
df.to_json('resultado.json', orient='records')

Conclusão

Pandas é uma ferramenta poderosa que simplifica drasticamente o trabalho com dados em Python. Dominar Pandas é essencial para qualquer pessoa que trabalhe com data science, análise de dados ou machine learning.

Próximos passos:

  • Pratique com datasets reais (Kaggle é ótimo para isso)
  • Combine Pandas com Matplotlib/Seaborn para visualizações
  • Explore operações com séries temporais
  • Aprenda sobre otimização de memória

Continue praticando e logo você estará manipulando dados como um profissional!