大型 csv 文件的平均值
Average for large csv file
假设我有一些数据如下所示:
time value
1 1
2 2
3 3
4 4
它变成了 20,000,我如何获得这些数据的平均值和标准差?
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。
在 Python 3 中,您可以使用 statistics
模块,但首先您需要将数据中的值排列成一个序列。您的数据来自 CSV 文件,因此打开文件,读入行,并将值转换为浮点数:
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)))
输出
使用示例数据中的 4 个值:
Average: 2.500
Stdev: 1.291
看来你用的是Python2.有一个Python3统计模块的后台端口Python2,上面的代码会运行 不变。有关信息,请参阅 https://pypi.python.org/pypi/statistics 并使用 pip
安装。
假设我有一些数据如下所示:
time value
1 1
2 2
3 3
4 4
它变成了 20,000,我如何获得这些数据的平均值和标准差?
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。
在 Python 3 中,您可以使用 statistics
模块,但首先您需要将数据中的值排列成一个序列。您的数据来自 CSV 文件,因此打开文件,读入行,并将值转换为浮点数:
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)))
输出
使用示例数据中的 4 个值:
Average: 2.500 Stdev: 1.291
看来你用的是Python2.有一个Python3统计模块的后台端口Python2,上面的代码会运行 不变。有关信息,请参阅 https://pypi.python.org/pypi/statistics 并使用 pip
安装。