Comment compter la fréquence à laquelle une valeur se produit dans Pandas Dataframe

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

Parfois, lorsque vous travaillez avec une trame de données, vous pouvez vouloir compter le nombre de fois qu’une valeur apparaît dans la colonne ou, en d’autres termes, calculer la fréquence. Trois méthodes principales sont utilisées à cette fin. Examinons-les une par une.

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

Nous utiliserons le même DataFrame dans les prochaines sections comme suit,

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']
                    })  

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

Si vous voulez calculer la fréquence sur une seule colonne, cette méthode est la meilleure.

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)

Production:

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

Méthode Series.value_counts()

Comme chaque objet de la dataframe est une collection d’objets de la “série”, cette méthode est mieux utilisée pour l’objet “pandas.series”.

Maintenant, utilisez la fonction 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) 

Production:

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

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

Les deux méthodes ci-dessus ne peuvent pas être utilisées pour compter la fréquence de plusieurs colonnes mais nous pouvons utiliser df.groupby().size() pour plusieurs colonnes en même temps.

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)

Production:

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