Ответ 1
Используя mode
df.name.mode()
Out[712]:
0 alex
1 helen
dtype: object
У меня есть этот фреймворк:
0 name data
1 alex asd
2 helen sdd
3 alex dss
4 helen sdsd
5 john sdadd
поэтому я пытаюсь получить наиболее частое значение или значения (в этом случае его значения), так что я делаю:
dataframe['name'].value_counts().idxmax()
но он возвращает только значение: Алекс, даже если это Хелен появляется два раза.
Используя mode
df.name.mode()
Out[712]:
0 alex
1 helen
dtype: object
Вы можете попробовать argmax
следующим образом:
dataframe['name'].value_counts().argmax() Out[13]: 'alex'
value_counts
возвратит объект count pandas.core.series.Series
и argmax
можно использовать для достижения ключа максимальных значений.
Не очевидно, но быстро
f, u = pd.factorize(df.name.values)
counts = np.bincount(f)
u[counts == counts.max()]
array(['alex', 'helen'], dtype=object)
Здесь один из способов:
df['name'].value_counts()[df['name'].value_counts() == df['name'].value_counts().max()]
который печатает:
helen 2
alex 2
Name: name, dtype: int64
Вы можете использовать это, чтобы получить идеальный счет, он вычисляет режим определенного столбца
df['name'].value_counts()
Чтобы получить n
наиболее часто встречающихся значений, просто .value_counts()
и возьмите индекс:
# get top 10 most frequent names
n = 10
dataframe['name'].value_counts()[:n].index.tolist()
Вы можете использовать.apply и pd.value_counts, чтобы получить подсчет всех имен в столбце имен.
dataframe['name'].apply(pd.value_counts)
чтобы получить топ 5:
dataframe['name'].value_counts()[0:5]
Чтобы получить пятерку самых распространенных имен:
dataframe['name'].value_counts().head()
df['name'].value_counts()[:5].sort_values(ascending=False)
value_counts
вернет объект подсчета pandas.core.series.Series
, а sort_values(ascending=False)
сначала получит самые высокие значения.