2016-12-07 8 views
0

私は以下のような大きなCSVファイル(〜20000行)を持っています。各行はdata/Secondに対応します。したがって、60行は60秒間のデータを示します。PYTHONで条件が満たされていない場合、チャンク内の3行&ジャンプラインのチャンクでCSVを読み取る方法は?

私は3行の間で安定したデータセットを探しています。したがって、COLUMN Hデータが5を超えて変化しない場合、連続する3行について、それを安定と呼ぶことができます。 (297,319,326は5を超えて変化し、したがって不安定である)。

5を超えて変化する場合、私のコードは14行後に3行の別のセットを確認する必要があります(14行後)。 (362,362,355は5を超えて変化しないので、安定したデータスナップショットが準備完了です)、最後の行まで続き、より多くのデータスナップショットを確認します。

各安定値は平均化され、解析のために.TXTファイルに出力されます。

A、B、C、D、E、F、G、H 、I、J、K、L
1)FALSE、470496 ,,, 0.67、、341、」 3701" 、 "61216"、0
2)FALSE、464497 ,,, 0.67、、341、 "3701"、 "61216"、0
3)FALSE、460498 ,,, 0.67 、、348、 "4599"、 "61216"、0
4)FALSE、459500 ,,, 0.67、、348、 "4599"、 "61216"、0
...
...
11)、0.67 ,,, 460502、FALSE、348、 "4599"、 "61216"、0
12)TRUE、461503 ,,, 0.67、 、348、 "4599"、 "61216"、0
13)TRUE、463504 ,,, 0.67、、348、 "5479"、 "61216"、0
14)TRUE、467505 ,, 、0.67、、348、 "5479"、 "61216"、0
15)TRUE、470507 ,,, 0.67、、348、 "5479"、 "61216"、0
16)TRUE、472,508 ,,, 1,67、、355、 "5479"、 "61216"、0

私のコード:(PYTHON 3.5)

`

import csv 
with open ('ABC.csv','r+') as csvfile: 
    reader=csv.reader(csvfile) 
    ROWCOUNT=0; 
    for row in reader: 
    ROWCOUNT=ROWCOUNT+1 
    if row[7] in (max(ROWCOUNT,ROWCOUNT+1,ROWCOUNT+2) -min(ROWCOUNT,ROWCOUNT+1,ROWCOUNT+2) < 10: 
     average=avg(ROWCOUNT,ROWCOUNT+1,ROWCOUNT+2) 
    else: 
     .. 
     ... 

`

私のコードはで動作しませんでしたすべて、それでは論理として。

このコードを使用する方法をお教えください。 CSVファイルとして

答えて

0

は、あなたがメモリにそれを読んで、そこにそれを処理することができます(のみ〜20.000行)非常に小さい:

import csv 
with open ('ABC.csv') as csvfile: 
    reader=csv.reader(csvfile) 
    data = [row for row in reader] 
for i in range(0,len(data)-2,14): 
    sample = int(data[i][7]), int(data[i+1][7]), int(data[i+2][7]) 
    if min(sample) >= max(sample)-5: 
     average = sum(sample)/3 
     print(average) 
関連する問題