Skip to content

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)

PyGWalker for Data visualization (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 Janeiro

Buscando 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 York

Você pode usar qualquer operador de comparação:

OperadorSignificado
==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  Tokyo

Use ~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 ausentes

6. 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 valores
  • query() 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


Perguntas Frequentes

  1. Como faço para buscar um valor específico em uma coluna de DataFrame?
    Use indexação booleana:

    df[df['Age'] == 27]
  2. Como recupero um valor específico de uma coluna?
    Use o índice da linha + nome da coluna:

    df['Age'][0]
  3. Como obter um único valor de forma rápida?
    Use .at ou .iat:

    df.at[0, 'Age']
    df.iat[0, 1]

;