Панды получают наиболее частые значения столбца

У меня есть этот фреймворк:

0 name data
1 alex asd
2 helen sdd
3 alex dss
4 helen sdsd
5 john sdadd

поэтому я пытаюсь получить наиболее частое значение или значения (в этом случае его значения), так что я делаю:

dataframe['name'].value_counts().idxmax()

но он возвращает только значение: Алекс, даже если это Хелен появляется два раза.

Ответ 1

Используя mode

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

Ответ 2

Вы можете попробовать argmax следующим образом:

dataframe['name'].value_counts().argmax() Out[13]: 'alex'

value_counts возвратит объект count pandas.core.series.Series и argmax можно использовать для достижения ключа максимальных значений.

Ответ 3

Не очевидно, но быстро

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

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

Ответ 4

Здесь один из способов:

df['name'].value_counts()[df['name'].value_counts() == df['name'].value_counts().max()]

который печатает:

helen    2
alex     2
Name: name, dtype: int64

Ответ 5

Вы можете использовать это, чтобы получить идеальный счет, он вычисляет режим определенного столбца

df['name'].value_counts()

Ответ 6

Чтобы получить n наиболее часто встречающихся значений, просто .value_counts() и возьмите индекс:

# get top 10 most frequent names
n = 10
dataframe['name'].value_counts()[:n].index.tolist()

Ответ 7

Вы можете использовать.apply и pd.value_counts, чтобы получить подсчет всех имен в столбце имен.

dataframe['name'].apply(pd.value_counts)

Ответ 8

чтобы получить топ 5:

dataframe['name'].value_counts()[0:5]

Ответ 9

Чтобы получить пятерку самых распространенных имен:

dataframe['name'].value_counts().head()

Ответ 10

df['name'].value_counts()[:5].sort_values(ascending=False)

value_counts вернет объект подсчета pandas.core.series.Series, а sort_values(ascending=False) сначала получит самые высокие значения.