Como Buscar Facilmente Valores em Colunas em um DataFrame do Pandas
Updated on
Buscar valores em uma coluna de um DataFrame do Pandas é uma operação fundamental para filtrar, limpar e analisar dados. Pandas oferece várias maneiras poderosas de fazer buscas — incluindo indexação booleana, isin(), query() e operações de string — que tornam essa tarefa rápida e intuitiva.
Este guia atualizado cobre as técnicas mais úteis e modernas para buscar valores em um DataFrame, com exemplos que você pode aplicar diretamente em fluxos de trabalho reais.
Quer criar rapidamente visualizações de dados a partir de DataFrames do Pandas sem escrever código?
PyGWalker transforma seu DataFrame em uma interface interativa ao estilo Tableau dentro do Jupyter Notebook.
PyGWalker no GitHub (opens in a new tab)
Noções Básicas de DataFrame do Pandas
Um DataFrame do Pandas é uma estrutura tabular bidimensional com linhas e colunas rotuladas. Aqui está um exemplo simples:
import pandas as pd
data = {
'Name': ['John', 'Emma', 'Peter', 'David', 'Sophie'],
'Age': [27, 21, 24, 30, 29],
'Gender': ['Male', 'Female', 'Male', 'Male', 'Female'],
'City': ['New York', 'London', 'Paris', 'Tokyo', 'Rio de Janeiro']
}
df = pd.DataFrame(data)
print(df)Saída:
Name Age Gender City
0 John 27 Male New York
1 Emma 21 Female London
2 Peter 24 Male Paris
3 David 30 Male Tokyo
4 Sophie 29 Female Rio de JaneiroBuscando Valores em uma Coluna de DataFrame
1. Buscar por Igualdade Exata (Indexação Booleana)
result = df[df['Age'] == 27]
print(result)Saída:
Name Age Gender City
0 John 27 Male New YorkVocê pode usar qualquer operador de comparação:
| Operador | Significado |
|---|---|
== | igual |
!= | diferente |
> / < | maior / menor |
>= / <= | maior ou igual / menor ou igual |
Exemplo: encontrar linhas em que Age ≥ 25
df[df['Age'] >= 25]2. Buscar Múltiplos Valores Usando isin()
cities = ['Paris', 'Tokyo']
df[df['City'].isin(cities)]Saída:
Name Age Gender City
2 Peter 24 Male Paris
3 David 30 Male TokyoUse ~df['col'].isin() para excluir valores.
3. Buscar Usando query() (Legível e Rápido)
query() permite filtrar linhas usando uma sintaxe semelhante a SQL — ótimo para legibilidade.
df.query("Age == 27")Ou múltiplas condições:
df.query("Age > 25 and Gender == 'Female'")Isso geralmente resulta em código mais limpo do que indexação booleana aninhada.
4. Buscar Padrões em Strings (str.contains())
Útil para filtrar colunas textuais.
Contém um substring
df[df['City'].str.contains('on', case=False, na=False)]Começa ou termina com
df[df['Name'].str.startswith('J')]
df[df['City'].str.endswith('o')]5. Buscar Valores Ausentes / Não Ausentes
df[df['City'].isna()] # valores ausentes
df[df['City'].notna()] # valores não ausentes6. Buscar em Múltiplas Colunas
Encontrar linhas em que qualquer coluna corresponda a um valor:
df[df.eq('Male').any(axis=1)]Encontrar linhas em que todas as condições sejam satisfeitas:
df[(df['Gender'] == 'Female') & (df['Age'] > 25)]Dicas de Performance (Realistas e Precisas)
Algumas dicas de performance foram mal interpretadas em tutoriais antigos.
Aqui está uma orientação mais precisa:
✔ 1. Converta colunas para category se tiverem muitos valores repetidos
Isso acelera comparações:
df['City'] = df['City'].astype('category')✔ 2. Use arrays do NumPy para conjuntos de dados muito grandes
import numpy as np
ages = df['Age'].to_numpy()
df[ages == 27]✔ 3. Evite apply() para buscas
Operações vetorizadas (indexação booleana, isin(), query()) são sempre mais rápidas.
❌ Removido: “.loc[] é mais rápido que indexação booleana”
Isso é incorreto — elas se comportam da mesma forma internamente.
.loc[] é para seleção baseada em rótulos, não para ganho de velocidade.
⚠ Sobre searchsorted()
searchsorted() só funciona corretamente se a coluna estiver ordenada e não confirma que o valor existe.
Por exemplo:
df_sorted = df.sort_values('Age')
idx = df_sorted['Age'].searchsorted(27)Isso encontra a posição de inserção — não necessariamente a linha com Age = 27.
Use apenas em fluxos de trabalho avançados.
Conclusão
Buscar valores em uma coluna do Pandas é essencial para exploração e limpeza de dados. Pandas oferece várias maneiras eficientes de fazer buscas:
- Indexação booleana para correspondências exatas
isin()para múltiplos valoresquery()para filtragem limpa, ao estilo SQL- Busca em strings com
str.contains() - Filtro de valores ausentes
- Filtragem em múltiplas colunas
Esses métodos ajudam você a extrair exatamente os dados de que precisa de forma rápida, precisa e organizada.
Links
- Como Converter um DataFrame do Pandas em uma Lista em Python
- Como Ordenar um DataFrame do Pandas pelo Índice
- Como Converter uma Series do Pandas em DataFrame
- Como Criar uma Lista de Nomes de Colunas em um DataFrame do PySpark
- Como Fazer Append em um DataFrame do Pandas em Python
- Como Renomear uma Coluna em um DataFrame do Pandas
Perguntas Frequentes
-
Como faço para buscar um valor específico em uma coluna de DataFrame?
Use indexação booleana:df[df['Age'] == 27] -
Como recupero um valor específico de uma coluna?
Use o índice da linha + nome da coluna:df['Age'][0] -
Como obter um único valor de forma rápida?
Use.atou.iat:df.at[0, 'Age'] df.iat[0, 1]
;
