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.