Skip to content

Procurando por valor em uma coluna do DataFrame: Um guia abrangente

Updated on

Como cientista de dados, uma das tarefas mais comuns que você encontrará é procurar por um valor específico em um grande conjunto de dados, particularmente em um Pandas DataFrame. O Pandas DataFrame é uma ferramenta poderosa para manipulação, transformação e análise de dados. No entanto, se você não souber como procurar eficientemente por um valor em uma coluna específica, poderá acabar gastando mais tempo e esforço do que o necessário. Neste guia, exploraremos várias técnicas para procurar por um valor em uma coluna do DataFrame usando o Pandas, com exemplos práticos e trechos de código para ajudá-lo a começar.

Quer criar rapidamente visualizações de dados com Dataframes Pandas em Python sem escrever código?

PyGWalker é uma biblioteca Python para Análise Exploratória de Dados com Visualização. PyGWalker (opens in a new tab) pode simplificar seu fluxo de trabalho de análise e visualização de dados no Jupyter Notebook, transformando seu DataFrame pandas (e DataFrame polares) em uma interface do usuário no estilo Tableau para exploração visual.

PyGWalker para Visualização de Dados (opens in a new tab)

Pandas DataFrame

Antes de mergulharmos na busca por um valor em uma coluna do Pandas DataFrame, vamos primeiro entender melhor o que é um Pandas DataFrame. Um Pandas DataFrame é uma estrutura de dados tabular de dimensão bidimensional e mutável com eixos etiquetados (linhas e colunas). É semelhante a uma planilha ou a uma tabela SQL, e é uma das estruturas de dados mais comumente usadas para análise e manipulação de dados em Python. As linhas e colunas têm rótulos exclusivos, que podem ser usados para acessar elementos individuais no DataFrame.

Aqui está um exemplo de criação de um Pandas DataFrame usando um dicionário:

import pandas as pd
 
data = {'Nome': ['John', 'Emma', 'Peter', 'David', 'Sophie'],
        'Idade': [27, 21, 24, 30, 29],
        'Gênero': ['Masculino', 'Feminino', 'Masculino', 'Masculino', 'Feminino'],
        'Cidade': ['Nova York', 'Londres', 'Paris', 'Tóquio', 'Rio de Janeiro']}
 
df = pd.DataFrame(data)
 
print(df)

Output:

     Nome  Idade  Gênero             Cidade
0    John   27    Masculino         Nova York
1    Emma   21  Feminino           Londres
2   Peter   24    Masculino            Paris
3   David   30    Masculino            Tóquio
4  Sophie   29  Feminino  Rio de Janeiro

Neste exemplo, criamos um Pandas DataFrame com quatro colunas, a saber 'Nome', 'Idade', 'Gênero' e 'Cidade'. As linhas são rotuladas com inteiros a partir de 0. Podemos acessar colunas e linhas individuais usando vários métodos, como indexação, fatiamento e indexação booleana.

Procurando por um valor em uma coluna do DataFrame

Agora, digamos que queremos procurar por um valor específico na coluna 'Idade' do Pandas DataFrame acima. Podemos usar o seguinte código para alcançar isso:

valor = 27
 
resultado = df[df['Idade'] == valor]
 
print(resultado)

Output:

   Nome  Idade Gênero      Cidade
0  John   27   Masculino  Nova York

Neste exemplo, atribuímos o valor 27 a uma variável chamada 'valor'. Então, usamos a indexação booleana para selecionar apenas as linhas em que a coluna 'Idade' corresponde ao valor 27. Finalmente, imprimimos o DataFrame resultante, que contém apenas uma linha em que o valor da coluna 'Idade' é 27.

Também podemos usar outros operadores booleanos como >, <, >=, <= e != para procurar por valores em uma coluna do DataFrame. Por exemplo, para pesquisar todas as linhas em que a coluna 'Idade' é maior ou igual a 25, podemos usar o seguinte código:

resultado = df[df['Idade'] >= 25]
 
print(resultado)

Output:

     Nome  Idade Gênero             Cidade
0    John   27   Masculino         Nova York
3   David   30   Masculino            Tóquio
4  Sophie   29   Feminino  Rio de Janeiro

Este código seleciona e imprime todas as linhas em que a coluna 'Idade' é maior ou igual a 25.Selecione apenas as linhas em que a coluna 'Age' é maior ou igual a 25.

Também podemos usar o método 'isin()' para buscar por múltiplos valores em uma coluna do DataFrame. Por exemplo, para buscar por todas as linhas em que a coluna 'City' é 'Paris' ou 'Tokyo', podemos utilizar o seguinte código:

