Data Analysis

Selecionando Indices de Linhas Eficientemente com Base em Condições de Colunas no Pandas

Spread the love

Pandas é uma poderosa biblioteca Python para manipulação e análise de dados. Uma tarefa comum envolve selecionar linhas de um DataFrame com base em condições aplicadas a colunas específicas. Este artigo explora três métodos eficientes para recuperar os índices das linhas que atendem a um critério determinado.

Sumário

Indexação Booleana: Uma Abordagem Simples e Eficiente

A indexação booleana oferece uma solução concisa e eficiente para critérios de seleção simples. Ela aproveita diretamente a veracidade de uma condição para filtrar linhas.

Vamos ilustrar com um exemplo:


import pandas as pd

data = {'col1': [1, 2, 3, 4, 5],
        'col2': [6, 7, 8, 9, 10],
        'col3': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)
print(df)

# Obter índices onde 'col1' é maior que 2
indices = df[df['col1'] > 2].index.tolist()
print(indices)  # Saída: [2, 3, 4]

Este código primeiro cria uma máscara booleana (df['col1'] > 2), depois a usa para filtrar o DataFrame e, finalmente, extrai os índices das linhas selecionadas usando .index.tolist().

Aproveitando o np.where() do NumPy para Flexibilidade

A função np.where() do NumPy fornece uma abordagem mais versátil, particularmente benéfica para condições complexas ou múltiplas condições simultâneas.


import numpy as np

indices = np.where(df['col1'] > 2)[0].tolist()
print(indices)  # Saída: [2, 3, 4]

np.where(df['col1'] > 2) retorna uma tupla; o primeiro elemento contém um array de índices que satisfazem a condição. Acessamos este elemento usando [0] e o convertemos para uma lista usando .tolist().

Usando o query() do Pandas para Consultas Complexas Legíveis

O método query() melhora a legibilidade, especialmente para condições intrincadas. Ele permite especificar critérios usando expressões de string.


indices = df.query('col1 > 2').index.tolist()
print(indices)  # Saída: [2, 3, 4]

#Exemplo com múltiplas condições
indices = df.query('col1 > 2 and col2 < 9').index.tolist()
print(indices)  # Saída: [2]

O método query() aceita diretamente uma representação de string da condição, melhorando significativamente a legibilidade, particularmente com condições múltiplas ou complexas.

Conclusão: Cada método recupera efetivamente índices com base em uma condição. A indexação booleana é melhor para condições simples; np.where() lida com cenários mais complexos; e query() se destaca na legibilidade para filtragem avançada.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *