阅读,分组,寻找平均水平

时间:2011-09-07 19:15:12

标签: python

我是python的新手...请帮我解决以下问题

我有* .txt格式的数据为4列name|items| a1| a2|,这里我只对第3和第4列感兴趣。 Items列就像一个集[1,1][12,12,2]等,我需要打开文本文件,读取文件并将所有相似的项目列在一个数组中,找到该数组的最大值,然后取所有用类似项目组成的数组的平均值。最后,我将得到1个值,它是数组中单个最大值的平均值。

例如,items [1,1]= [55,66]

最重要的项[1,1]66

项目[12, 12] = [56 89 88]

最重要的项[12, 12,2]89

项目[23 23 23] = [45, 33, 33.5]

最重要的项[23 23 23]45

平均值=项目的最大值([1,1]+[12, 12]+........+[23 23 23])=(66+89+...+45/ n)= x

其中n是类似项目的总数:例如,这里是6。

  
    
      

名称项目a1 a2

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

2 个答案:

答案 0 :(得分:1)

以下是您可能会发现有用的Python教程中的一些部分:

答案 1 :(得分:0)

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