帮助计算保存为CSV的Excel文件的Average和std

时间:2011-08-23 03:20:12

标签: python csv python-3.x statistics

我在一个文件夹中将大约20个excel文件保存为CSV。每个excel文件都有保存在第一,第二和第三列中的数字。我试图读取所有文件的第一列,所有文件的第二列,以及python中使用CSV模块的所有文件的第三列,并计算每列的平均值和标准差并保存这些结果在一个单独的excel中。请帮忙....这是我到目前为止...我怎么能单独访问每一列?

import csv
import os
from numpy import array

path="A:\\hello\\folder"
dirList=os.listdir(path)
for file in dirList:
    fullpath=os.path.join(path,file)
##    print fullpath
    with open(fullpath, 'rb') as f:
        [[val for val in line.split(',')] for line in f.readlines()]
##        print line
        nums = array([line])

        for row in nums:
            print row.mean()

1 个答案:

答案 0 :(得分:2)

list comprehension的工作方式类似于向后循环,可以自动为您构建list。如果你将这些与内部的“列”和外部的“行”嵌套,你应该得到一个矩阵东西(嵌套列表结构):

nums = [[int(val) for val in line.split(',')] for line in my_file.readlines()]

或者如果你有一个csv阅读器对象,它可能是这样的:

nums = [[int(val) for val in line] for line in my_csv_reader]

现在,由于上面的列表理解,你已经在一个名为nums的变量中得到了矩阵。

然后您应该使用numpy来计算您的统计数据。这很好,因为您可以非常轻松地访问numpy数组的列,当您这样做时,会以numpy数组的形式返回列。 numpy数组也碰巧有平均值和标准差的内置方法。您可以将nums转换为numpy数组,只需将其传递给array()构造函数:

from numpy import array
anums = array(nums)

然后,如果要遍历列,请使用数组切片表示法和作为每个numpy数组成员的shape变量:

# The 1 index of anums.shape should tell you how many columns you have
for c in range(anums.shape[1]):
    column = anums[:,c]
    col_mean = column.mean()
    col_std = column.std()
    # Do something with these variables here, probably