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 DataFrame, 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 Series, 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

Article connexe - Pandas DataFrame

  • Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
  • Comment supprimer une colonne de Pandas DataFrame
  • Comment convertir la colonne DataFrame en date-heure dans Pandas
  • Comment convertir un float en un entier dans Pandas DataFrame