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

Ahmed Waheed 30 janvier 2023
  1. Méthode df.groupby().count()
  2. Méthode Series.value_counts()
  3. Méthode df.groupby().size()
Comment compter la fréquence à laquelle une valeur se produit dans Pandas Dataframe

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