Comment trouver avec pandas la valeur la plus fréquente dans une colonne d'une DataFrame ?

Published: 22 septembre 2023

Tags: Python; Pandas; Dataframe;

DMCA.com Protection Status

Pandas propose plusieurs façons de trouver la valeur la plus fréquente dans une colonne d'une dataframe. La plus simple consiste à utiliser la méthode mode(), qui renvoie la valeur la plus fréquente.

Commençons par générer une DataFrame pandas :

import pandas as pd
import numpy as np
import random

np.random.seed(42)

data = np.random.randint(0,5,10)

data = { 'Age':np.random.randint(0,5,10)+20,
         'Gender':[np.random.choice(['Male', 'Female', 'Unknown']) for i in range(10)]
}

df = pd.DataFrame(data,columns=['Age','Gender'])

print(df)

donne

   Age   Gender
0   23   Female
1   22   Female
2   24     Male
3   21     Male
4   23     Male
5   21  Unknown
6   23  Unknown
7   24  Unknown
8   20   Female
9   23  Unknown

Utilisation de la méthode mode() de pandas

Pour trouver la valeur la plus fréquente dans la colonne "Âge" :

df['Age'].mode()

donne

0    23
Name: Age, dtype: int64

Pour obtenir la valeur :

df['Age'].mode()[0]

Pour donner un autre exemple, considérez la colonne "Genre" contenant des variables catégoriques.

df['Gender'].mode()

donne

0    Unknown

Name: Gender, dtype: object

Utilisation de value_counts() de pandas

Une autre approche utile consiste à utiliser la méthode value_counts(). Cela vous donne une liste complète des valeurs dans une colonne, ainsi que le nombre de fois où chacune apparaît. Vous pouvez ensuite utiliser ces informations pour déterminer quelle valeur est la plus fréquente:

df['Age'].value_counts()

donne

    23    4
    24    2
    21    2
    22    1
    20    1
    Name: Age, dtype: int64

Pour accéder à la valeur la plus fréquente, une solution consiste à faire:

df['Age'].value_counts().index[0]

donne

23

Et pour obtenir le nombre d'occurrences de 23.

df['Age'].value_counts().values[0]

donne

4

Utilisation de pandas groupby()

Enfin, si votre ensemble de données contient plusieurs colonnes qui contiennent des valeurs en double, il peut être utile d'utiliser les méthodes groupby() et size() pour regrouper les valeurs similaires ensemble, puis trouver celle qui est la plus fréquente. Cette approche peut être utile si vous souhaitez comparer plusieurs colonnes à la fois.

Exemple:

df.groupby(by='Gender').agg('count')

donne

             Age
    Gender      
    Female     3
    Male       3
    Unknown    4

Trier les valeurs par âge :

dfg = df.groupby(by='Gender').agg('count')

dfg.sort_values(by='Age',ascending=False)

Extraire la première ligne :

dfg.sort_values(by='Age',ascending=False).reset_index().iloc[0]

donne

    Gender    Unknown
    Age             4
    Name: 0, dtype: object

Références

Liens Site
mode() pandas.pydata.org
value_counts() pandas.pydata.org
groupby() pandas.pydata.org