我想使用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'
我不知道我错过了什么。任何帮助表示赞赏。
答案 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'])
(不清楚您要达到的目标:))