python分析数据csv文件

python分析数据csv文件,python,median,Python,Median,我一直在尝试简单地分析响应时间数据的方法,因为不可能为每个参与者手动完成。然而,由于某些原因,我的代码似乎不起作用。所以基本上我想看看1到4块的响应时间,精度为1,prob_试验为1,但是我的代码显然不允许我这样做。你有什么建议吗 我的csv文件内容如下所示: Block,Trial_number,Position,Probability Position,Probability State,Probability trial,Response,Accuracy,RT (ms) 1,1,N,No

我一直在尝试简单地分析响应时间数据的方法,因为不可能为每个参与者手动完成。然而,由于某些原因,我的代码似乎不起作用。所以基本上我想看看1到4块的响应时间,精度为1,prob_试验为1,但是我的代码显然不允许我这样做。你有什么建议吗

我的csv文件内容如下所示:

Block,Trial_number,Position,Probability Position,Probability State,Probability trial,Response,Accuracy,RT (ms)
1,1,N,None,None,1,N,1,976.451326394
1,2,X,None,None,1,X,1,935.360659205
1,3,M,0.9,0.81,2,M,1,936.700751889
1,4,Z,0.81,None,2,Z,1,904.942057532
1,5,X,0.9,0.81,2,X,1,952.641545009
1,6,Z,0.81,None,2,Z,1,553.098919248
我的代码是:

for fnam in d_list:
    if fnam[-4:] == '.csv':

        f_in = path1 + '/' + fnam



        with open(f_in) as csvfile:
            reader = csv.DictReader(csvfile)

            for row in reader:


                block_no.append(int(row['Block']))
                trial_no.append(int(row['Trial_number']))
                prob_trial.append(int(row['Probability trial']))
                accuracy.append(int(row['Accuracy']))
                rt.append(float(row['RT (ms)']))

           for x in block_no:
                if x < 5:f
                    for y in accuracy:
                        if y == 1:
                            for z in prob_trial:
                                if z == 1:
                                    epoch1_improbable.append(rt)

           epoch1_improbable_rt = mean(epoch1_improbable)

这是一个完美的用例,通过它可以获得您想要的结果

import pandas as pd
df = pd.read_csv('data.csv')
mask = (df['Block'] < 5) & (df['Accuracy'] == 1) & (df['Probability trial'] == 1)
print(df[mask]['RT (ms)'].mean())  # 955.9059927994999

欢迎来到StackOverflow。您有标记中值,但您的代码计算平均值。你想要哪个?此外,您的代码不完整,因为您没有给我们d_list的值,但它与您的问题无关。请将您的代码编辑为显示您的问题的最小但完整的示例。看见另外,你的描述我的代码显然不允许我这么做,这太模糊了。您希望从示例输入中得到什么样的输出?您现在得到了什么?非常感谢。您将如何修改它以打开文件夹中的所有data.csv文件?也就是说,Data_1.csv、Data_2.csv等取决于您是想要每个单独的方法,还是想要同时使用所有方法?在前一种情况下,循环就可以了。在后者中,您可以先合并它们,然后计算平均值。在中,最简单的方法是作为循环的一部分合并,但值得注意的是,这使得此类操作特别简单。如何在4和9之间指定块,我尝试了以下方法:df['Block']>4,最简单的方法是只执行df['Block']<4&df['Block']<9非常感谢。你把我的工作简化了不少。