2017-01-26 7 views
1

データのベースラインを作成しようとしています。私は各リストから各列の平均を取得する必要があり、10のリストがあります。各リストには約50の要素があります。各列を平均して平均を取ると、道路のその点での平均値が得られるので、リストの平均をとらないように注意する必要があります。私は個々の列を個別に取得することができますが、ファイル名のループでインデックスを作成するだけですが、それは非常に非効率的です。私はMatplotLibを使用してデータをグラフ化しますが、その部分は簡単にする必要があります。ここで私が持っているコードは、これまでのところです:複数のリスト間の各データ列の平均を取得する

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 

私は特にやろうとしていますどのような平均値を取得することです。ここで

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. 

は、私がコードに持参していたデータのビットがあります各ファイルのiriRListとiriLListの列のリストであり、各ファイルはリストです。

+0

あなたは、各ファイルの '' 'iriRList'''があり、私は、各ファイルから列の平均ワンド? – 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

1つのリストと別のリストを区別することはできません。 –

+0

@hollow_Victory - 編集を参照してください – wwii

+0

私はこのエラーがあります:TypeError:zip引数#1は反復をサポートする必要があります –

関連する問題