Как узнать номер самого большого кластера?

Я не понимаю, как вывести номер самого большого кластера. Есть столбец в датафрейме, где каждой строчке соответствует номер какого-то кластера, всего кластеров 10, их номера с 0-9, я могу посчитать количество раз сколько встречается каждый кластер, но я не знаю, как вывести номер кластера, который чаще всего встречается

Вот мой код:

print(df)
ser=df.groupby('cluster').size() # считаем сколько раз встречается каждый кластер

print(type(ser))

m=ser[df_2==ser.max()] #строка с самым часто встречающимся кластером
print(m)

Вот данные, которые я могу вывести


Ответы (1 шт):

Автор решения: MarianD

Не совсем ясно, чего вы хотите, потому я приведу больше возможностей.

В качестве примера я буду пользоваться таким датафреймом:

 >>> 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
→ Ссылка