Cómo contar la frecuencia con la que un valor se produce en Pandas DataFrame

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

A veces, cuando se trabaja con dataframe, se puede querer contar cuántas veces se produce un valor en la columna o, en otras palabras, calcular la frecuencia. Principalmente se utilizan tres métodos para este propósito. Echemos un vistazo a ellos uno por uno.

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

Usaremos el mismo DataFrame en las siguientes secciones como sigue,

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

Si quieres calcular la frecuencia sobre una sola columna, entonces este método es el mejor.

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)

Se obtendrá lo siguiente.

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

Método Series.value_counts()

Como cada objeto dataframe es una colección de objetos Series, este método se utiliza mejor para el objeto pandas.Series.

Ahora usa la función 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) 

Lo siguiente será la salida.

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

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

Los dos métodos anteriores no se pueden utilizar para contar la frecuencia de múltiples columnas, pero podemos utilizar df.groupby().size() para múltiples columnas al mismo tiempo.

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)

Se obtendrá lo siguiente.

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

Artículo relacionado - Pandas DataFrame

  • Convertir Pandas DataFrame en un diccionario