Гистограмма Python из словаря

77
8

У меня есть словарь, который выглядит следующим образом:

dict = {1092267: '0.187', 524292: '-0.350', 524293: '0.029', 524294: '0.216'}

Таким образом, есть id, а затем значение, которое внутри строки (настоящий словарь содержит 10 000 этих идентификаторов). Я хочу сделать гистограмму с осью x, чтобы абсолютные значения значений внутри этих строк давали 0-0.1, 0.1-0.2, 0.2-0.3 и т.д. Вплоть до 0.9-1.0. Ось y должна подсчитывать количество вхождений значений в пределах этих диапазонов 0-0,1 и т.д. Как это сделать?

спросил(а) 2021-01-25T15:29:52+03:00 4 месяца, 2 недели назад
1
Решение
89

Вы можете использовать numpy.histogram для создания гистограмм. Прежде всего, получите абсолютные значения всех значений словаря (поскольку идентификаторы неактуальны).

dict_values = [abs(float(i)) for i in dict.values()]

Затем используйте numpy.histogram указав диапазон значений явно.

import numpy as np
hist = np.histogram(dict_values, range=(0.0,1.0))

ответил(а) 2021-01-25T15:29:52+03:00 4 месяца, 2 недели назад
44

Без использования numpy.histogram вы можете попробовать:

test = {1092267: '0.187', 524292: '-0.350', 524293: '0.029', 524294: '0.216'}

intervals = [(-2, 0.1), (0.1, 0.2), (0.2, 0.3), (0.3, 0.4)]
count = []

for inf, sup in intervals:
count.append(len([x for x in test.values() if inf < float(x) < sup]))

Тогда счет, который является гистограммой, будет иметь [2, 1, 1, 0]. Таким образом вы можете указать произвольные диапазоны для определения бункеров. Если вы хотите построить его, вы можете использовать matplotlib (пример здесь).

1: http://matplotlib.org/1.3.0/examples/pylab_examples/histogram_demo_extended.html

ответил(а) 2021-01-25T15:29:52+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема