Comment compter la fréquence à laquelle une valeur se produit dans Pandas Dataframe
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.
df.groupby().count()
Series.value_counts()
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