2016-10-04 1 views
0

での時間差をプロットし、時間との誤差を持っているファイルからグループ化された辞書のリストを取得します。その後、私は以下のように、このファイルを持っているのpython

Date;Time;Task;Error_Line;Error_Message 
03-13-15;08:2123:10;C:LOGINMAN;01073;Web Login Successful from IP Address xxx.xxx.x.xx 
03-13-15;05:23:1235;B:VDOM;0906123;Port 123 Device 1Remote 1 1Link Up RP2009 
03-13-15;05:23:123123;A:VCOM;0906123;Port 123 Device 1Remote 1 1Link Up RP2009 
03-13-15;05:23:123123;B:VDOM;1312325;Port 123 Device 1Remote 1 1Receive Time Error: 2123666 23270 1396 69 
03-13-15;05:23:1233;B:VDOM;13372;Port 123 Device 1Remote 1 1Send Time Error: 123123123 1888 1123123123 69 
03-13-15;05:23:1233;A:VCOM;1312325;Port 123 Device 1Remote 1 1Receive Time Error: 2123666 23270 1396 69 
03-13-15;05:23:1233;A:VCOM;13372;Port 123 Device 1Remote 1 1Send Time Error: 123123123 1888 1123123123 69 
03-13-15;05:21:56;B:VDOM;07270;Port 123 Device 1Remote 1 1AT Timer Expired 
03-13-15;05:21:56;A:VCOM;07270;Port 123 Device 1Remote 1 1AT Timer Expired 

所望の出力は、そのようにする必要があります:

D = {'Error_line1': [Time1,Time2,...],'Error_Line2' = [Time1,Time2,..],...} 

私はError_Lineに基づいて時間差をプロットすることを探していました。私のファイルのError_Lineは異なる時刻に発生します。私はError_Lineに従ってグループ時間を欲しいです。私はそれが時間をプロットするために働くかどうか分かりません。

答えて

1

限り、行番号によってグループ化など、これはトリックを行う必要があります。

import csv 
D = {} 
with open('logfile') as f: 
    reader = csv.DictReader(f, delimiter=';') 
    for row in reader: 
     el = row['Error_Line'] 
     if el not in D: 
      D[el] = [] # Initiate an empty list 
     D[el].append(row['Time']) 
1

をデータを表示する複数の方法があるので、私はプロットを触れないであろうと、私はどのようなスタイルにあなたを知りません探しています。 Error_Lineごとに別々のグラフを作成しますか?各Error_Lineのデータポイントは1つのグラフに表示されますか?時間とエラーを比較する他の方法(たとえば、各Error_Lineの時間の平均値を分散、分散、yadda yadda)

しかし、その情報をdictに入れるには、各行を取得し、セミコロンを区切り文字として分割し、必要な部分を取り出します。個人的には次のようにしています。

from collections import defaultdict 
ourdata = defaultdict(list) 
with open('stackoverflow.txt') as ourfile: 
    for row in ourfile: 
     datatoadd = row.split(';')[1:4:2] 
     ourdata[datatoadd[1]].append(datatoadd[0]) 

これらのタイムスタンプは現在のところ文字列です。また、必要なデータ型(例えば、numpyのdatetimes、算術演算可能)に変換する必要があります。ここで何が起こっているかの詳細については

、以下を参照してください。defaultdictwithstr.split()extended slice notation

関連する問題