如何用Python计算一系列文件中某一列的平均值?
我有一系列文件,名字格式如下:
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))