2011-08-03 10 views
0

をグループ化nは、スレッドの数があるn-data.csvという名前作成するには:Pythonのリストは、私がこの形式でいくつかのCSVファイルを持っている棒グラフ

elapsed,label 
120,Step 01 
260,Step 02 
113,Step 03 
100,Step 01 
200,Step 02 
103,Step 03 

と私は、平均を取得したいと思います各スレッドごとにステップ(またはn)、そして多くのこのようなグループ化された棒グラフとしてそれらをプロットしますhttp://matplotlib.sourceforge.net/examples/api/barchart_demo.html

私のコードを1つのファイル(Yet Another list csv file in Python Questionのおかげで)で正常に動作します:

#!/usr/bin/env python 

import csv 
import sys 

import pylab as p 

fig = p.figure() 
ax = fig.add_subplot(1,1,1) 

result = dict() 
av = [] 
idx = [] 
for file in sys.argv[1:]: 
    for row in csv.DictReader(open(file)): 
    label = row['label'] 
    elapsed = row['elapsed'] 
    if label in result: 
     result[label].append(elapsed) 
    else: 
     result[label] = [elapsed]  
    for i in sorted (result.iterkeys()): 
    s = sum(int(v) for v in result[i]) 
    a = s/float(len(result[i])) 
    av.append(a) 
    idx.append(i) 

    y = av 
    N = len(y) 
    ind = range(N) 
    ax.bar(ind, y, facecolor='#56A5EC', 
      align='center',label='1 Thread') 
    ax.set_ylabel('Average Response Time') 
    ax.set_title('Counts, by group',fontstyle='italic') 
    ax.legend() 
    ax.set_xticks(ind) 
    ax.grid(color='#000000', linestyle=':', linewidth=1) 
    group_labels = idx 
    ax.set_xticklabels(group_labels) 
    fig.autofmt_xdate() 
    p.grid(True) 
    p.show() 

でこのスクリプトを実行すると、すべてのデータがav(平均)とidx(インデックス)にプッシュされ、すべてのデータがavとidxにアグリゲーションされます。

グループチャートを作成するには、どうすればavidxを見つけ出すことができますか?私は試しました:

threads = file.split('-')[0] 
    for count in threads 
     for row in csv.DictReader(open(file)): 
     ... 
     av['threads'].append(a) 
     idx['threads'].append(i) 

を利用できません。 WDYT?どうもありがとう!

答えて

1

おそらく、リストのリストを持っている...

av = [] 
idx = [] 

for file in sys.argv[1:]: 
    next_av = [] 
    next_idx = [] 

    ... 

    for i in sorted (result.iterkeys()): 
     s = sum(int(v) for v in result[i]) 
     a = s/float(len(result[i])) 
     next_av.append(a) 
     next_idx.append(i) 
    av.append(next_av) 
    idx.append(next_idx) 

for index in range(len(av)): 
    # do something with the lists av[index] and idx[index] 
+0

おかげ@jcfollower、いくつかのねじれや電源を入れた後、私はこれが動作するようになりました! –

関連する問題