-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdata.py
100 lines (72 loc) · 3.02 KB
/
data.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import csv
import json
import urllib.request
total = 0
count = 0
perpostcode = {}
crimecount = {}
# Open the house price data and populate the house price dictionary
with open('pp-monthly-update-new-version.csv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in spamreader:
postcode = row[3]
area = postcode[:postcode.find(" ")]
if area not in perpostcode: # create a new dictionary entry and zero it
perpostcode[area] = {'total': 0, 'count': 0, 'avprice': 0, 'threshold': 0}
perpostcode[area]['total'] += int(row[1])
perpostcode[area]['count'] += 1
total = total + int(row[1])
count = count + 1
# calculate the average values in each area and update the dictionary
for area in perpostcode:
perpostcode[area]['avprice'] = perpostcode[area]['total'] / perpostcode[area]['count']
#print (area, perpostcode[area]['avprice'],perpostcode[area]['count'])
if (perpostcode[area]['avprice'] >= 250000):
perpostcode[area]['threshold'] = 1
if (perpostcode[area]['avprice'] < 250000):
perpostcode[area]['threshold'] = 0
# 0 = low 1= high
mapdata = []
for area in perpostcode:
data = urllib.request.urlopen('http://nominatim.openstreetmap.org/search?q='+area+'&format=json')
data = json.loads(data.read().decode('utf8'))
if data:
lat = data[0]['lat']
lon = data[0]['lon']
mapdata.append([area,perpostcode[area],lat,lon])
print(json.dumps(mapdata, indent=4))
total = 0
count = 0
with open('2014-04-cambridgeshire-street.csv', newline='') as policedatafile:
spamreader = csv.reader(policedatafile, delimiter=',', quotechar='"')
for row in spamreader:
lat=row[5]
lng=row[4]
if lat != 'Latitude':
#print(lat)
#print(lng)
#lat =51.590524
#lng = -1.415645
latlongurl = 'http://uk-postcodes.com/latlng/'+lat+','+lng+'.json'
#print(latlongurl)
postcodecsv = urllib.request.urlopen(latlongurl)
postcode = json.loads(postcodecsv.read().decode('utf8'))['postcode']
area = postcode.split(' ')[0]
#print(postcode)
if area not in crimecount: # create a new dictionary entry and zero it
crimecount[area] = {'count': 0, 'avprice': 0}
crimecount[area]['count'] += 1
#postcodedata = csv.reader(postcodecsv, delimiter=',', quotechar='"')
#for postcoderow in postcodedata:
# print(postcodedata.__next__()[0])
#total = total + int(row[1])
#lat =51.590524
#lng = -1.415645
#latlongurl = 'http://uk-postcodes.com/latlng/'+str(round(lat,9))+','+str(round(lng,9))+'.csv'
#postcodecsv = urllib.request.urlopen(latlongurl).read()
#print(postcodecsv)
#print(perpostcode)
#if (crimecount[area]['count'] >= 40):
# crimecount[area]['threshold'] = 1
#if (crimecount[area]['count'] < 40):
# crimecount[area]['threshold'] = 0