Publicado em 6 de setembro de 2026, às 12:07, por Pedro Nakashima
O pandas é a biblioteca padrão de Python para trabalhar com dados em formato de tabela. Esta introdução ao pandas cobre o essencial do dia a dia: as estruturas Series e DataFrame, como carregar dados de arquivos CSV e Excel, como filtrar e transformar linhas e colunas e como resumir informação com groupby. Os exemplos são curtos e você pode reproduzir cada um no seu próprio ambiente.
O que é o pandas?
O pandas é uma biblioteca de código aberto construída sobre o NumPy que adiciona estruturas de dados rotuladas e ferramentas de análise ao Python. Na prática, ele faz o papel de uma planilha programável: você lê dados de várias fontes, limpa, combina, agrega e exporta — tudo em código versionável e reproduzível, e com desempenho adequado a milhões de linhas.
Instalação e import
pip install pandasPor convenção, o import usa o apelido pd:
import pandas as pdSeries: uma coluna com índice
Uma Series é um vetor unidimensional com um índice (os rótulos das linhas). É a peça básica do pandas.
temperaturas = pd.Series(
[28.1, 30.4, 27.9, 31.2],
index=["seg", "ter", "qua", "qui"],
name="temperatura",
)
temperaturas["ter"] # 30.4
temperaturas.mean() # 29.4
temperaturas[temperaturas > 30] # ter e quiDataFrame: a tabela
Um DataFrame reúne várias Series que compartilham o mesmo índice. São linhas e colunas, como uma planilha ou uma tabela de banco de dados.
df = pd.DataFrame({
"cidade": ["São Paulo", "Rio de Janeiro", "Curitiba", "Recife"],
"populacao_mi": [12.3, 6.7, 1.9, 1.7],
"regiao": ["Sudeste", "Sudeste", "Sul", "Nordeste"],
})Lendo dados de arquivos
Na prática você quase nunca digita os dados à mão. O pandas lê dezenas de formatos com uma linha:
df = pd.read_csv("dados.csv")
df = pd.read_excel("planilha.xlsx", sheet_name="2026")
df = pd.read_parquet("dados.parquet")Parâmetros úteis no read_csv: sep (separador de campos), decimal, encoding, parse_dates e nrows para carregar apenas uma amostra.
Para gravar o resultado do seu trabalho, cada leitor tem um escritor correspondente: df.to_csv("saida.csv", index=False), df.to_excel(...) e df.to_parquet(...). O formato Parquet preserva os tipos das colunas e ocupa bem menos espaço que CSV.
Primeiro diagnóstico dos dados
Antes de analisar, olhe a cara da tabela:
df.head() # primeiras linhas
df.shape # (linhas, colunas)
df.info() # tipo de cada coluna e contagem de nulos
df.describe() # estatísticas das colunas numéricasPara variáveis categóricas, df["regiao"].value_counts() mostra a frequência de cada valor, e df["regiao"].unique() lista os valores distintos. Esse par revela erros de digitação e categorias inesperadas logo no começo da análise.
Selecionar e filtrar
Colunas
df["populacao_mi"] # uma coluna -> Series
df[["cidade", "regiao"]] # várias colunas -> DataFrameLinhas: loc e iloc
df.loc[0] # linha pelo rótulo do índice
df.iloc[0] # linha pela posição
df.loc[df["regiao"] == "Sudeste", ["cidade", "populacao_mi"]]Filtro por condição (boolean indexing)
df[df["populacao_mi"] > 5]
df[(df["regiao"] == "Sudeste") & (df["populacao_mi"] > 10)]Use &, | e ~ (não and / or) e envolva cada condição em parênteses.
Criar e transformar colunas
df["populacao_abs"] = df["populacao_mi"] * 1_000_000
df["porte"] = pd.cut(
df["populacao_mi"],
bins=[0, 2, 5, float("inf")],
labels=["pequeno", "médio", "grande"],
)Agrupar com groupby
O groupby implementa o padrão split-apply-combine: divide as linhas por uma chave, aplica uma função de agregação e junta o resultado.
df.groupby("regiao")["populacao_mi"].sum()
df.groupby("regiao").agg(
n_cidades=("cidade", "count"),
pop_total=("populacao_mi", "sum"),
pop_media=("populacao_mi", "mean"),
)Tratar valores ausentes
df.isna().sum() # nulos por coluna
df.dropna(subset=["populacao_mi"]) # remove linhas sem população
df["regiao"] = df["regiao"].fillna("desconhecida")Perguntas frequentes
Qual a diferença entre Series e DataFrame?
A Series é unidimensional (uma coluna com índice); o DataFrame é bidimensional (várias colunas com o mesmo índice). Cada coluna de um DataFrame é uma Series.
Quando usar loc em vez de iloc?
Use loc para selecionar por rótulo (nome do índice ou da coluna) e iloc para selecionar por posição inteira. Em fatias, loc inclui o limite final; iloc não.
Como ler só uma parte de um arquivo grande?
Passe nrows para limitar as linhas ou usecols para escolher colunas no read_csv. Para processar em blocos, use chunksize, que devolve um iterador de DataFrame.
Pandas ou Polars?
O pandas tem o maior ecossistema e é o padrão de mercado. O Polars costuma ser mais rápido e econômico em memória para volumes grandes. Para aprender os conceitos de dados tabulares, o pandas continua sendo o melhor ponto de partida.
Conclusão
Seriesé uma coluna;DataFrameé a tabela.read_csv,read_exceleread_parquetcarregam os dados;head,infoedescribedão o primeiro diagnóstico.loc/iloce boolean indexing recortam linhas e colunas.groupby+aggresumem os dados por categoria.isna,dropnaefillnacuidam dos valores ausentes.
Para se aprofundar, vale ler o guia 10 minutes to pandas da documentação oficial do pandas e o livro Python for Data Analysis, de Wes McKinney, criador da biblioteca. Aqui no blog, veja também o exemplo com código executável.
Tópicos: #Pandas #Python #AnáliseDeDados #CiênciaDeDados #DataFrame