Skip to content

10 Melhores Exemplos e Ferramentas de Consulta do Pandas: Um Guia Abrangente

Updated on

O Pandas é uma poderosa biblioteca em Python para manipulação e análise de dados. Uma de suas ferramentas mais potentes é a função query(). Essa função permite filtrar e manipular dados em um DataFrame usando uma sintaxe intuitiva e eficiente. Este artigo irá explorar as minúcias da função query(), fornecendo o conhecimento necessário para aproveitar seu potencial máximo.

A função query() no Pandas funciona ao receber uma expressão booleana e compará-la com cada linha do seu DataFrame. Somente as linhas que retornam True para a expressão são retornadas, filtrando efetivamente seus dados. Essa função não é apenas poderosa, mas também eficiente, tornando-a uma ferramenta essencial para qualquer analista de dados.

Quer criar rapidamente visualizações de dados a partir de um dataframe do Pandas sem escrever código?

PyGWalker é uma biblioteca em Python para Análise de Dados Exploratória com Visualização. PyGWalker (opens in a new tab) pode simplificar o fluxo de trabalho de análise de dados e visualização com Jupyter Notebook, transformando seu dataframe do pandas (e dataframe do polars) em uma interface de usuário no estilo Tableau para exploração visual.

PyGWalker para visualização de dados (opens in a new tab)

Parte 1: Compreendendo a Consulta do Pandas

O que é uma Consulta do Pandas?

A consulta do Pandas é uma função na biblioteca do Pandas que permite filtrar dados em um DataFrame usando uma expressão booleana. A função compara a expressão com cada linha do DataFrame, retornando apenas as linhas em que a expressão avalia como "True". Essa função é uma ferramenta poderosa para manipulação de dados e é especialmente útil ao lidar com conjuntos de dados grandes.

Como a Consulta do Pandas Funciona?

A consulta do Pandas funciona ao receber uma expressão booleana como argumento. Essa expressão é então comparada com cada linha do DataFrame. Se a expressão avaliar como "True" para uma determinada linha, essa linha é incluída no DataFrame de saída. Se a expressão avaliar como "False", a linha é excluída.

Por exemplo, considere um DataFrame df com uma coluna 'A'. Se quisermos filtrar todas as linhas em que 'A' seja menor que 5, poderíamos usar a seguinte consulta:

df.query('A < 5')

Isso retornaria um novo DataFrame contendo apenas as linhas em que 'A' é menor que 5.

Parte 2: Consulta do Pandas vs Loc

Compreendendo a Diferença

Embora tanto query() quanto loc[] sejam usados para seleção de dados no Pandas, eles funcionam de maneiras ligeiramente diferentes. A função loc[] é um método de seleção de dados baseado em rótulos, o que significa que é usado para selecionar dados com base em rótulos. Por outro lado, a função query() é um método mais flexível que usa uma expressão em string para seleção de dados.

Por exemplo, se você deseja selecionar as linhas em que 'A' seja menor que 5, você usaria loc[] da seguinte forma:

df.loc[df['A'] < 5]

E com query(), você usaria:

df.query('A < 5')

Embora ambos os métodos alcancem o mesmo resultado, query() fornece uma sintaxe mais legível e concisa, especialmente ao lidar com expressões complexas.

Parte 3: Usando a Consulta do Pandas para Filtragem de Dados

Filtragem Básica

O uso principal de query() é filtrar dados com base em determinadas condições. Como vimos nos exemplos anteriores, você pode usar query() para selecionar as linhas em que uma determinada condição seja atendida. A condição é especificada como uma string e pode incluir qualquer expressão Python válida.

Por exemplo, se você tiver um DataFrame df com as colunas 'A', 'B' e 'C', e quiser selecionar todas as linhas em que 'A' seja menor que 'B' e 'C' seja maior que 10, você poderia usar a seguinte consulta:

df.query('A < B and C > 10')

Isso retornaria um novo DataFrame contendo apenas as linhas em que 'A' é menor que 'B' e 'C' é maior que 10.

Filtragem com Múltiplas Condições

A consulta do Pandas também permite filtrar dados com base em múltiplas condições. Você pode usar operadores lógicos como and e or para combinar múltiplas condições.

Por exemplo, se você quiser selecionar todas as linhas em que 'A' seja menor que 5 ou 'B' seja maior que 10, você poderia usar a seguinte consulta:

df.query('A < 5 or B > 10')

Isso retornaria um novo DataFrame contendo apenas as linhas em que 'A' é menor que 5 ou 'B' é maior que 10.

Filtragem com Contém String

