Data Analysis

Contando Valores Únicos por Grupo no Pandas de Forma Eficiente

Spread the love

Pandas é uma poderosa biblioteca de manipulação de dados em Python. Uma tarefa frequente envolve determinar o número de valores únicos dentro de vários grupos do seu conjunto de dados. Este artigo explorará três métodos eficientes do Pandas para alcançar isso: groupby().nunique(), groupby().agg() e groupby().unique(). Cada método será demonstrado com exemplos claros.

Sumário

Método groupby().nunique()

O método nunique(), usado após uma operação groupby(), fornece diretamente a contagem de valores únicos para cada grupo. Esta é frequentemente a abordagem mais eficiente e concisa.

Considere este DataFrame de exemplo:


import pandas as pd

data = {'Group': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C', 'C'],
        'Value': ['X', 'Y', 'X', 'Z', 'Z', 'X', 'Y', 'Z', 'X']}
df = pd.DataFrame(data)
print(df)

Isso produz:


  Group Value
0     A     X
1     A     Y
2     A     X
3     B     Z
4     B     Z
5     C     X
6     C     Y
7     C     Z
8     C     X

Para contar entradas únicas de ‘Value’ por ‘Group’, use:


unique_counts = df.groupby('Group')['Value'].nunique()
print(unique_counts)

A saída:


Group
A    2
B    1
C    3
Name: Value, dtype: int64

Isso mostra que o grupo ‘A’ tem 2 valores únicos, ‘B’ tem 1 e ‘C’ tem 3.

Método groupby().agg()

O método agg() oferece maior flexibilidade, permitindo a aplicação de múltiplas funções de agregação ao mesmo tempo. Podemos usá-lo com nunique() para contar valores únicos, juntamente com outras funções, se necessário.

Usando o mesmo DataFrame:


aggregated_data = df.groupby('Group')['Value'].agg(['nunique', 'count'])
print(aggregated_data)

Saída:


      nunique  count
Group                
A           2      3
B           1      2
C           3      4

Isso mostra o número de valores únicos (nunique) e a contagem total de valores (count) para cada grupo. Isso é benéfico para uma análise mais abrangente.

Método groupby().unique()

O método unique() retorna os próprios valores únicos para cada grupo, não sua contagem. Embora não forneça diretamente a contagem, é útil se você precisar ver os valores únicos reais.


unique_values = df.groupby('Group')['Value'].unique()
print(unique_values)

Saída:


Group
A    [X, Y]
B       [Z]
C    [X, Y, Z]
Name: Value, dtype: object

Para obter a contagem, é necessário um passo extra:


unique_value_counts = unique_values.apply(len)
print(unique_value_counts)

Isso produz o mesmo resultado que nunique():


Group
A    2
B    1
C    3
Name: Value, dtype: int64

No entanto, isso é menos eficiente do que usar nunique() diretamente.

Conclusão: Para simplesmente contar valores únicos por grupo, groupby().nunique() é o método mais direto e eficiente. groupby().agg() oferece mais flexibilidade para combinar nunique() com outras agregações, enquanto groupby().unique() é útil quando você precisa ver os valores únicos. Escolha o método mais adequado às suas necessidades analíticas.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *