迭代和和平均值

时间:2016-03-14 23:13:11

标签: python python-2.7

我有两列数据,如下所示。我试图估计第一列的每个值的第二列的标准偏差。因此,284,285和286值应具有连续的标准偏差值。

284 4
284 9
284 6
285 0
285 1
285 3
286 9
286 3
286 1

我设法计算了运行总和,但我坚持平均值计算。到目前为止,这是我的代码:

b = [(line.split("\t")) for line in data]
sums = [(sum(float(v) for k, v in g)) for k, g in groupby(b, key=itemgetter(0))]

lens = [(len(float(v) for k, v in g)) for k, g in groupby(b, key=itemgetter(0))]

sums工作正常并计算第一列每次更改的总和,但是len()不起作用并且与消息崩溃:

TypeError: object of type 'generator' has no len()

以前有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:3)

错误出现在代码的这一部分:

len(float(v) for k, v in g)

这相当于:

len(g)

错误所指的生成器是您在括号内执行的列表解析。如果您真的想要执行您编写的操作(我认为您不会这样做),则代码必须是:

len([float(v) for k, v in g])