我正在迭代地计算以下分数,在每次迭代中生成以下分数的新集合:add_score, keep_score, del_score = get_corpus_sari_operation_scores(sources, prediction, references)
我首先想把它们存储到一个文件中,现在我把它们作为一个元组添加到一个列表中,并把列表(~9000行)存储到一个文件中:
stat = add_score, keep_score, del_score
stats.append(stat)
f = open("./resources/outputs/generate/stats.txt", "w")
for stat in stats:
print('stat type', type(stat))
f.write(stat)
f.write("\n")
f.close()
stats.txt文件中的值如下所示:
(2.0, 28.25187646117879, 69.96132803170339)
(0.0, 23.357228195937875, 50.342178147056195)
(1.7241379310344827, 25.888065422949147, 40.21927767354597)
(0.0, 47.375201191814064, 16.312725613543307)
(1.7857142857142856, 14.565677966101696, 54.81682319618366)
(0.0, 63.79656946826759, 9.200422070604626)
我想做的是用另一种方法重新访问这些数据,并从文件中读取,我的目标是计算每列的平均值,即mean(add_score)
,mean(keep_score)
,mean(del_score)
。
然而,文件的值是作为元组/系列访问的。我试图将元组转换为 Dataframe ,然后对每列使用mean()
方法,但我很难将元组转换为 Dataframe 。
有没有人对如何处理这些数据有更好的想法?我想知道有没有更好的方法将所有评分结果存储在一个文件中,然后计算每列的平均值。
2条答案
按热度按时间qf9go6mv1#
......努力将元组转换为 Dataframe 。
您抱怨文件格式不方便。因此请使用熟悉的CSV。
然后,一个简单的
df = pd.read_csv('stats.txt')
就足够了。或者,分配
df = pd.DataFrame(stats, columns=('add', 'keep', 'del'))
,然后分配df.write_csv('stats.txt')
,而不是创建CSV Writer或DictWriter。omhiaaxx2#
所以最后,J_H的解决方案像奇迹一样工作。我实现了:
并添加
newline=''
以避免打印空行。然后,我访问了我的数据,并计算了没有dtype的平均值,如下所示:
avg_add= df['add'].mean().item()