2017-01-26 2 views
1

Я пытаюсь создать базовую линию для данных. Мне нужно получить среднее значение каждого столбца из каждого списка, и есть десять списков. Каждый список содержит около 50 элементов. Взяв среднее значение через каждую колонку, я получу среднее значение в этой точке на проезжей части, поэтому мне нужно быть осторожным, чтобы не принимать среднее значение в списке. Я могу захватить каждый столбец отдельно, просто индексируя в цикле имен файлов, но это очень неэффективно. Я бы тогда граф данных, используя MatplotLib, но эта часть должна быть простой. Вот код, который я до сих пор:Получите среднее значение для каждого столбца данных между несколькими списками

def graphWriterIRI(): 
    n = 0 
    for filename in os.listdir(os.getcwd()): 
    # Initialize a new set of lists for each file 
     startList = [] 
     endList = [] 
     iriRList = [] 
     iriLList = [] 
     # Load the file 
     if re.search('BASELINE',filename): 
      with open(filename, 'rU') as file: 
       for row in csv.DictReader(file): 
        try: 
         startList.append(float(row['Start-Mi'])) 
         endList.append(float(row[' End-Mi'])) 
        except: 
         startList.append(float(row['Start-MP'])) 
         endList.append(float(row[' End-MP'])) 
        try: 
         iriRList.append(float(row[' IRI R e'])) 
         iriLList.append(float(row['IRI LWP '])) 
        except: 
         iriRList.append(float(row[' IRI RWP'])) 
         iriLList.append(float(row['IRI LWP '])) 

     print iriRList[0] # prints column[0] of the list but I need this for 50 rows and two lists. 

Вот немного данных, которые я приношу в код:

Start-Mi  End-Mi  IRI LWP IRI R e 
    194.449 194.549   80.3  87.4 
    194.549 194.649   85.3  91.1 
    194.649 194.749   87.4  95.6 
    194.749 194.849   83.6  72.5 
    194.849 194.949   73.7  81 
    194.949 195.049   85.2  87.2 
    195.049 195.149   106.3 111.5 
    195.149 195.249   84.2  92.4 
    195.249 195.349   95.5  95.5 
    195.349 195.449   60.1  67.2 
    195.449 195.549   56.6  51.3 
    195.549 195.649   80.6  74.4 
    195.649 195.749   73.7  69.9 
    195.749 195.849   49.6  48.1 
    195.849 195.949   48.1  50.2 
    195.949 196.049   53.3  45.2 
    196.049 196.149   55.8  45.8 
    196.149 196.249   46.7  48.1 

То, что я пытаюсь сделать, в частности, получить среднее столбцов в iriRList и iriLList для каждого файла, а каждый файл - это список.

+0

У вас есть '' 'iriRList''' для каждого файла, и вы забрасываете среднее значение столбца i из каждого файла? – wwii

+0

Да У меня есть iriRList и iriLList, и мне нужно усреднить каждую соответствующую точку данных в каждом файле. Вот несколько текстовых файлов, которые я загрузил в github. https://github.com/thomasawolff/verification_text_data. Я использую базовые наборы данных. –

+0

Так что мне нужно среднее значение всех точек данных между файлами в точке минимума 194.449 и 194.549 и т. Д. И т. Д. –

ответ

2

Встроенная функция zip будет транспонировать последовательность последовательностей . Вы можете использовать его для создания кортежа для каждого столбца. Я не знаю, как у вас есть все ваши данные структурированы, но это идея:

>>> one = [1,2,3,4] 
>>> two = [2,3,4,5] 
>>> three = [3,4,5,6] 

>>> for column in zip(one, two, three): 
    print(column, sum(column), sum(column)/3.0) 


((1, 2, 3), 6, 2.0) 
((2, 3, 4), 9, 3.0) 
((3, 4, 5), 12, 4.0) 
((4, 5, 6), 15, 5.0) 
>>> 

Если вы накапливаете списки из каждого файла:

def graphWriterIRI(): 
    n = 0 
    iRlists = [] 
    for filename in os.listdir(os.getcwd()): 
     ... 
     ... 
     print iriRList[0] 
     iRlists.append(iriRList) 

Вы бы использовать его как это :

>>> for column in zip(*iRlists): 
    print(column, sum(column), sum(column)/float(len(iRlists))) 


((1, 2, 3), 6, 2.0) 
((2, 3, 4), 9, 3.0) 
((3, 4, 5), 12, 4.0) 
((4, 5, 6), 15, 5.0) 
>>> 
+0

. Я думаю, что одна проблема у меня есть что я не могу отличить один список от другого. –

+0

@hollow_Victory - см. Править – wwii

+0

У меня получилась эта ошибка: TypeError: аргумент zip # 1 должен поддерживать итерацию –

Смежные вопросы