У меня есть следующие данные:
[4.1, 4.1, 4.1, 4.2, 4.3, 4.3, 4.4, 4.5, 4.6, 4.6, 4.8, 4.9, 5.1, 5.1, 5.2, 5.2, 5.3, 5.3, 5.3, 5.4, 5.4, 5.5, 5.6, 5.6, 5.6, 5.7, 5.8, 5.9, 6.2, 6.2, 6.2, 6.3, 6.4, 6.4, 6.5, 6.6, 6.7, 6.7, 6.8, 6.8]
Мне нужно построить таблицу подсчета / частоты следующим образом:
4.1 - 4.5: 8
4.6 - 5.0: 4
5.1 - 5.5: 10
5.6 - 6.0: 6
6.1 - 6.5: 7
6.6 - 7.0: 5
Ближайший результат, который я могу получить - следующий результат:
counts freqs
categories
[4.1, 4.6) 8 0.200
[4.6, 5.1) 4 0.100
[5.1, 5.6) 10 0.250
[5.6, 6.1) 6 0.150
[6.1, 6.6) 7 0.175
[6.6, 7.1) 5 0.125
Через этот код:
sr = [4.1, 4.1, 4.1, 4.2, 4.3, 4.3, 4.4, 4.5, 4.6, 4.6, 4.8, 4.9, 5.1, 5.1, 5.2, 5.2, 5.3, 5.3, 5.3, 5.4, 5.4, 5.5, 5.6, 5.6, 5.6, 5.7, 5.8, 5.9, 6.2, 6.2, 6.2, 6.3, 6.4, 6.4, 6.5, 6.6, 6.7, 6.7, 6.8, 6.8]
ncut = pd.cut(sr, [4.1, 4.6, 5.1, 5.6, 6.1, 6.6, 7.1],right=False)
srpd = pd.DataFrame(ncut.describe())
Мне нужно создать новый столбец, который является медианой значения «категорий» (например, для «[4.1, 4.6)», он содержит количество / частоту данных от 4.1 до 4.5 (не включая 4.6)) , Поэтому мне нужно получить (4.1 + 4.5) / 2, что равно 4.3.
Вот мои вопросы:
1) Как получить доступ к значениям в индексе «категорий», чтобы использовать его для вычислений, как указано выше?
2) Есть ли способ отразить диапазон следующим образом: 4.1 - 4.5, 4.6 - 5.0 и т. Д.?
3) Существует ли более простой способ вычисления среднего значения, медианы, режима и т. Д. Для сгруппированных данных, подобных этим? или мне нужно создавать свои собственные функции для них в Python?
Спасибо