DEV Community

Francisco Júnior
Francisco Júnior

Posted on • Edited on

2

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.

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay