Pandas: A Biblioteca Essencial para Análise de Dados em Python
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!