Pandas é uma poderosa biblioteca Python para manipulação e análise de dados. Filtrar linhas de DataFrame com base em valores de coluna é uma tarefa fundamental no processamento de dados. Este artigo explora várias técnicas para filtrar DataFrames Pandas de forma eficiente, cobrindo cenários simples a complexos.
Sumário
- Filtragem Básica: Coluna Única, Condição Única
- Negação: Selecionando Linhas Que Não Correspondem a uma Condição
- Comparações Numéricas: Maior Que, Menor Que, etc.
- Combinando Condições: Operações AND e OR
- Filtragem Avançada: Múltiplas Colunas e Lógica Complexa
- Filtragem Eficiente com
isin()
Filtragem Básica: Coluna Única, Condição Única
A forma mais simples de filtragem envolve selecionar linhas onde uma coluna específica corresponde a um valor particular. Isso é alcançado usando indexação booleana.
import pandas as pd
# DataFrame de exemplo
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'City': ['Nova York', 'Londres', 'Paris', 'Tóquio']}
df = pd.DataFrame(data)
# Seleciona linhas onde City é 'Londres'
london_residents = df[df['City'] == 'Londres']
print(london_residents)
Este código cria uma máscara booleana (df['City'] == 'Londres'
) que é True
onde a coluna ‘City’ é ‘Londres’ e False
caso contrário. Esta máscara é então usada para indexar o DataFrame, selecionando apenas as linhas onde a máscara é True
.
Negação: Selecionando Linhas Que Não Correspondem a uma Condição
Para selecionar linhas onde uma coluna não contém um valor específico, negue a condição booleana usando o operador !=
.
# Seleciona linhas onde City NÃO é 'Londres'
not_london_residents = df[df['City'] != 'Londres']
print(not_london_residents)
Comparações Numéricas: Maior Que, Menor Que, etc.
Para colunas numéricas, use operadores de comparação (>
, <
, >=
, <=
) para filtrar com base em intervalos de valores.
# Seleciona linhas onde Age é maior que 25
older_than_25 = df[df['Age'] > 25]
print(older_than_25)
# Seleciona linhas onde Age é menor ou igual a 25
younger_than_or_equal_to_25 = df[df['Age'] <= 25]
print(younger_than_or_equal_to_25)
Combinando Condições: Operações AND e OR
Filtre com base em vários valores de coluna combinando condições booleanas com operadores lógicos &
(AND) e |
(OR). Envolva cada condição em parênteses.
# Seleciona linhas onde City é 'Londres' E Age é maior que 25
london_and_older = df[(df['City'] == 'Londres') & (df['Age'] > 25)]
print(london_and_older)
# Seleciona linhas onde City é 'Londres' OU Age é maior que 25
london_or_older = df[(df['City'] == 'Londres') | (df['Age'] > 25)]
print(london_or_older)
Filtragem Avançada: Múltiplas Colunas e Lógica Complexa
Para cenários complexos, o método query()
oferece melhor legibilidade.
# Usando query() para melhor legibilidade
complex_filter = df.query('(City == "Londres" and Age > 25) or (Age < 23)')
print(complex_filter)
Filtragem Eficiente com isin()
O método isin()
fornece uma maneira concisa de verificar se os valores estão contidos em uma lista.
cities_to_include = ['Londres', 'Paris']
filtered_df = df[df['City'].isin(cities_to_include)]
print(filtered_df)
Este artigo demonstrou várias técnicas para filtrar DataFrames em Pandas. A escolha do método certo depende da complexidade dos seus critérios de filtragem. Lembre-se de usar parênteses corretamente com operadores lógicos para garantir resultados precisos.