j'ai cette dataframe:
0 name data
1 alex asd
2 helen sdd
3 alex dss
4 helen sdsd
5 john sdadd
donc j'essaie d'obtenirla valeur ou les valeurs les plus fréquentes (dans ce cas ses valeurs) donc ce que je fais est:
dataframe['name'].value_counts().idxmax()
mais il ne retourne que la valeur: Alex même si cela Helen apparaît également deux fois.
En utilisant mode
df.name.mode()
Out[712]:
0 alex
1 helen
dtype: object
Pas évident, mais rapide
f, u = pd.factorize(df.name.values)
counts = np.bincount(f)
u[counts == counts.max()]
array(['alex', 'helen'], dtype=object)
Vous pourriez essayer argmax
comme ceci:
dataframe['name'].value_counts().argmax()
Out[13]: 'alex'
Le value_counts
retournera un objet count de pandas.core.series.Series
et argmax
pourrait être utilisé pour obtenir la clé de valeurs maximales
Vous pouvez utiliser .apply et pd.value_counts pour obtenir le nombre d'occurrences de tous les noms dans la colonne de noms.
dataframe['name'].apply(pd.value_counts)
Voici un moyen:
df['name'].value_counts()[df['name'].value_counts() == df['name'].value_counts().max()]
qui imprime:
helen 2
alex 2
Name: name, dtype: int64
Vous pouvez l'utiliser pour obtenir un nombre parfait, il calcule le mode d'une colonne particulière
df['name'].value_counts()