预测python后有效地写入文件

我是编程新手,正在尝试减少将数据写入文件所需的时间,但我发现写入部分是主要问题。


以下是我的机器学习程序代码的一部分:


filename="data.csv"

f=open(filename,"w")

headers="row,open\n"

f.write(headers)


for i in range (0,55970):

    score=rf.predict(edit[i].reshape(1, -1))

    score=str(score).replace('[','').replace(']','')

    f.write(str(i) +","+ score +"\n")

    

f.close()

我知道我应该只在获得所有数据后才写入数据,但我不确定如何去做——因为我只知道 f.write()。我是否为我的预测和返回分数创建一个函数,然后创建一个列表来存储所有分数并将其写入?(如果可能的话)


[编辑]


score=rf.predict(edit)

with open('data.csv', 'w',newline='') as f:

    writer = csv.writer(f)

    writer.writerow(['row', 'open'])

    for i in range(55970):

        writer.writerow([i,str(score[i])])

^ 根据新建议添加。发现我应该只做预测,然后写下显着缩短时间的行!


感谢您的帮助!!


慕沐林林
浏览 88回答 1
1回答

汪汪一只猫

CSV 模块是一个更好的工具。更具体地说,writerows()是您正在寻找的东西。https://docs.python.org/3/library/csv.html#csv.csvwriter.writerows这是文档中的示例:import csvwith open('some.csv', 'w', newline='') as f:    writer = csv.writer(f)    writer.writerows(someiterable)import csvwith open('data.csv', 'w') as csv_file:    writer = csv.writer(csv_file)    writer.writerow(['row_id', 'open_flag'])    for i in range(55970):        score = str(rf.predict(edit[i].reshape(1, -1)))        score.replace('[', '').replace(']', '')        writer.writerow([i, score])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python