python读取csv求平均数_如何在python中找到csv文件中一列的平均值?

更改此行:x = (row['Total APM'])

收件人:

^{pr2}$

这会将字符串/数字转换为实际的整数,您可以使用该整数进行数值运算。在

下面是代码中可能发生的事情:>>> x = "1"

>>> sum(x)

Traceback (most recent call last):

File "", line 1, in

TypeError: unsupported operand type(s) for +: 'int' and 'str'

>>> y = int(x)

>>> sum(y)

1

Python是strongly typed,因此通常不能对不兼容的不同类型执行任意操作。e、 g:一个int+astr将产生TypeError。在

你可能想要的是:import csv

with open('test_game.csv') as csvfile:

reader = csv.DictReader(csvfile)

xs = []

for row in reader:

try:

x = int(row['Total APM'])

xs.append(x)

except ValueError:

print("Error converting: {0:s}".format(row['Total APM']))

x_average = sum(xs) / len(xs)

print(x_average)

NB:在遍历所有行之后,要计算整列的“平均值”。所以你想保持一个运行的总数,然后计算循环外的平均值。在

更新:或者(更符合原始算法)您可以这样做:

导入csvwith open('test_game.csv') as csvfile:

reader = csv.DictReader(csvfile)

x_sum = x_length = 0

for row in reader:

try:

x = row['Total APM']

x_sum = += int(x)

x_length += 1

except ValueError:

print("Error converting: {0:s}".format(x))

x_average = x_sum / x_length

print(x_average)

这保持了一个连续的和和和总长度,但是*NB**你仍然需要在循环之外计算平均值,除非你想计算一个运行平均值:)

更新2:正如@Karl所建议的那样,捕捉错误并适当地处理它们是一个好主意。“适当”由您决定,并取决于用例:)