#!/usr/bin/env python # coding: utf-8 import sys, csv weight=65 spike_threshold=weight * 25 #reader=csv.reader(sys.stdin) reader=csv.reader(file('test.csv', 'r')) first_line = False stack = [] power_spikes = [] # データをスタックに詰める for line in reader: dist, power, tm_diff, cad=line[7], line[9], line[11], line[10] if first_line is not False: stack.append((dist, int(power), int(cad), int(tm_diff))) else: first_line=True # スパイク値を拾う idx=0 for dist, power, cad, tm_diff in stack: if int(power) > spike_threshold: power_spikes.append((idx, power, cad, tm_diff)) idx+=1 print 'spike %f %%' % (float(len(power_spikes)) / len(stack)) prev_index=0 c=0 for idx, power, cad, tm_diff in power_spikes: # スパイクスタックの狭間を見つけたら分岐 if prev_index > 0 and (idx - prev_index) > 1: begin, end = (prev['idx']-c+1), (prev['idx']+1) print '******************' print prev['idx'], stack[begin:end], (end - begin) for l in stack[begin-5:end+5]: print l c=0 prev, prev_index={'idx':idx, 'power':power, 'tm_diff':tm_diff}, idx c+=1