A consulta do Pandas também pode ser usada para filtrar dados com base em valores de string. Por exemplo, se você tiver um DataFrame com uma coluna 'Nome' e quiser selecionar todas as linhas em que 'Nome' contenha a string 'John', você poderia usar a seguinte consulta:

df.query('Nome.str.contains("John")')

Isso retornaria um novo DataFrame contendo apenas as linhas em que 'Nome' contenha a string 'John'.

Parte 4: Usos Avançados da Consulta do Pandas

Usando a Consulta com DataFrames que Possuem Nomes de Colunas com Espaços

Se o seu DataFrame possuir nomes de colunas com espaços, você ainda pode usar a query() colocando a coluna entre crases. Por exemplo, se você tiver uma coluna chamada 'Nome Sobrenome', você poderia usar a seguinte consulta:

df.query('`Nome Sobrenome` == "John"')

Isso retornaria um novo DataFrame contendo apenas as linhas em que 'Nome Sobrenome' é 'John'.

Usando a Consulta para Selecionar Linhas e Colunas

A consulta do Pandas também pode ser usada para selecionar linhas e colunas específicas de um DataFrame. Por exemplo, se você quiser selecionar as colunas 'A' e 'B' para todas as linhas em que 'C' seja maior que 10, você poderia usar a seguinte consulta:

df.query('C > 10')[['A', 'B']]

Esse retornaria um novo DataFrame contendo apenas as colunas 'A' e 'B' para as linhas em que 'C' é maior que 10.

Parte 5: Ajuste de Desempenho da Consulta do Pandas

A consulta do Pandas já é otimizada para o desempenho, mas há algumas coisas que você pode fazer para tornar suas consultas ainda mais rápidas. Uma das maneiras mais eficazes de melhorar o desempenho das consultas é usar operações vetorizadas. Essas são operações que são aplicadas a matrizes inteiras de uma vez, em vez de a elementos individuais.

Por exemplo, em vez de usar um loop para iterar sobre cada elemento em uma coluna, você pode usar uma operação vetorizada para aplicar uma função a toda a coluna de uma vez. Isso pode melhorar significativamente o desempenho, especialmente para conjuntos de dados grandes.

Outra maneira de melhorar o desempenho da consulta é usar a função eval() em conjunto com a query(). A função eval() pode avaliar expressões complexas de forma mais eficiente que a query(), e pode ser usada para acelerar suas consultas.

Por exemplo, se você tiver uma consulta complexa como esta:

df.query('A < B and C > D or E < F')

Você pode usar eval() para avaliar a expressão de forma mais eficiente:

df.query(df.eval('A < B and C > D or E < F'))

Parte 6: Consulta do Pandas para Aprendizado de Máquina e IA Generativa

A consulta do Pandas não é apenas útil para análise de dados, mas também para aprendizado de máquina e IA generativa. Ao permitir que você filtre e manipule dados de forma eficiente, a query() pode ajudá-lo a preparar seus dados para algoritmos de aprendizado de máquina.

Por exemplo, você pode usar a query() para selecionar características específicas do seu conjunto de dados, ou para filtrar outliers que possam impactar negativamente o desempenho do seu modelo. Você também pode usar a query() para criar novas características com base em características existentes, o que pode ajudar a melhorar o poder preditivo do seu modelo.

A IA generativa, que envolve a criação de novos dados com base em dados existentes, também pode se beneficiar da query(). Ao permitir que você filtre e manipule seus dados facilmente, a query() pode ajudá-lo a criar dados sintéticos mais diversos e realistas.

FAQs

A query() pode ser usada com DataFrames que têm nomes de coluna com espaços?

Sim, se o seu DataFrame tiver nomes de coluna com espaços, você ainda pode usar a query() usando crases ao redor do nome da coluna. Por exemplo, se você tiver uma coluna chamada 'First Name', você pode usar a seguinte consulta:

df.query('`First Name` == "John"')

Como a consulta do Pandas pode ser usada para filtrar dados em um DataFrame?

A consulta do Pandas é usada para filtrar dados com base em certas condições. A função recebe uma expressão booleana como argumento, que é correspondida com cada linha do DataFrame. Se a expressão for avaliada como True para uma determinada linha, essa linha será incluída no DataFrame de saída.

Qual é a diferença entre a consulta do Pandas e o loc?

Embora tanto a query() quanto o loc[] sejam usados para seleção de dados no Pandas, eles funcionam de maneiras um pouco diferentes. A função loc[] é um método de seleção de dados baseado em rótulos, o que significa que é usado para selecionar dados com base em rótulos. Por outro lado, a query() é um método mais flexível que usa uma expressão em forma de string para seleção de dados.