cidades = ['Paris', 'Tokyo']
 
resultado = df[df['City'].isin(cidades)]
 
print(resultado)

Saída:

    Name  Age Gender   City
2  Peter   24   Male  Paris
3  David   30   Male  Tokyo

Este código seleciona apenas as linhas em que a coluna 'City' é 'Paris' ou 'Tokyo'.

Vale ressaltar que os métodos mencionados não modificam o DataFrame original, em vez disso, eles criam uma cópia do DataFrame que satisfaz os critérios de busca.

Melhorando a performance de busca

Quando trabalhamos com grandes conjuntos de dados, a busca por valores em uma coluna do DataFrame pode ser uma tarefa demorada. Para melhorar a performance de busca, podemos utilizar o método 'loc[]', que permite a seleção de colunas e linhas específicas com base em seus rótulos. Ao usarmos esse método, podemos evitar a busca em todo o DataFrame e focar somente nas linhas que satisfaçam nossos critérios de busca.

Por exemplo, digamos que queremos buscar pelo valor 27 na coluna 'Age' de um grande DataFrame com milhões de linhas. Podemos utilizar o seguinte código:

valor = 27
 
resultado = df.loc[df['Age'] == valor]
 
print(resultado)

Saída:

   Name  Age Gender      City
0  John   27   Male  New York

Neste exemplo, utilizamos o método 'loc[]' para buscar somente as linhas em que a coluna 'Age' é igual a 27. Esse método é muito mais rápido do que usar a indexação booleana no DataFrame inteiro, pois ele opera somente nas linhas que satisfaçam os critérios de busca.

Outra forma de melhorar a performance de busca é ordenar o DataFrame pela coluna de interesse e, em seguida, utilizar a busca binária para procurar pelo valor. Para ordenar o DataFrame pela coluna 'Age', podemos utilizar o seguinte código:

df.sort_values(by='Age', inplace=True)
 
print(df)

Saída:

     Name  Age  Gender             City
1    Emma   21  Female           London
2   Peter   24    Male            Paris
0    John   27    Male         New York
4  Sophie   29  Female  Rio de Janeiro
3   David   30    Male            Tokyo

Este código ordena o DataFrame pela coluna 'Age' em ordem crescente. Em seguida, podemos utilizar o método 'searchsorted()' para realizar uma busca binária na coluna 'Age' em busca do valor desejado. Aqui está um exemplo:

valor = 27
 
resultado = df.iloc[df['Age'].searchsorted(valor)]
 
print(resultado)

Saída:

Name         Emma
Age            21
Gender     Female
City       London
Name: 1, dtype: object

Neste exemplo, utilizamos o método 'searchsorted()' para buscar pelo valor 27 na coluna 'Age'. Esse método retorna o índice do valor se ele existir na coluna ou o índice do próximo valor mais alto, caso ele não exista. Em seguida, utilizamos o método 'iloc[]' para recuperar a linha com o índice especificado.

Conclusão

A busca por um valor em uma coluna do DataFrame é uma tarefa comum na análise e manipulação de dados, especialmente no Pandas DataFrame. Neste guia, exploramos várias técnicas para buscar por um valor em uma coluna do DataFrame utilizando Pandas, com exemplos práticos e trechos de código para ajudá-lo a começar. Também discutimos formas de melhorar a performance de busca, como utilizar o método 'loc[]' ou realizar busca binária em um DataFrame ordenado. Com essas técnicas, você pode extrair os dados que precisa com facilidade, precisão e rapidez.

Links

Perguntas Frequentes

  1. Como pesquisar por um valor específico em uma coluna de um DataFrame?

    Para pesquisar por um valor específico em uma coluna de um DataFrame, você pode usar a indexação booleana. Crie uma condição booleana comparando os valores da coluna com o valor desejado e filtre o DataFrame usando essa condição. O resultado será um DataFrame contendo apenas as linhas em que os valores da coluna correspondem ao valor desejado.

  2. Como obter um valor específico de uma coluna no Pandas?

    Para obter um valor específico de uma coluna no Pandas, você pode usar o operador de indexação []. Especifique o nome da coluna entre colchetes e, opcionalmente, especifique o índice da linha desejada. O valor retornado será o valor individual da coluna.

  3. Como obter um único valor de um DataFrame?

    Para obter um único valor de um DataFrame, você pode usar acessadores como at ou iat. O acessador at permite que você especifique o rótulo da linha e o nome da coluna para acessar o valor. Já o acessador iat permite que você especifique o índice da linha e o índice da coluna para acessar o valor. Esses acessadores permitem obter um valor único do DataFrame de forma rápida e eficiente.