如何以3行和3的块读取CSV如果使用PYTHON条件不满意,则以块的形式跳线?

时间:2016-12-07 14:28:56

标签: python python-3.x csv

我有一个很大的CSV文件(~20000行),如下所示。每行对应数据/秒。所以60行表示60秒内的数据。

我正在寻找三条线之间稳定的数据集。因此,如果COLUMN H数据的变化不超过5,对于连续的3行,我可以将其称为稳定。 (297,319,326变化超过5,因此不稳定)。

如果变化超过5,我的代码应该在14 SECONDS之后(14行之后)检查另一组3行。 (362,362,355变化不超过5,因此稳定和一个数据快照准备就绪),这一直持续到最后一行,检查更多数据快照。

然后将每个稳定值平均并打印到.TXT文件中进行分析。

A,B,C,d,E,F,G,的ħ下,I,J,K,L
1)FALSE,470,496 ,,, 0,67, 297 ,341,“3,701”,“61,216”,0
2)FALSE,464,497 ,,, 0,67, 319 ,341,“3,701”,“61,216”,0
3)FALSE,460,498 ,,, 0,67, 326 ,348,“4,599”,“61,216”,0
4)FALSE,459,500 ,,, 0,67, 341 ,348,“4,599”,“61,216”,0
...
...
11)FALSE,460,502 ,,, 0,67, 375 ,348,“4,599”,“61,216”,0
12)TRUE,461,503 ,,, 0,67, 350 ,348,“4,599”,“61,216”,0
13)TRUE,463,504 ,,, 0,67, 355 ,348,“5,479”,“61,216”,0
14)TRUE,467,505 ,,, 0,67, 362 ,348,“5,479”,“61,216”,0
15)TRUE,470,507 ,,, 0,67, 362 ,348,“5,479”,“61,216”,0
16)TRUE,472,508 ,,, 1,67, 355 ,355,“5,479”,“61,216”,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:  
      ..  
      ... 

`

我的代码根本不起作用,所以作为逻辑。

有人要求如何使用PYTHON来代码。

1 个答案:

答案 0 :(得分:0)

由于CSV文件非常小(只有~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)