Como contar a frequência de valores únicos no array NumPy?
Analisar a frequência de valores únicos dentro de um array NumPy é uma tarefa comum na análise de dados. Ele fornece informações valiosas sobre a distribuição e ocorrência de elementos, permitindo exploração e pré-processamento eficazes de dados. Neste artigo, exploraremos vários métodos para contar a frequência de valores únicos em arrays NumPy. Aproveitando funções NumPy integradas e bibliotecas externas, como pandas e coleções, iremos guiá-lo através de implementações passo a passo dessas técnicas. Através deste guia abrangente, você obterá o conhecimento necessário para analisar e extrair com precisão informações significativas de seus arrays NumPy.
Método 1: usando a função np.unique()
NumPy fornece a função np.unique(), que retorna os elementos exclusivos classificados de um array. Ao especificar o parâmetro return_counts=True, ele também retorna a contagem de cada elemento exclusivo. Vamos ver como podemos usar esta função para contar a frequência de valores únicos em um array NumPy:
import numpy as np
# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])
# Get the unique values and their counts
unique_values, counts = np.unique(arr, return_counts=True)
# Print the results
for value, count in zip(unique_values, counts):
print(f"{value} occurs {count} times")
Saída
1 occurs 2 times
2 occurs 2 times
3 occurs 2 times
4 occurs 4 times
Usando a função np.unique(), obtemos dois arrays: unique_values contendo os elementos únicos e contagens contendo as frequências correspondentes. Podemos então iterar sobre esses arrays simultaneamente usando a função zip() e imprimir os resultados.
Método 2: usando a função Collections.Counter()
Outra abordagem para contar a frequência de valores únicos em um array NumPy envolve o uso da função Collections.Counter(). Esta função faz parte da biblioteca padrão do Python e fornece uma maneira eficiente de contar as ocorrências de elementos em uma coleção. Aqui está um exemplo de como utilizar esta função:
import numpy as np
from collections import Counter
# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])
# Count the frequency of unique values
counts = Counter(arr)
# Print the results
for value, count in counts.items():
print(f"{value} occurs {count} times")
Saída
1 occurs 2 times
2 occurs 2 times
3 occurs 2 times
4 occurs 4 times
O array NumPy é transformado em um objeto semelhante a um dicionário quando Counter(arr) é aplicado, com as chaves denotando os valores únicos e os valores denotando as frequências correspondentes. Os resultados podem então ser impressos após iterar o conteúdo do objeto Counter.
Método 3: usando a função np.bincount()
Podemos usar a função np.bincount() para contar a frequência de valores distintos em um array NumPy de inteiros não negativos. Esta função cria um novo array e conta as instâncias de cada número inteiro não negativo no array original. Os índices nesta nova matriz representam os valores distintos e os itens que os acompanham indicam suas frequências. Aqui está uma ilustração de como aplicar esta estratégia:
import numpy as np
# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])
# Get the frequency of unique values
counts = np.bincount(arr)
# Print the results
for value, count in enumerate(counts):
if count > 0:
print(f"{value} occurs {count} times")
Saída
1 occurs 2 times
2 occurs 2 times
3 occurs 2 times
4 occurs 4 times
Neste método, aplicamos a função np.bincount() ao array NumPy. A matriz resultante, counts, contém a frequência de cada número inteiro não negativo presente na matriz. Podemos então iterar sobre os índices e elementos correspondentes do array counts usando a função enumerate() e imprimir os valores que possuem uma contagem maior que zero.
Método 4: usando a função pandas.value_counts()
Se você tiver a biblioteca pandas instalada, poderá utilizar sua função value_counts() para contar a frequência de valores exclusivos em um array NumPy. Esta função retorna um objeto Series contendo os valores únicos como índices e suas frequências correspondentes como valores. Aqui está um exemplo:
import numpy as np
import pandas as pd
# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])
# Convert the array to Series
series = pd.Series(arr)
# Get the frequency of unique values
counts = series.value_counts()
# Print the results
for value, count in counts.items():
print(f"{value} occurs {count} times")
Saída
4 occurs 4 times
1 occurs 2 times
3 occurs 2 times
2 occurs 2 times
Podemos usar a função value_counts() para criar um objeto Series que possui valores exclusivos e suas frequências acompanhantes, convertendo o array NumPy em uma série pandas. Os resultados podem ser impressos após iterar pelos itens do objeto Series.
Conclusão
Neste artigo, cobrimos vários métodos para contar a frequência de valores únicos em um array NumPy, como np.unique(), Collections.Counter(), np.bincount() e pandas.value_counts(). Esses métodos oferecem vantagens diferentes com base em seus requisitos específicos e nas bibliotecas disponíveis. Ao aplicar essas técnicas, você pode obter insights de seus dados de maneira eficaz e conduzir análises significativas com eficiência.