python读取csv求平均数_Python – 计算csv文件中每列的平均值

这是一个清理你的功能,但它可能不会做你想做的事情.

目前,它正在获取所有列中所有值的平均值:

def average_column (csv):

f = open(csv,"r")

average = 0

Sum = 0

row_count = 0

for row in f:

for column in row.split(','):

n=float(column)

Sum += n

row_count += 1

average = Sum / len(column)

f.close()

return 'The average is:', average

我会使用csv模块(这使得csv解析更容易),使用Counter对象来管理列总计,使用context manager来打开文件(不需要close()):

import csv

from collections import Counter

def average_column (csv_filepath):

column_totals = Counter()

with open(csv_filepath,"rb") as f:

reader = csv.reader(f)

row_count = 0.0

for row in reader:

for column_idx, column_value in enumerate(row):

try:

n = float(column_value)

column_totals[column_idx] += n

except ValueError:

print "Error -- ({}) Column({}) could not be converted to float!".format(column_value, column_idx)

row_count += 1.0

# row_count is now 1 too many so decrement it back down

row_count -= 1.0

# make sure column index keys are in order

column_indexes = column_totals.keys()

column_indexes.sort()

# calculate per column averages using a list comprehension

averages = [column_totals[idx]/row_count for idx in column_indexes]

return averages