Как найти максимальное встречающееся значение в 2-мерном массиве?
Есть DataFrame: 3 колонки (float), 100 строк.
Задача: найти максимальное встречающееся значение в этом 2-мерном массиве. Не отдельно в каждой колонке, а в целом массиве!
Пример: значение 1.274 (15-раз встречалось в массиве)
По возможности выявлять, что только значение максимально встречающееся (т.е. если встречается более 10 раз, допустим, если меньше то и не надо)? И возможно ли само это значение (float) со счетчиком где-то отдельно хранить или передавать в переменные или в массив?
Ответы (1 шт):
Можно сначала выпрямить таблицу, воспользовавшись .stack(), превратив ее в список (Series). После этого воспользоваться методом .mode(), который тоже возвращает Series и наконец взять первый элемент этого ряда:
res = df.stack().mode().iloc[0]
Пример:
In [131]: df
Out[131]:
a b c
0 1 2 3
1 2 4 2
2 1 4 8
In [132]: df.stack().mode().iloc[0]
Out[132]: 2
Пошагово:
In [133]: df.stack()
Out[133]:
0 a 1
b 2
c 3
1 a 2
b 4
c 2
2 a 1
b 4
c 8
dtype: int64
In [134]: df.stack().mode()
Out[134]:
0 2
dtype: int64
In [135]: df.stack().mode().iloc[0]
Out[135]: 2
UPD: чтобы получить частотность значений:
In [137]: df.stack().value_counts()
Out[137]:
2 3
4 2
1 2
8 1
3 1
dtype: int64