Filtros no Pandas: Um Guia para Iniciantes

Ana Maria Gomes
7 minutos de leitura

Conteúdos do tutorial

Quando trabalhamos com dados, seja em uma planilha de Excel ou em um script de programação, frequentemente precisamos filtrar informações para focar apenas no que é relevante para nossa análise. No Excel, você pode estar acostumado a usar filtros para esconder linhas que não atendem a certos critérios. No mundo da programação com Python, a biblioteca Pandas oferece ferramentas poderosas para filtrar dados em tabelas, conhecidas como DataFrames.

Neste tutorial, vamos aprender como aplicar filtros em DataFrames usando o Pandas, de uma forma que até quem nunca programou vai entender. Vamos lá?

O que é o Pandas?

Pandas é uma biblioteca do Python que fornece estruturas de dados e ferramentas de análise de dados. Imagine que é como uma versão superpoderosa do Excel dentro do Python. Com ela, você pode realizar diversas operações em tabelas de dados de forma rápida e eficiente.

Filtrando Dados com Pandas

Para começar, vamos importar a biblioteca Pandas. Você pode fazer isso executando o seguinte código:

import pandas as pd

Criando um DataFrame

Antes de filtrar, precisamos de dados para trabalhar. Vamos criar um DataFrame simples, que é como uma tabela do Excel, diretamente no nosso código:

# Criando um DataFrame
dados = {
    'Nome': ['Ana', 'João', 'Maria', 'Pedro'],
    'Idade': [23, 35, 22, 29],
    'Cidade': ['Rio de Janeiro', 'São Paulo', 'Salvador', 'Curitiba']
}

df = pd.DataFrame(dados)

Agora, temos uma tabela com nomes, idades e cidades, conforme a imagem abaixo:

DataFrame sobre o qual iremos aplicar os filtros no Pandas.

Aplicando Filtros

Suponha que queremos filtrar apenas as pessoas que têm mais de 25 anos. No Pandas, fazemos isso da seguinte maneira:

# Filtrando pessoas com mais de 25 anos
filtro_idade = df['Idade'] > 25
df_filtrado = df[filtro_idade]

O df_filtrado agora contém apenas as linhas onde a condição (Idade > 25) é verdadeira:

print(df_filtrado)

# output:
#     Nome  Idade     Cidade
# 1   João     35  São Paulo
# 3  Pedro     29   Curitiba

Filtrando com Múltiplas Condições

E se quisermos filtrar pessoas com mais de 25 anos que moram em São Paulo? Neste caso, vamos querer combinar filtros com os operadores AND ( & ), OR ( | ) e NOT ( ~ ).

Filtrando com o operador &

Podemos combinar condições facilmente usando o operador &, pegando apenas valores que condizem a múltiplas condições ao mesmo tempo:

# Filtrando pessoas com mais de 25 anos E que moram em São Paulo
filtro_idade = df['Idade'] > 25
filtro_cidade = df['Cidade'] == 'São Paulo'
filtro_and = filtro_idade & filtro_cidade

df_filtrado_and = df[filtro_and]

Agora, df_filtrado_and contém apenas as linhas que satisfazem ambas as condições:

print(df_filtrado_and)

# output:
#    Nome  Idade     Cidade
# 1  João     35  São Paulo

Existem também os operadores correspondentes para as operações de tipo OR (operador | ) e NOT (operador ~ ).

Filtrando com o operador |

O operador | é usado para filtros alternativos: se qualquer condição for verdadeira, o valor aparece no filtro resultante:

# Filtrando pessoas com mais de 25 anos, OU que moram em São Paulo
filtro_idade = df['Idade'] > 25
filtro_cidade = df['Cidade'] == 'São Paulo'
filtro_or = filtro_idade | filtro_cidade

df_filtrado_or = df[filtro_or]

Agora, df_filtrado_or inclui indivíduos que condizem a pelo menos uma das condições: ou moram em São Paulo, ou possuem mais de 25 anos:

print(df_filtrado_or)

# output:
#     Nome  Idade     Cidade
# 1   João     35  São Paulo
# 3  Pedro     29   Curitiba

Filtrando com o operador ~

O operador ~ é usado para pegar os valores opostos de um filtro:

# Filtrando pessoas que NÃO moram em São Paulo
filtro_cidade = df['Cidade'] == 'São Paulo'
filtro_not =  ~ filtro_idade

df_filtrado_not = df[filtro_not]

Dessa forma, df_filtrado_not inclui apenas pessoas que não moram em São Paulo:

print(df_filtrado_not)

# output:
#     Nome  Idade          Cidade
# 0    Ana     23  Rio de Janeiro
# 2  Maria     22        Salvador

Usando o Método .loc

O método .loc é uma forma mais avançada de filtrar dados. Com ele, você pode especificar também as colunas que deseja filtrar, além das linhas. Para isso, passamos as colunas como um segundo valor após a vírgula:

# Filtrando e selecionando apenas as colunas 'Nome' e 'Cidade'
filtro_idade = df['Idade'] > 25
colunas_interesse = ['Nome', 'Cidade']

df_filtrado_loc = df.loc[filtro_idade, colunas_interesse]

df_filtrado_loc agora contém apenas indivíduos com mais de 25 anos, e apenas as colunas “Nome” e “Cidade”:

print(df_filtrado_loc)

# output:
#     Nome     Cidade
# 1   João  São Paulo
# 3  Pedro   Curitiba

Conclusão

Filtrar dados com Pandas é uma habilidade essencial para qualquer pessoa que trabalha com análise de dados. Com a prática, você verá que é uma ferramenta muito mais flexível e poderosa do que os filtros tradicionais do Excel. E o melhor de tudo, você não precisa ser um expert em programação para começar a usar!

Experimente criar seus próprios DataFrames e aplicar diferentes filtros para ver o que você pode descobrir sobre seus dados. Com o tempo, você se sentirá cada vez mais confortável com essas operações e poderá realizar análises de dados mais complexas com facilidade.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: