DEV Community

Francisco Júnior
Francisco Júnior

Posted on • Edited on

Aprimorando a Seleção, Filtragem e Agrupamento de Dados no Pandas

Ao longo dos meus estudos, percebi que o processo de seleção, filtragem e agrupamento de dados dentro de um dataframe no Pandas pode ser um tanto confuso. Com o intuito de me orientar melhor e compartilhar esse conhecimento, decidi escrever este artigo, que aborda estratégias eficientes para realizar consultas precisas.

Selecionar, filtrar e agrupar dados são habilidades fundamentais para explorar e analisar conjuntos de dados usando a biblioteca Pandas no Python. Essas operações permitem extrair informações relevantes e responder a perguntas específicas sobre os dados. No entanto, o processo pode se tornar desafiador se não soubermos as melhores práticas.

Vamos começar falando sobre a seleção de dados. O Pandas oferece várias formas de selecionar colunas e linhas específicas dentro de um dataframe. Podemos usar a notação de colchetes para selecionar uma única coluna ou uma lista de colunas. Além disso, podemos utilizar o método .loc[] para selecionar linhas e colunas com base em rótulos, ou o método .iloc[] para selecionar com base em índices numéricos.

A filtragem de dados é outra tarefa comum no Pandas. Podemos utilizar condições lógicas para filtrar linhas que atendam a certos critérios. Por exemplo, podemos criar uma máscara booleana e aplicá-la ao dataframe para manter apenas as linhas que satisfazem a condição desejada. Podemos combinar várias condições usando os operadores lógicos & (e) e | (ou).

Já o agrupamento de dados é útil quando queremos analisar padrões ou calcular estatísticas em subconjuntos dos nossos dados. Podemos agrupar o dataframe por uma ou mais colunas e, em seguida, aplicar funções de agregação, como soma, média, máximo ou mínimo, aos grupos resultantes. O método .groupby() do Pandas facilita esse processo, permitindo-nos segmentar os dados com base em critérios específicos.

Durante este artigo, exploraremos exemplos práticos de seleção, filtragem e agrupamento de dados, usando diferentes abordagens disponíveis no Pandas. Também discutiremos boas práticas e considerações importantes para garantir a eficiência e a precisão das nossas consultas.

Ao compreender e dominar essas habilidades, você poderá aproveitar ao máximo a biblioteca Pandas e tirar insights valiosos dos seus conjuntos de dados. Acompanhe este artigo para aprofundar seus conhecimentos e aprender estratégias poderosas para manipular dados de forma eficiente no Pandas.

Abaixo trago alguns exemplos para facilitar seu entendimento sobre esse tema.


Seleção de Dados:

1 - Selecionar uma coluna específica:

df['nome_coluna']
Enter fullscreen mode Exit fullscreen mode

2 - Selecionar várias colunas:

df[['coluna1', 'coluna2', 'coluna3']]
Enter fullscreen mode Exit fullscreen mode

3 - Selecionar linhas com base em um critério:

df[df['coluna'] > valor]
Enter fullscreen mode Exit fullscreen mode

4 - Selecionar linhas que atendam a várias condições:

df[(df['coluna1'] > valor1) & (df['coluna2'] < valor2)]
Enter fullscreen mode Exit fullscreen mode

5 - Selecionar linhas com base em rótulos (usando .loc[]):

df.loc[rotulo_linha]
Enter fullscreen mode Exit fullscreen mode

6 - Selecionar linhas e colunas com base em rótulos:

df.loc[rotulo_linha, 'nome_coluna']
Enter fullscreen mode Exit fullscreen mode

7 - Selecionar linhas com base em índices numéricos (usando .iloc[]):

df.iloc[indice]
Enter fullscreen mode Exit fullscreen mode

8 - Selecionar linhas e colunas com base em índices numéricos:

df.iloc[indice_linha, indice_coluna]
Enter fullscreen mode Exit fullscreen mode

Esses são apenas alguns exemplos básicos de seleção de dados no Pandas. A biblioteca oferece muitas outras opções e funcionalidades poderosas para manipulação de dados. É importante explorar a documentação oficial do Pandas para obter mais informações sobre as diferentes formas de selecionar dados de acordo com suas necessidades específicas.


Agrupamento de Dados:

1 - Agrupar por uma coluna e calcular a média de outra coluna:

df.groupby('coluna_grupo')['coluna_media'].mean()
Enter fullscreen mode Exit fullscreen mode

2 - Agrupar por várias colunas e calcular a soma de outra coluna:

df.groupby(['coluna1', 'coluna2'])['coluna_soma'].sum()
Enter fullscreen mode Exit fullscreen mode

3 - Agrupar por uma coluna e contar o número de ocorrências em outra coluna:

df.groupby('coluna_grupo')['coluna_contagem'].count()
Enter fullscreen mode Exit fullscreen mode

4 - Agrupar por uma coluna e calcular múltiplas estatísticas em outra coluna:

df.groupby('coluna_grupo')['coluna_estatisticas'].agg(['mean', 'sum', 'max', 'min'])
Enter fullscreen mode Exit fullscreen mode

5 - Agrupar por uma coluna e aplicar uma função personalizada a outra coluna:

def minha_funcao(x):
    return x.max() - x.min()

df.groupby('coluna_grupo')['coluna_personalizada'].apply(minha_funcao)
Enter fullscreen mode Exit fullscreen mode

6 - Agrupar por uma coluna e aplicar diferentes funções a diferentes colunas:

agregacoes = {
    'coluna1': 'mean',
    'coluna2': 'sum',
    'coluna3': lambda x: x.max() - x.min()
}

df.groupby('coluna_grupo').agg(agregacoes)
Enter fullscreen mode Exit fullscreen mode

Esses são apenas alguns exemplos básicos de agrupamento de dados no Pandas. Você pode combinar diferentes funções de agregação, aplicar funções personalizadas e explorar ainda mais a biblioteca para realizar agrupamentos complexos. A documentação oficial do Pandas é uma ótima fonte de informações adicionais sobre todas as opções disponíveis para agrupamento de dados.


Filtragem de Dados:

Certamente! Aqui estão alguns exemplos de filtragem de dados com Python e pandas:

1 - Filtrar linhas com base em uma condição específica:

import pandas as pd

# Criar um DataFrame de exemplo
data = {'Nome': ['Alice', 'Bob', 'Charlie', 'Dave'],
        'Idade': [25, 30, 35, 40]}
df = pd.DataFrame(data)

# Filtrar linhas com idade maior que 30
df_filtrado = df[df['Idade'] > 30]
print(df_filtrado)
Enter fullscreen mode Exit fullscreen mode

Saída:

      Nome  Idade
2  Charlie     35
3     Dave     40
Enter fullscreen mode Exit fullscreen mode

2 - Filtrar linhas usando o método isin:

# Filtrar linhas com nomes específicos
nomes_filtrados = ['Alice', 'Dave']
df_filtrado = df[df['Nome'].isin(nomes_filtrados)]
print(df_filtrado)
Enter fullscreen mode Exit fullscreen mode

Saída:

   Nome  Idade
0  Alice     25
3   Dave     40
Enter fullscreen mode Exit fullscreen mode

3 - Filtrar linhas que contêm uma determinada string:

# Filtrar linhas com nomes que contêm 'b'
df_filtrado = df[df['Nome'].str.contains('b', case=False)]
print(df_filtrado)
Enter fullscreen mode Exit fullscreen mode

Saída:

    Nome  Idade
1    Bob     30
2  Charlie     35
Enter fullscreen mode Exit fullscreen mode

4 - Filtrar linhas com valores ausentes:

import numpy as np

# Adicionar valores ausentes ao DataFrame
df.loc[1, 'Idade'] = np.nan

# Filtrar linhas com valores ausentes
df_filtrado = df[df['Idade'].isnull()]
print(df_filtrado)
Enter fullscreen mode Exit fullscreen mode

Saída:

    Nome  Idade
1    Bob    NaN
Enter fullscreen mode Exit fullscreen mode

5 - Utilizando not in para filtrar linhas:

import pandas as pd

# Criar um DataFrame de exemplo
data = {'Nome': ['Alice', 'Bob', 'Charlie', 'Dave'],
        'Idade': [25, 30, 35, 40]}
df = pd.DataFrame(data)

# Filtrar linhas onde o nome não esteja em uma lista
nomes_excluidos = ['Alice', 'Charlie']
df_filtrado = df[~df['Nome'].isin(nomes_excluidos)]
print(df_filtrado)
Enter fullscreen mode Exit fullscreen mode

Saída:

   Nome  Idade
1   Bob     30
3  Dave     40
Enter fullscreen mode Exit fullscreen mode

6 - Utilizando query para filtrar linhas com uma expressão booleana:

# Filtrar linhas onde a idade seja maior que 30
df_filtrado = df.query('Idade > 30')
print(df_filtrado)
Enter fullscreen mode Exit fullscreen mode

Saída:

      Nome  Idade
2  Charlie     35
3     Dave     40
Enter fullscreen mode Exit fullscreen mode

7 - Utilizando where para filtrar linhas com uma condição:

# Filtrar linhas onde a idade seja menor ou igual a 30
df_filtrado = df.where(df['Idade'] <= 30)
print(df_filtrado)
Enter fullscreen mode Exit fullscreen mode

Saída:

    Nome  Idade
0  Alice   25.0
1    Bob   30.0
2    NaN    NaN
3    NaN    NaN
Enter fullscreen mode Exit fullscreen mode

8 - Utilizando loc para filtrar linhas e selecionar colunas:

# Filtrar linhas onde a idade seja maior que 30 e selecionar apenas a coluna 'Nome'
df_filtrado = df.loc[df['Idade'] > 30, 'Nome']
print(df_filtrado)
Enter fullscreen mode Exit fullscreen mode

Saída:

2    Charlie
3       Dave
Name: Nome, dtype: object
Enter fullscreen mode Exit fullscreen mode

9 - Utilizando like para filtrar linhas usando padrões de texto:

# Filtrar linhas onde o nome comece com 'A'
df_filtrado = df[df['Nome'].str.like('A%')]
print(df_filtrado)
Enter fullscreen mode Exit fullscreen mode

Saída:

   Nome  Idade
0  Alice     25
Enter fullscreen mode Exit fullscreen mode

Esses são apenas alguns exemplos básicos de filtragem de dados com pandas. A biblioteca oferece uma ampla gama de opções e recursos para manipulação e filtragem de dados. Você pode combinar múltiplas condições, usar operadores lógicos, expressões regulares e até mesmo criar suas próprias funções personalizadas para filtrar os dados de acordo com suas necessidades específicas.


Espero que tenha ajudado a você a entender melhor sobre seleção, agrupamento e filtragem de dados.

Top comments (0)