Como contar a freqüência em que um valor ocorre em Pandas Dataframe

  1. df.groupby().count() Método
  2. Series.valor_contas() Método
  3. df.groupby().size() Método

Às vezes, quando você estiver trabalhando com dados, talvez queira contar quantas vezes um valor ocorre na coluna ou, em outras palavras, para calcular a freqüência. São usados principalmente três métodos para este fim. Vamos dar uma olhada neles, um a um.

  1. df.groupby().count()
  2. Series.valor_contas()
  3. df.groupby().size()

Utilizaremos o mesmo DataFrame nas próximas seções como a seguir,

import pandas as pd

df = pd.DataFrame({
                    'A': [
                        'jim',
                        'jim',
                        'jim',
                        'jim',
                        'sal',
                        'tom',
                        'tom',
                        'sal',
                        'sal'],
                    'B': [
                        'a',
                        'b', 
                        'a', 
                        'b', 
                        'b', 
                        'b', 
                        'a', 
                        'a', 
                        'b']
                    })  

df.groupby().count() Método

Se você quiser calcular a freqüência em uma única coluna, então este método é o melhor.

import pandas as pd

df = pd.DataFrame({
                    'A': [
                        'jim',
                        'jim',
                        'jim',
                        'jim',
                        'sal',
                        'tom',
                        'tom',
                        'sal',
                        'sal'],
                    'B': [
                        'a',
                        'b', 
                        'a', 
                        'b', 
                        'b', 
                        'b', 
                        'a', 
                        'a', 
                        'b']
                    })  

freq = df.groupby(['A']).count() 
print(freq)

freq = df.groupby(['B']).count() 
print(freq)

O seguinte será emitido.

     B
A     
jim  4
sal  3
tom  2
   A
B   
a  4
b  5

Series.valor_contas() Método

Como todo objeto dataframe é uma coleção de objetos Series, este método é melhor utilizado para objetos pandas.Series.

Agora utilize a função Series.values_counts().

import pandas as pd

df = pd.DataFrame({
                    'A': [
                        'jim',
                        'jim',
                        'jim',
                        'jim',
                        'sal',
                        'tom',
                        'tom',
                        'sal',
                        'sal'],
                    'B': [
                        'a',
                        'b', 
                        'a', 
                        'b', 
                        'b', 
                        'b', 
                        'a', 
                        'a', 
                        'b']
                    })  

freq = df['A'].value_counts() 
print(freq) 

freq = df['B'].value_counts() 
print(freq) 

O seguinte será produzido.

jim    4
sal    3
tom    2
Name: A, dtype: int64
b    5
a    4
Name: B, dtype: int64

df.groupby().size() Método

Os dois métodos acima não podem ser utilizados para contar a freqüência de múltiplas colunas, mas podemos utilizar df.groupby().size() para múltiplas colunas ao mesmo tempo.

import pandas as pd

df = pd.DataFrame({
                    'A': [
                        'jim',
                        'jim',
                        'jim',
                        'jim',
                        'sal',
                        'tom',
                        'tom',
                        'sal',
                        'sal'],
                    'B': [
                        'a',
                        'b', 
                        'a', 
                        'b', 
                        'b', 
                        'b', 
                        'a', 
                        'a', 
                        'b']
                    })  

freq = df.groupby(['A', 'B']).size() 
print(freq)

O seguinte será emitido.

A    B
jim  a    2
     b    2
sal  a    1
     b    2
tom  a    1
     b    1
dtype: int64

Artigo relacionado - Pandas DataFrame

  • Converter Pandas Dataframe em Dicionário
  • Pandas Copiar DataFrame