Чтобы получить процент, вы можете использовать value_counts
с normalize=True
forum_percents = df['forum'].value_counts(normalize=True)
panorama 0.4
kultur 0.2
test 0.2
inland 0.2
Name: forum, dtype: float64
И затем найти top-3:
top_3_forums = forum_percents.sort_values(ascending=False).head(3)
panorama 0.4
inland 0.2
test 0.2
Name: forum, dtype: float64
Наконец, добавьте строку «Другие»:
forums = top_3_forums.append(pd.Series([1 - top_3_forums.sum()], index=['Others']))
panorama 0.4
inland 0.2
test 0.2
Others 0.2
dtype: float64