2016-03-23 35 views
1

我是python新手,我想从文本文件中获得多个平均值。例如:从文本python计算多个平均值

  • 63,1,1,145,233,1,2,150,0,2.3,3,0,6,0
  • 67 1,4,160,286,0 ,2,108,1,1.5,2,3,3,2
  • 67,1,4,120,229,0,2,129,1,2,2,2,7,1,
  • 37 ,1,3,130,250,0,0,187,0,3.5,3,0,3,0
  • 41,0,2,130,204,0,2,172,0,1.4,1 ,0,3,0
  • 56,1,2,120,236,0,0,178,0,0,0.8,1,0,3,0

    就像我只想得到像1,4,5某些列的平均值。

    import pandas as pd 
    df = pd.read_csv('HDPV.txt', "rb") 
    columns = f.readline().strip().split(" ") 
    numRows = 0 
    sums = [0] * len(columns) 
    for line in f: 
    if not line.strip(): 
    continue 
    values = line.split(" ") 
    for i in xrange(len(values)): 
        sums[i] += int(values[i]) 
        numRows += 1 
        for index, summedRowValue in enumerate(sums): 
         print ('average age:'columns[0],summedRowValue/numRows) 
         print ('average chol:'columns[3],summedRowValue/numRows) 
         print ('bp:'columns[4],summedRowValue/numRows) 
    
+0

什么是给定的例子你预期的输出? – Bahrom

+0

类似于:平均年龄:55/n平均chol:xxx/n bp:xxx我不确定是否使用评论权。 – sevensteven

+2

似乎'f'是未定义的。 –

回答

1

我不使用熊猫,但可以使用Python列表理解很容易解决:

import csv 

with open('text.csv', newline='') as csvfile: 
    reader = csv.reader(csvfile, delimiter=',') 
    rows = [[value.strip() for value in row] for row in reader] 

    average_age_list = [float(row[0]) for row in rows] 
    print ('average age: ' + str(sum(average_age_list)/float(len(average_age_list)))) 

    average_chol_list = [float(row[3]) for row in rows] 
    print ('average chol: ' + str(sum(average_chol_list)/float(len(average_chol_list)))) 

    bp_list = [float(row[4]) for row in rows] 
    print ('average age: ' + str(sum(bp_list)/float(len(bp_list)))) 

https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions

+0

谢谢你的作品!!!!!我会更多地研究代码,因为我想学习更好地使用熊猫。 – sevensteven

+0

你的欢迎:) – endlessCoffee