web-dev-qa-db-fra.com

Les pandas reçoivent les valeurs les plus fréquentes d'une colonne

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.

5
aleale

En utilisant mode 

df.name.mode()
Out[712]: 
0     alex
1    helen
dtype: object
15
Wen-Ben

Pas évident, mais rapide  

f, u = pd.factorize(df.name.values)
counts = np.bincount(f)
u[counts == counts.max()]

array(['alex', 'helen'], dtype=object)
4
piRSquared

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 

3
Lunar_one

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)
2
Brian

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
1
pault

Vous pouvez l'utiliser pour obtenir un nombre parfait, il calcule le mode d'une colonne particulière

df['name'].value_counts()
0
paul okoduwa