2017-03-06 437 views
-1

我试图通过删除'?'来预处理一个数据集。从每个数据点开始计算每个色谱柱的平均值和标准偏差。我收到以下错误:计算python中每一列csv文件的均值和标准差

IOError: [Errno 13] Permission denied: 'outputFile'

这里是我的代码:

import csv 
import sys 
import numpy as np 
from collections import Counter 
class PreProcessDataSet: 
    def standardize(self) : 
     special_chars = set('?') 
     inputFile = open(sys.argv[1], 'rb') 
     print ('Input file as entered is : ', inputFile) 
     outputFile = open(sys.argv[2],'wb') 
     print ('Output file as entered is : ', outputFile) 
     writer = csv.writer(outputFile) 
     for row in csv.reader(inputFile): 
      if not set(''.join(row)) & special_chars: 
       writer.writerow(row) 
       print row 


    column_totals = Counter() 
    with open('outputFile') as f: 
     reader = csv.reader(f) 
     row_count = 0.0 
     for row in reader: 
      for column_idx, column_value in enumerate(row): 
       try: 
        n = float(column_value) 
        column_totals[column_idx] += n 
       except ValueError: 
        print "Error -- ({}) Column({}) could not be converted to float!".format(column_value, 
                           column_idx) 
      row_count += 1.0 

    # row_count is now 1 too many so decrement it back down 
    row_count -= 1.0 

    column_indexes = column_totals.keys() 
    column_indexes.sort() 

    # calculate per column averages using a list comprehension 
    averages = [column_totals[idx]/row_count for idx in column_indexes] 
    print averages 
obj = PreProcessDataSet() 
obj.standardize() 

能有人请指出我要去的地方错了吗?提前致谢!

回答

3

如果错误是拒绝“权限”,那么肯定你可能没有完全访问您正在使用的系统,

OR

检查您正在使用列表索引的逻辑, 错误迭代/范围也会给出与你一样的错误。

您没有足够的权限写入根目录。