8 maneiras de filtrar DataFrames em Pandas (útil para rotina empresarial)

Um guia prático para análise eficiente de dados no dia a dia

Pandas é uma biblioteca popular de Análise e Manipulação de Dados para Python. A estrutura de dados central do Pandas são Series e DataFrames, este armazena dados em forma tabular com linhas e colunas rotuladas.

Uma operação comum na análise de dados é filtrar valores com base em uma condição ou múltiplas condições. Pandas fornece uma variedade de maneiras de filtrar pontos de dados (ou seja, linhas). Neste artigo, abordaremos 8 maneiras diferentes de filtrar um dataframe.

Veremos aqui filtros com:

  1. Operadores lógicos

Começamos importando as bibliotecas de praxe

import numpy as np
import pandas as pd

Criando DataFrame para análise:

df = pd.DataFrame({
'name':['Jane','John','Ashley','Mike','Emily','Jack','Catlin'],
'ctg':['A','A','C','B','B','C','B'],
'val':np.random.random(7).round(2),
'val2':np.random.randint(1,10, size=7)})
DataFrame df

1. Operadores lógicos

Podemos usar os operadores lógicos nos valores das colunas para filtrar linhas.

df[df.val > 0.5]       

Selecionamos as linhas em que o valor na coluna “val” é superior a 0,5.

Operadores lógicos também trabalham em strings.

df[df.name > 'Jane']     
“Maior” em ordem alfabética

Apenas os nomes que vêm depois de ‘Jane’ em ordem alfabética são selecionados.

2. Múltiplos operadores lógicos

Pandas permite combinar vários operadores lógicos. Por exemplo, podemos aplicar condições nas colunas val e val2 como abaixo.

df[(df.val > 0.5) & (df.val2 == 1)]   
Os sinais “e”. significa “e” o “|” significa “ou”.
df[(df.val < 0.5) | (df.val2 == 7)] 
Neste caso o filtro foi executado corretamente, diferente do anterior

3. Isin

O método isina é outra forma de aplicar múltiplas condições para filtragem. Por exemplo, podemos filtrar os nomes que existem em uma determinada lista.

names = ['John','Catlin','Mike']df[df.name.isin(names)] 
df[df.name.isin(names)]

4. Acessório Str

Pandas é uma biblioteca altamente eficiente sobre dados textuais também. As funções e métodos sob o acessório str fornecem formas flexíveis de filtrar linhas com base em strings.

Por exemplo, podemos selecionar os nomes que começam com a letra “J”.

df[df.name.str.startswith('J')]  

A função contém sob o acessório str retorna os valores que contêm um determinado conjunto de caracteres.

df[df.name.str.contains('y')]     

Podemos passar um conjunto mais longo de caracteres para a função contém, dependendo das strings nos dados.

5. Tilde (~)

O operador de tilde é usado para lógica “não” na filtragem. Se adicionarmos o operador de tilde antes da expressão do filtro, as linhas que não se encaixam na condição ão devolvidas.

df[~df.name.str.startswith('J')] 
Temos os nomes que não começam com a letra “J”.

6. Query

A função de consulta oferece um pouco mais de flexibilidade ao escrever as condições para filtragem. Podemos passar as condições como uma corda.

Por exemplo, o código a seguir retorna as linhas que pertencem à categoria B e têm um valor superior a 0,5 na coluna val.

df.query('ctg == "B" and val > 0.5')    

7. Nlargest ou nsmallest

Em alguns casos, não temos uma gama específica para filtragem, mas apenas precisamos dos maiores ou menores valores. As funções nlargest e nsmallest permitem selecionar linhas que tenham os maiores ou menores valores em uma coluna, respectivamente.

df.nlargest(3, 'val')  
Os três maiores valores de val

Especificamos o número de valores maiores ou menores a serem selecionados e o nome da coluna.

df.nsmallest(2, 'val2')  

8. Loc e iloc

Os métodos loc e iloc são usados para selecionar linhas ou colunas com base em índice ou rótulo.

  • loc: selecione linhas ou colunas usando rótulos

Assim, podem ser usados para filtragem. No entanto, só podemos selecionar uma determinada parte do dataframe sem especificar uma condição.

df.iloc[3:5,:]
Terceira e quarta linhas, todas as colunas, de acordo com índice numérico

Se o dataframe tiver índice inteiro, os índices e rótulos das linhas são os mesmos. Assim, tanto loc quanto iloc realizaram a mesma coisa nas fileiras.

df.loc[3:5,:]
Filtro das linhas de acordo com o rótulo

Vamos atualizar melhor o índice do dataframe para demonstrar melhor a diferença entre loc e iloc.

df.index = ['a','b','c','d','e','f','g']
df
Atribuição de novo índice

Não podemos passar inteiros para o método loc agora porque os rótulos dos índices são letras.

df.loc['b':'d',:]      

Conclusão

Cobrimos 8 maneiras diferentes de filtrar linhas em um dataframe. Todos eles são úteis e são úteis para casos específicos.

Pandas é uma biblioteca poderosa para análise e manipulação de dados. Ele fornece inúmeras funções e métodos para lidar com dados em forma tabular. Como em qualquer outra ferramenta, a melhor maneira de aprender Pandas é através da prática.

Obrigado.,

Composing a repository of books (i bought), authors (i follow) & blogs (direct ones) for my own understanding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store