2016-03-23 73 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