我正在迭代计算以下分数,生成一组新的以下分数 在每次迭代中:
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 per colum,因此
mean(add_score)
, mean(keep_score)
, mean(del_score)
.
但是,文件的值作为元组/系列访问。 我尝试将元组转换为数据框,然后对每个列使用
mean()
方法,但我很难将元组转换为数据框。
有没有人对如何处理这些数据有更好的想法?我想知道是否有更好的方法将所有评分结果存储在一个文件中,然后计算每列的平均值。
我无法添加评论,但为什么不先将值放入 DataFrame,然后取平均值,然后写入?
...努力将元组转换为数据框。
你在抱怨文件格式不方便。 所以使用熟悉的CSV 格式代替。
import csv
with open("resources/outputs/generate/stats.txt", "w") as f:
sheet = csv.writer(f)
sheet.writerow(('add', 'keep', 'del'))
for stat in stats:
sheet.writerow(stat)
然后一个简单的
df = pd.read_csv('stats.txt')
就足够了。
或者,分配
df = pd.DataFrame(stats, columns=('add', 'keep', 'del'))
然后 df.write_csv('stats.txt')
代替
创建 CSV Writer 或 DictWriter。