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 pdimport numpy as npimport randomnp.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 Gender0 23 Female1 22 Female2 24 Male3 21 Male4 23 Male5 21 Unknown6 23 Unknown7 24 Unknown8 20 Female9 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 23Name: 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 424 221 222 120 1Name: 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
AgeGenderFemale 3Male 3Unknown 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 UnknownAge 4Name: 0, dtype: object
Références
| Liens | Site |
|---|---|
| mode() | pandas.pydata.org |
| value_counts() | pandas.pydata.org |
| groupby() | pandas.pydata.org |
