Процентиль из списка словаря

У меня проблема с извлечением значений из словаря. Я создал этот словарь из файла CSV. Однако я застрял, когда пытался извлечь значение процентиля для каждого ключа в словаре. Мой словарь выглядит так:

dic = {'2008': [10,20, 56, 30, 57], '1950': [10.1,59.6, 56, 30.8, 99.6]}. 

Я хотел бы, чтобы мой вывод был следующим:

1950,56.0
2008,30.0

Что я пробовал до сих пор:

import numpy as np

dic ={}

pert ={'key':'value'}
for k in dic.keys():

    for items in dic[k]:
    p = np.percentile(items,95)
    pert[k] = p

person Peeriich    schedule 01.12.2015    source источник
comment
В примере кода вы говорите percentile(items,95), что намекает на то, что вам нужен 95-й процентиль, но в вашем примере результат, который вы запрашивали, является медианой каждого списка. Что вы на самом деле хотите, чтобы этот код делал? Можете ли вы объяснить, почему ответ должен быть таким, как вы говорите?   -  person David K    schedule 02.12.2015
comment
Ханно, язык на питоне. Давид, ты прав. было несоответствие в коде. процентиль 95 будет заменен на 50.   -  person Peeriich    schedule 03.12.2015


Ответы (1)


Это делает словарь с 95-м процентилем:

dic = {'2008': [10,20, 56, 30, 57], '1950': [10.1,59.6, 56, 30.8, 99.6]}
res = {k: np.percentile(v, 95) for k, v in dic.items()}

Содержание res:

{1950': 91.599999999999994, '2008': 56.799999999999997}

Получите медиану с помощью:

>>> {k: np.median(v) for k, v in dic.items()}
{'1950': 56.0, '2008': 30.0}
person Mike Müller    schedule 01.12.2015
comment
Спасибо, Майк. Цените свое время - person Peeriich; 03.12.2015
comment
Вы можете принять ответ, если он решит вашу проблему. - person Mike Müller; 03.12.2015