【发布时间】:2020-06-08 05:58:00
【问题描述】:
我有以下字典:
rts = {
"PO1": {
"congruent": {
"rt": [0.647259, 0.720116, 0.562909, 0.538918, 0.633367],
"correct": ["True", "True", "True", "True", "True", "False",]
},
"incongruent": {
"rt": [0.647259, 0.720116, 0.562909, 0.538918, 0.633367],
"correct": ["True", "True", "True", "True", "True", "False",]
}
},
"PO2": {
"congruent": {
"rt": [0.647259, 0.720116, 0.562909, 0.538918, 0.633367],
"correct": ["True", "True", "True", "True", "True", "False",]
},
"incongruent": {
"rt": [0.647259, 0.720116, 0.562909, 0.538918, 0.633367],
"correct": ["True", "True", "True", "True", "True", "False",]
}
}
}
这是我目前的代码:
import csv
from pathlib import Path
import json
import numpy as np
from numpy import array
def main():
rts = {}
statsDict = {}
data = Path('C:/Users/oli.warriner/Desktop/data(2)/data')
for csvfile in data.glob('*.csv'):
key = csvfile.stem
with csvfile.open() as f:
csv_reader = csv.reader(f)
# Skip the header
_ = next(csv_reader)
rts[key] = {
'congruent': {
'rt': [],
'correct': []
},
'incongruent': {
'rt': [],
'correct': []
},
}
for tn, ctext, cname, condition, response, rt, correct in csv_reader:
rts[key][condition]['rt'].append(float(rt))
rts[key][condition]['correct'].append(correct)
for k in rts:
key = k
statsDict[key] = {
'congruent': {
'mean': [],
'stddev': [],
'correct': []
},
'incongruent': {
'mean': [],
'stddev': [],
'correct': []
},
}
for n in rts[k]:
for i in rts[key][n]
array([rts[k] for k in rts]).mean()
print(array)
if __name__ == "__main__":
main()
我正在读取一个 csv 文件目录来生成您在上面看到的“rts”字典(它比我刚刚在这里缩短的要大得多)。
我现在要做的是使用“rts”字典来填充“statsDict”。
我需要遍历“rts”字典并分别计算每个键的“congruent”和“incongruent”值中的“rt”值的平均值和标准差。
然后我需要为每个键使用“正确”中的布尔值来计算每个键的真值百分比。
我正在设法遍历字典的前几层,但是现在我有点迷茫,我不知道如何进入下一层并开始进行我需要的统计计算。
希望这对人们来说已经足够清楚了。如果您有任何问题,请告诉我。 提前致谢!
【问题讨论】:
-
请检查您输入的内容!为什么每个
"PO*"条目都有两次"congruent"条目? -
@SimonFink 我很抱歉!很好发现,我已经相应地更新了。
-
另一个提示。在尝试提供minimal reproducable example 时,您可以省略创建
rts的方式。示例数据就足够了。请专注于你想要完成的事情。
标签: python dictionary nested statistics