有关编辑python代码的建议

时间:2014-05-21 09:44:37

标签: python psychopy

我正在使用使用Python代码的PsychoPy创建神经心理学任务。 我正在创建一个GoNoGo任务,并有一个刺激列表(正面,负面和中性词)。我有一定数量的块(18),并且这些词的目标和干扰物的价数固定在每个块中(即,块1 =目标:正,干扰:中性等)。在每个区块内,有8个目标和8个牵引器单词以随机顺序出现(无需替换)。

所以,我希望心理学从每个区块的目标(8个单词)和分心者(8个单词)的相对效价中随机选择16个单词。

我对代码没有经验,但想知道是否有人能够帮助我解决这个问题。

要让心理模型随机选择每个块的单词,我想要一个代码,要求心理模板从特定位置读取excel文件,随机随机播放该文件中某列中的单词,将所有这些单词拆分为将该列分成8个单词的块,然后重复18次,最后将这8个单词的新块写入新文件。

我想要一个代码,要求程序从特定位置读取excel文件,随机随机播放该文件中某列中的单词,将该列中的所有单词拆分为8个单词的块,然后重复这18次,最后将这8个单词的新块写入一个新文件。

到目前为止,这是我的代码:

file.read(pathnameOfExcelFile.xlsx)
List=[excel column name]
Random.shuffle(list)
NewList=(List) #8words to be randomly chosen fromlist for this new list
NewList.remove(random.shuffle)
#to remove the word once randomised
NewList([18]*repetitions)
#repeat sequence above 18 times
file.write(newfilename.xlsx)

这有意义吗?有人会知道如何帮助我吗?

非常感谢任何帮助!

谢谢你,凯特

2 个答案:

答案 0 :(得分:1)

我认为你有正确的想法。

要读取excel文件,可以使用python包Pandas。

import pandas as pd
import random

data = pd.read_excel('file.xlsx','Sheet1') #Sheet1 name of the file
words = data['column_of_interest'].values #Select column containing words

random.shuffle(words)

一旦你的名单被洗牌,我认为你可以拿8个第一个元素,然后再拿8个......,

cpt = 0
chunks = {}
chunk = []
for e in range(len(list)):
    chunk.append(list[e])
    if len(chunk) == 8:
       chunks[cpt] = chunk
       cpt += 1
       chunk = []
if chunk != []:
    chunks[cpt] = chunk  # the last elements

你现在有一个大块的字典。 你可以这样迭代(并在循环中写入一个新文件):

for i in chunks:
    chunk = chunks[i]

答案 1 :(得分:0)

这应该让你开始:

import xlrd
import random
workbook = xlrd.open_workbook('test.xlsx') # open excel file

worksheet = workbook.sheet_by_name('Sheet1') 

words= [ str(x) for x in worksheet.col_values(colx=1) if x] # words in column 1

random.shuffle(words)

newList = [random.choice(words) for i in range(8) ] #8words to be randomly chosen fromlist for this new list

您需要查看一些xls读者和作者xlswriterxlrd