Procurando por valor em uma coluna do DataFrame: Um guia abrangente
Published 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.
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
- Como converter um Pandas DataFrame para uma lista do Python (em inglês)
- Como ordenar um Pandas DataFrame por índice (em inglês)
- Como converter uma série Pandas em um DataFrame (em inglês)
- Como criar uma lista de nomes de colunas em um DataFrame PySpark (em inglês)
- Como anexar um Pandas DataFrame em Python (em inglês)
- Como renomear uma coluna em um DataFrame do Pandas (em inglês)
Perguntas Frequentes
-
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.
-
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. -
Como obter um único valor de um DataFrame?
Para obter um único valor de um DataFrame, você pode usar acessadores como
at
ouiat
. O acessadorat
permite que você especifique o rótulo da linha e o nome da coluna para acessar o valor. Já o acessadoriat
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.