Как узнать номер самого большого кластера?
Я не понимаю, как вывести номер самого большого кластера. Есть столбец в датафрейме, где каждой строчке соответствует номер какого-то кластера, всего кластеров 10, их номера с 0-9, я могу посчитать количество раз сколько встречается каждый кластер, но я не знаю, как вывести номер кластера, который чаще всего встречается
Вот мой код:
print(df)
ser=df.groupby('cluster').size() # считаем сколько раз встречается каждый кластер
print(type(ser))
m=ser[df_2==ser.max()] #строка с самым часто встречающимся кластером
print(m)
Ответы (1 шт):
Не совсем ясно, чего вы хотите, потому я приведу больше возможностей.
В качестве примера я буду пользоваться таким датафреймом:
>>> df
R G B cluster 0 116 116 116 7 1 2 2 2 5 2 162 162 162 8 3 106 106 106 4 4 94 94 94 6 5 206 206 206 7 6 135 135 135 7 7 8 8 8 8 8 182 182 182 8 9 213 213 213 4 10 14 14 14 9 11 183 183 183 9
Когда вы хотите получить номер кластера, который чаще всего встречается
(таких номеров может быть больше):
>>> df.cluster.mode().tolist()
[7, 8]
Когда вы хотите получить их количество:
>>> df.cluster.mode().count()
2
Koгда вы хотите получить все строки с такими кластерaми:
>>> df[df.cluster.isin(df.cluster.mode())]
R G B cluster 0 116 116 116 7 2 162 162 162 8 5 206 206 206 7 6 135 135 135 7 7 8 8 8 8 8 182 182 182 8
Когда вы хотите получить количество таких строк:
>>> len(df[df.cluster.isin(df.cluster.mode())])
6
или
>>> df[df.cluster.isin(df.cluster.mode())].shape[0]
6
Когда вы хотите получить, сколько раз встречается каждый кластер:
>>> df.cluster.value_counts()
cluster 7 3 8 3 4 2 9 2 5 1 6 1 Name: count, dtype: int64
Когда вы хотите получить максимальное количество совпадений:
>>> df.cluster.value_counts().max()
3
или
>>> df.cluster.value_counts().iloc[0]
3
