如何将浮点数元组存储到文件中,打开并读取它以提取每列的平均值?

问题描述 投票:0回答:2

我正在迭代计算以下分数,生成一组新的以下分数 在每次迭代中:

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()
方法,但我很难将元组转换为数据框。

有没有人对如何处理这些数据有更好的想法?我想知道是否有更好的方法将所有评分结果存储在一个文件中,然后计算每列的平均值。

python file tuples mean
2个回答
0
投票

我无法添加评论,但为什么不先将值放入 DataFrame,然后取平均值,然后写入?


0
投票

...努力将元组转换为数据框。

你在抱怨文件格式不方便。 所以使用熟悉的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。

© www.soinside.com 2019 - 2024. All rights reserved.