Tamanho de fonte
Alto contraste
Altura de linha

Como fazer um WHERE no pandas

Avatar de Ana Maria Gomes Ana Maria Gomes
8 minutos de leitura 11 dias atrás

Se você já está familiarizado com a biblioteca pandas e deseja aprofundar seus conhecimentos, entender o método where é essencial. Este método é uma ferramenta poderosa para manipulação de dados, permitindo aplicar condições e filtrar dados de maneira eficiente. Neste guia, vamos explorar o método where em detalhes, desde a sua sintaxe básica até aplicações práticas e comparações com o SQL.

Introdução ao método where no pandas

O método where no pandas é uma função que permite aplicar condições aos dados de um DataFrame ou Series, substituindo valores que não atendem a essas condições. Isso é particularmente útil quando você precisa filtrar ou modificar dados com base em critérios específicos.

O que é o método where?

O método where é usado para verificar uma ou mais condições em um DataFrame ou Series e retornar os resultados de acordo. Por padrão, as linhas que não satisfazem a condição são preenchidas com valores NaN. Isso permite que você mantenha a estrutura original dos dados enquanto aplica filtros específicos.

Quando usar o método where?

Você deve usar o método where quando precisar aplicar condições complexas aos seus dados, especialmente quando essas condições envolvem múltiplas colunas ou critérios. Ele é ideal para situações em que você deseja substituir valores que não atendem a certas condições sem alterar a estrutura do DataFrame.

Usar o método where do pandas

O método where do pandas é uma ferramenta poderosa para manipulação de dados, permitindo a aplicação de condições para filtrar e modificar DataFrames. Ele é frequentemente comparado à cláusula WHERE do SQL, pois ambos são usados para aplicar filtros condicionais. No pandas, where retorna um DataFrame com os mesmos valores onde a condição é verdadeira e substitui os valores onde a condição é falsa. Este método é útil para operações de limpeza e transformação de dados, tornando-o essencial para analistas e cientistas de dados que trabalham com grandes conjuntos de dados.

Sintaxe do método where no pandas

Para utilizar o método where, é importante entender sua sintaxe e os parâmetros que ele aceita. A seguir, vamos detalhar cada um desses elementos.

Parâmetros do método where

A sintaxe básica do método where é a seguinte:

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False)
  • cond: Uma ou mais condições a serem verificadas no DataFrame.
  • other: Valor a ser substituído nas linhas que não satisfazem a condição. O padrão é NaN.
  • inplace: Booleano que indica se as mudanças devem ser feitas no próprio DataFrame. O padrão é False.
  • axis: Eixo a ser verificado (linhas ou colunas).
  • level: Nível de alinhamento, se necessário.
  • errors: Define o comportamento em caso de erro. O padrão é ‘raise’.
  • try_cast: Tenta converter o resultado de volta para o tipo de entrada, se possível.

Exemplos básicos de uso

Vamos ver alguns exemplos básicos de como usar o método where no pandas.

Exemplo 1: Filtrando dados com uma única condição

import pandas as pd

# Criando um DataFrame de exemplo
data = {'idade': [50, 40, 30, 40, 20, 10, 30], 'qualificado': [True, False, False, False, False, True, True]}
df = pd.DataFrame(data)

# Aplicando o método where
novo_df = df.where(df['idade'] > 30)

print(novo_df)
Testar

Neste exemplo, estamos filtrando o DataFrame para mostrar apenas as linhas onde a idade é maior que 30. As outras linhas são preenchidas com NaN.

Exemplo 2: Filtrando dados com múltiplas condições

import pandas as pd

# Criando um DataFrame de exemplo
data = {'idade': [50, 40, 30, 40, 20, 10, 30], 'qualificado': [True, False, False, False, False, True, True]}
df = pd.DataFrame(data)

# Aplicando múltiplas condições
cond1 = df['idade'] > 30
cond2 = df['qualificado'] == True
novo_df = df.where(cond1 & cond2)

print(novo_df)
Testar

Aqui, estamos aplicando duas condições: a idade deve ser maior que 30 e a pessoa deve estar qualificada. Apenas as linhas que atendem a ambas as condições são mantidas.

Aplicações práticas do método where

Agora que entendemos a sintaxe básica, vamos explorar algumas aplicações práticas do método where.

Filtrando dados com uma única condição

Filtrar dados com uma única condição é uma das aplicações mais comuns do método where. Isso é útil quando você deseja isolar dados que atendem a um critério específico.

import pandas as pd

# Criando um DataFrame de exemplo
data = {'idade': [50, 40, 30, 40, 20, 10, 30], 'qualificado': [True, False, False, False, False, True, True]}
df = pd.DataFrame(data)

