Skip to content

Instantly share code, notes, and snippets.

@pfctgeorge
Last active August 29, 2015 14:10
Show Gist options
  • Save pfctgeorge/cd86a69bcd5c07cd9cf2 to your computer and use it in GitHub Desktop.
Save pfctgeorge/cd86a69bcd5c07cd9cf2 to your computer and use it in GitHub Desktop.
intensity
import csv
import os
class M15(object):
'''Every 15mins data'''
def __init__(self):
self.size = 0
self.sum_volume = 0
self.sum_velocity = 0
def add(self, volume, velocity):
self.size += 1
self.sum_volume += volume
self.sum_velocity += velocity
class Range(object):
def __init__(self, begin, end):
self.m15s = []
self.begin = begin
self.end = end
for i in (end - begin) * 4:
self.m15s.append(M15())
if __name__ == "__main__":
res_file = open("res.txt", "w")
for day_folder in os.walk('.'):
date = day_folder[0].rpartition('/')[2]
detectors = day_folder[2]
for detector in detectors:
if detector.startswith('.') or not detector.endswith('.csv'):
continue
detector_file_path = day_folder[0] + '/' + day_folder[2]
with open(detector_file_path, 'rb') as csvfile:
csvreader = csv.reader(csvfile)
is_header = True
date = None
number_of_lanes = -1
valid_hour_ranges = [(6, 9), (17, 20)]
range_data = []
for r in valid_hour_ranges:
range_data.append(Range(r[0], r[1]))
for line in csvreader:
if is_header:
is_header = False
continue
if date is None:
date = line[1].split()[0]
if number_of_lanes <= 0:
number_of_lanes = len(line[2].strip('|').split('|'))
s_time = line[1].split()[1]
hour, minute, second = [int(x) for x in
s_time.split(':')]
for (idx, r) in enumerate(valid_hour_ranges):
if hour >= r[0] and hour < r[1]:
m15_idx = (hour - r[0]) * 4 + minute / 15
volume = int(line[4]) + int(line[5]) + int(line[6])
velocity = float(line[10])
range_data[idx].m15s[m15_idx].add(volume, velocity)
res_file.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment