计算dict值的pearson p值时遇到问题

时间:2019-07-12 10:12:54

标签: python pandas dictionary pearson

我想使用for循环为两个字典的值计算出pearson p值。 词典表示两个数据帧的数据,其中一个具有某些更改。 字典包含有关列名称,键和每列直方图值的信息。所以基本上我想为这两个字典计算每列的p值

这两个词典都具有以下结构:

{'columnname1': {'keys': [0, 46.72, 50], 'values': [41, 13, 23, 21...0, 0, 1]},
'columnname2': {'keys': [0, 20, 50], 'values': [21, 43, 25, 2...0, 3, 15},...}

要计算每一列的p值,我尝试执行下一个功能:

    def ChiTest(hist_1, hist_2):
    hist = {}
    for column1 in hist_1.keys():
        for column2 in hist_1.keys():
            hist[column1] = {}
            hist[column1]['keys'] = hist_2[column2]['keys']
            hist[column1]['pearson'] = pearsonr(hist_1[column1]['values'], hist_2[column2]['values'])
    return (hist)


test = ChiTest(one, two)

hist [column] ['keys]]工作正常,但 hist [column] ['pearson'] = pearsonr(hist_2 [column] ['values'],hist_1 [column] ['values' ])引发KeyError消息

KeyError: 'values'  

我不知道我错过了什么。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

好吧,现在原来的答案已经过时了。 您想要在历史记录输出中使用哪些键? 这可能是错误的。您希望hist返回什么?

for column1 in hist_1.keys():
    for column2 in hist_2.keys():
        hist[(column1, column2)] = {}
        hist[(column1, column2)]['keys'] = hist_2[column2]['keys']
        hist[(column1, column2)]['pearson'] = pearsonr(hist_2[column2]['values'], hist_1[column1]['values'])

(不清楚您要达到的目标:))