forked from 1wheel/tornado-tuners
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmatchStates.py
52 lines (40 loc) · 1.39 KB
/
matchStates.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import csv
from datetime import datetime
from dateutil.relativedelta import relativedelta
from sets import Set
#loads csv file
def parseCSV(fileName):
with open(fileName, 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='"')
columnTitles = reader.next()
data = []
for r in reader:
nextRow = {}
for i in range(0, len(columnTitles)):
varName = str(columnTitles[i])
nextRow[varName] = r[i]
data.append(nextRow)
print 'read ' + fileName
return data
allTornadoA = parseCSV('rawdata/1950-2012_torn_modified.csv')
stateTornadoObject = {}
for row in allTornadoA:
key = row['om'] + row['year']
if key not in stateTornadoObject:
stateTornadoObject[key] = set()
stateTornadoObject[key].add(row['state'])
for row in allTornadoA:
row['states'] = ' '.join([state for state in stateTornadoObject[row['om'] + row['year']]])
writeKeys = ['time', 'states', 'fscale', 'inj', 'fat', 'loss', 'slat', 'slon', 'elat', 'elon', 'length', 'width']
filteredA = filter( lambda d: d['sg'] == '1'
and d['elon'] != '0'
and d['fscale'] != '-9',
allTornadoA)
with open('webpage/filteredTornados.csv', 'wb') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
writer.writerow(writeKeys)
for row in filteredA:
nextRow = []
for key in writeKeys:
nextRow.append(row[key])
writer.writerow(nextRow)