Python 阅读、分组、寻找平均值
我是python的新手…请帮我解决以下问题 我有一个*.txt格式的数据,4列Python 阅读、分组、寻找平均值,python,Python,我是python的新手…请帮我解决以下问题 我有一个*.txt格式的数据,4列name | items | a1 | a2 |,这里我只对第3列和第4列感兴趣。“项目”列类似于一组[1,1],[12,12,2]等,我需要打开文本文件,读取文件并将所有类似项目列组合在一个数组中,找到该数组的最大值,然后取由类似项目组成的所有数组的平均值。最后我将得到1个值,它是数组中单个最大值的平均值 例如,项目[1,1]=[55,66] 最大的项目[1,1]是66 项目[12,12]=[56 89 88] 最大
name | items | a1 | a2 |
,这里我只对第3列和第4列感兴趣。“项目”列类似于一组[1,1]
,[12,12,2]
等,我需要打开文本文件,读取文件并将所有类似项目列组合在一个数组中,找到该数组的最大值,然后取由类似项目组成的所有数组的平均值。最后我将得到1个值,它是数组中单个最大值的平均值
例如,项目[1,1]=[55,66]
最大的项目[1,1]
是66
项目[12,12]
=[56 89 88]
最大的项目[12,12,2]
是89
项目[23 23]
=[45,33,33.5]
最大的项目[23]
是45
平均值=项目的最大值([1,1]+[12,12]+..+..+[23 23]
)=(66+89+..+45/n
)=x
其中n是类似项目的总数量,例如这里是6
名称项目a1 a2
以下是Python教程中的一些部分,您可能会发现这些部分很有帮助:
sty1 1 12 55
sty1 1 2 66
sty1 12 5 56
sty1 12 12 89
sty1 12 2 88
sty1 2 5 78
sty1 31 5 45
sty1 31 1 45
sty1 31 3 45
sty1 31 8 45
sty1 4 23 45
sty1 4 12 45
sty1 23 31 45
sty1 23 1 33
sty1 23 2 33.5
f = open("...")
d = {}
for line in f:
x = line.split()
if len(x) == 4: #skip empty lines
k = x[1]
v = float(x[3])
if not k in d: d[k] = v
elif v > d[k]: d[k] = v #because we only need max of values
f.close()
sm = sum(d.values())
print d
print sm
print sm / len(d)
>>>
{'12': 89.0, '23': 45.0, '31': 45.0, '1': 66.0, '2': 78.0, '4': 45.0}
368.0
61.3333333333