как преобразовать value_counts () из pd.cut в словарь - PullRequest
0 голосов
/ 17 ноября 2018

Новичок в пандах,

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

Вот что я с ним делаю:

print pd.cut(data_lst, 5).value_counts()

data_lst - это список чисел, и строка кода выше дает довольно аккуратный результат, подобный этому, и это именно то, что мне нужно:

(-0.513, 25.6]      9
(25.6, 51.2]       43
(51.2, 76.8]      160
(76.8, 102.4]       0
(102.4, 128.0]    302

но я просто хочу, чтобы результат был dict как формат:

{
 "(-0.513, 25.6]":9,
 "(25.6, 51.2]":43,
 "(51.2, 76.8]":160,
 "(76.8, 102.4]":0,
 "(102.4, 128.0]":302    
}

Чтобы я мог сохранить это в базе данных, но я не мог найти способ получить этот результат, кроме как распечатать value_counts().

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018

После получения value_counts, конвертируйте индекс полученного Series в str.

vc = pd.cut(data_lst, 5).value_counts()
vc.index = vc.index.astype(str)
print vc.to_dict()

Для моего игрушечного примера это напечатано

{'(5.0, inf]': 4, '(2.0, 5.0]': 3, '(-inf, 2.0]': 3}

, которое яверь - это тот формат, который тебе нужен.

0 голосов
/ 17 ноября 2018

сохраните напечатанный элемент в переменную и преобразуйте этот информационный кадр в dict.

df = (pd.cut (data_lst, 5) .value_counts ())

dict_n = df.to_dict()

0 голосов
/ 17 ноября 2018

Я считаю, что это поможет ..

Просто возьмем пример DataFrame с использованием ..

См. Это Документация pandas.DataFrame.to_dict

>>> df = pd.DataFrame({'a': ['red', 'yellow', 'blue'], 'b': [0.5, 0.25, 0.125]})
>>> df
        a      b
0     red  0.500
1  yellow  0.250
2    blue  0.125

dict - по умолчанию: имена столбцов - это ключи, значения - словари индекса: пары данных

>>> df.to_dict('dict')
{'a': {0: 'red', 1: 'yellow', 2: 'blue'}, 'b': {0: 0.5, 1: 0.25, 2: 0.125}}

list - ключи - это имена столбцов, значения - это спискиданные столбца

>>> df.to_dict('list')
{'a': ['red', 'yellow', 'blue'], 'b': [0.5, 0.25, 0.125]}

Если вам нравятся значения, подобные кортежу, попробуйте ниже:

>>> {x[0]: x[1:] for x in df.itertuples(index=False)}
{'red': (0.5,), 'yellow': (0.25,), 'blue': (0.125,)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...