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

nmpmafwu  于 2023-03-16  发布在  Python
关注(0)|答案(2)|浏览(74)

我正在迭代地计算以下分数,在每次迭代中生成以下分数的新集合:
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 。
有没有人对如何处理这些数据有更好的想法?我想知道有没有更好的方法将所有评分结果存储在一个文件中,然后计算每列的平均值。

qf9go6mv

qf9go6mv1#

......努力将元组转换为 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。

omhiaaxx

omhiaaxx2#

所以最后,J_H的解决方案像奇迹一样工作。我实现了:

with open("resources/outputs/generate/stats.txt", "w", newline='') as f:
        sheet = csv.writer(f)
        sheet.writerow(('add', 'keep', 'del'))
        for stat in stats:
            sheet.writerow(stat)

并添加newline=''以避免打印空行。
然后,我访问了我的数据,并计算了没有dtype的平均值,如下所示:
avg_add= df['add'].mean().item()

相关问题