如何用Python计算一系列文件中某一列的平均值?

0 投票
1 回答
632 浏览
提问于 2025-04-16 20:13

我有一系列文件,名字格式如下:

100107_902988_6188DAAXX_s_6.sorted
100107_902988_6188DAAXX_s_7.sorted
(你会发现,文件名中只有6和7的部分是不同的)

这里输入图片描述

我想要计算这些文件中最后一列数字的平均值(第8列,也就是以15开头的那一列)!如果可以的话,想把结果写到一个文本文件里,比如:

100107_902988_6188DAAXX_s_6.sorted : 15(或者其他的平均值)
100107_902988_6188DAAXX_s_7.sorted : 17

我试过用data.split命令,然后用e[7]来获取这一列,但我得到的是每一行的平均值!比如15的平均值是3(我猜我的脚本是把1和5加起来再除以2)
我想知道有没有人能帮帮我。谢谢!

1 个回答

1

虽然没有测试过,但类似这样的代码应该可以解决问题:

import glob

def avg(lst):
    return float(sum(lst))/len(lst)

all_numbers = []
for filename in glob.glob("100107_902988_6188DAAXX_s_*.sorted"):
    numbers = []
    with open(filename, "r") as file:
        for line in file:
            numbers.append(int(line.split()[7]))
    print "{0}: {1:.2f}".format(filename, avg(numbers))
    all_numbers.extend(numbers)
print "Total average: {0:.2f}".format(avg(all_numbers))

撰写回答