# Aplicando o método where
novo_df = df.where(df['idade'] > 30)

print(novo_df)
Testar

Filtrando dados com múltiplas condições

Quando você precisa aplicar múltiplas condições, o método where permite combinar essas condições usando operadores lógicos.

import pandas as pd

# Criando um DataFrame de exemplo
data = {'idade': [50, 40, 30, 40, 20, 10, 30], 'qualificado': [True, False, False, False, False, True, True]}
df = pd.DataFrame(data)

# Aplicando múltiplas condições
cond1 = df['idade'] > 30
cond2 = df['qualificado'] == True
novo_df = df.where(cond1 & cond2)

print(novo_df)
Testar

Usando where com DataFrames e Series

O método where pode ser usado tanto com DataFrames quanto com Series, oferecendo flexibilidade na manipulação de dados.

import pandas as pd

# Criando uma Series de exemplo
s = pd.Series([1, 2, 3, 4, 5])

# Aplicando o método where
novo_s = s.where(s > 2)

print(novo_s)
Testar

Comparação entre where no pandas e WHERE no SQL

Para aqueles que estão familiarizados com SQL, entender as similaridades e diferenças entre o método where no pandas e a cláusula WHERE no SQL pode ser útil.

Similaridades e diferenças

Ambos os métodos são usados para filtrar dados com base em condições. No entanto, enquanto a cláusula WHERE no SQL é usada para filtrar registros em uma consulta, o método where no pandas é usado para filtrar dados em um DataFrame ou Series.

Comparação entre Pandas e SQL

Pandas e SQL são ferramentas poderosas para manipulação e análise de dados, mas cada uma tem suas particularidades. O SQL é ideal para lidar com dados relacionais, permitindo consultas complexas e manipulação de grandes volumes de dados em bancos de dados estruturados. Já o Pandas, além de manipular dados relacionais, oferece flexibilidade para trabalhar com diferentes tipos de dados e integrações com outras bibliotecas Python. Com Pandas, é possível realizar operações avançadas de análise e transformação de dados diretamente no ambiente Python, facilitando a integração com outras aplicações e fluxos de trabalho.

Exemplos comparativos

SQL

SELECT * FROM tabela WHERE idade > 30;

pandas

import pandas as pd

# Criando um DataFrame de exemplo
data = {'idade': [50, 40, 30, 40, 20, 10, 30], 'qualificado': [True, False, False, False, False, True, True]}
df = pd.DataFrame(data)

# Aplicando o método where
novo_df = df.where(df['idade'] > 30)

print(novo_df)
Testar

Dicas avançadas para usar where no pandas

O uso do where no pandas permite aplicar condições diretamente ao DataFrame, facilitando a filtragem e o ajuste dos dados de acordo com critérios específicos.

Manipulação de dados complexos

Você pode usar o método where em conjunto com outras funções do pandas para realizar manipulações de dados mais complexas.

import pandas as pd

# Criando um DataFrame de exemplo
data = {'idade': [50, 40, 30, 40, 20, 10, 30], 'qualificado': [True, False, False, False, False, True, True]}
df = pd.DataFrame(data)

# Aplicando o método where com outras funções
novo_df = df.where(df['idade'] > 30).fillna(0)

print(novo_df)
Testar

Integração com outras funções pandas

O método where pode ser integrado com outras funções do pandas para criar pipelines de manipulação de dados eficientes.

import pandas as pd

# Criando um DataFrame de exemplo
data = {'idade': [50, 40, 30, 40, 20, 10, 30], 'qualificado': [True, False, False, False, False, True, True]}
df = pd.DataFrame(data)

# Aplicando o método where e outras funções
novo_df = df.where(df['idade'] > 30).dropna().reset_index(drop=True)

print(novo_df)
Testar

Conclusão

Neste artigo, exploramos o método where no pandas em detalhes, desde a sua sintaxe básica até aplicações práticas e comparações com SQL. Aprendemos como usar o método para filtrar dados com base em condições simples e múltiplas, e como integrá-lo com outras funções do pandas para manipulação de dados complexos.

Se você deseja continuar aprimorando suas habilidades em pandas, recomendamos explorar outras funções avançadas da biblioteca, como groupby, merge e pivot_table. Essas funções, combinadas com o método where, permitirão que você manipule e analise dados de maneira ainda mais eficiente.

Referências

Imagem de um notebook

Cursos de programação gratuitos com certificado

Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:

  • Conteúdos gratuitos
  • Projetos práticos
  • Certificados
  • +20 mil alunos e comunidade exclusiva
  • Materiais didáticos e download de código
Inicie agora

Comentários

Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov