大型csv文件的平均值

时间:2015-08-20 22:19:24

标签: python average standard-deviation

假设我有一些看起来像这样的数据:

time value
 1    1
 2    2
 3    3
 4    4

它会达到20,000,我如何得到这些数据的平均值和stdev?

1    import sys
2    import os
3    import string
4    import csv
5    import math
6    average = []
7    filename = 'pei1.rg'
8    fin1 = open(filename,"rb")
9    line1 = fin1.readline()
10   line1 = fin1.readline()
11   while line1:
12       line1 = map(string.strip,line1.strip().split())
13       average.append(float(line1[1]))
14       line1 = fin1.readline()
15   #print float(average)/float(count)
16   print "Number of steps: ", len(average)
17   print "Average over entire trajectory: ", float(sum(average))/float(len(average))
18   second = int(len(average)/2)
19   print "Average over second half: ", float(sum(average[second:]))/float(second)
20   sys.exit()

我认为这适用于计算平均值,但我不知道如何从这里获取stdv。

1 个答案:

答案 0 :(得分:1)

在Python 3中,您可以使用statistics模块,但首先需要将数据中的值排列为序列。您的数据来自CSV文件,因此请打开文件,读取行,然后将值转换为浮点数:

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require_tree .
//= require turbolinks

<强>输出

使用样本数据中的4个值:

Average: 2.500
Stdev: 1.291

看起来你正在使用Python 2. Python 2的Python 3统计模块有一个后端口,上面的代码将无变化地运行。有关信息,请参阅https://pypi.python.org/pypi/statistics,然后使用import statistics with open('input.csv') as f: _ = next(f) # skip the header line values = [float(line.split()[1]) for line in f] print('Average: {:.3f}'.format(statistics.mean(values))) print('Stdev: {:.3f}'.format(statistics.stdev(values))) 安装。