如何使用python计算一系列文件中只有一列的平均值?
我有一系列不同名称的文件(格式如下所示),例如: 100107_902988_6188DAAXX_s_6.0 100107_902988_6188DAAXX_s_7 (如果您注意到只有第6部分和第7部分的文件名不同) 我想得到所有这些文件最后一列数字的平均值(第8列,以15开头的那一列)!如果可能,在文本文件中,例如: 100107_902988_6188DAAXX_s_6.排序:15(或平均值) 100107_902988_6188DAAXX_s_7.排序:17 我尝试使用data.split命令,然后使用e[7]列,但得到了每行的平均值!!!!比如15投3(我假设我的脚本是1+5/2) 我想知道是否有人能帮助我如何使用python计算一系列文件中只有一列的平均值?,python,average,series,Python,Average,Series,我有一系列不同名称的文件(格式如下所示),例如: 100107_902988_6188DAAXX_s_6.0 100107_902988_6188DAAXX_s_7 (如果您注意到只有第6部分和第7部分的文件名不同) 我想得到所有这些文件最后一列数字的平均值(第8列,以15开头的那一列)!如果可能,在文本文件中,例如: 100107_902988_6188DAAXX_s_6.排序:15(或平均值) 100107_902988_6188DAAXX_s_7.排序:17 我尝试使用data.spli
提前谢谢 未测试,但类似这样的东西应该可以:
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))
谢谢但是我有一些困难!首先,最后一行没有运行,我得到一个语法错误:无效语法!!但是当我在没有最后一行的情况下运行它时,我得到了每个文件的编号!据我所知,最后一个是所有文件的平均值?(所以这对我来说是没有必要的)但我得到的数字还是很低的(大约3,我希望得到大约10)!有没有什么方法可以让我测试它,看看它是否计算出了正确的数字?我试着用相似的格式制作一个文件,我知道它的平均格式,但当我运行它时,我得到了列表索引range@Mahmood尝试在重要位置插入调试
print
语句,以查看它实际处理的数字。例如,在avg
功能中,执行print lst
和print sum(lst)、len(lst)
。我猜它不知何故在列表中添加了很多0
项,或者类似的东西。