1+ {
2+ "metadata" : {
3+ "name" : " " ,
4+ "signature" : " sha256:e4af5377b8bbcedde2e17158ad68edc5539c61e4c61d71a2fcaf23ce5b073eaa"
5+ },
6+ "nbformat" : 3 ,
7+ "nbformat_minor" : 0 ,
8+ "worksheets" : [
9+ {
10+ "cells" : [
11+ {
12+ "cell_type" : " code" ,
13+ "collapsed" : false ,
14+ "input" : [
15+ " s=\"\"\"\n " ,
16+ " Division\t Station Number\t Address\t Former City\n " ,
17+ " 11\t 51\t 550 Blvd. St. Pierre\t Ste-Anne-de-Bellevue\n " ,
18+ " \t 56\t 230 Blvd.Ch\u00e8 vremont\t Ile Bizard\n " ,
19+ " \t 57\t 13795 Blvd. Pierrefonds\t Pierrefonds\n " ,
20+ " \t 58\t 13 rue Centre Commercial\t Roxboro\n " ,
21+ " \t 61\t 10 Sunnydale\t Dollard Des Ormeaux\n " ,
22+ " 12\t 54\t 3048 Blvd. Saint Charles\t Kirkland\n " ,
23+ " \t 52\t 300 Surrey Drive\t Baie-d'Urfe\n " ,
24+ " \t 53\t 310 Beaurepaire Drive\t Beaconsfield\n " ,
25+ " \t 55\t 401 Blvd. St-Jean\t Pointe Claire\n " ,
26+ " \n " ,
27+ " \n " ,
28+ " 13\t 62\t 155 Avro\t Dorval Station 2\n " ,
29+ " \t 63\t 530 Blvd. Bouchard\t Dorval Station 1\n " ,
30+ " \t 71\t 5500 Bois Franc\t St. Laurent Station 2\n " ,
31+ " \t 72\t 2727 Poirier\t St. Laurent Station 3\n " ,
32+ " \t 73\t 820 Saint Germain\t St. Laurent Station 1\n " ,
33+ " \n " ,
34+ " \n " ,
35+ " 14\t 64\t 3175 Remembrance\t Lachine\n " ,
36+ " \t 77\t 114 Westminster North\t Montreal West\n " ,
37+ " \t 78\t 6815 Cote St Luc Rd.\t Cote St. Luc\n " ,
38+ " \t 79\t 5520 MacDonald\t Hampstead\n " ,
39+ " \n " ,
40+ " \n " ,
41+ " 15\t 65\t 1300 Dollard Ave.\t Lasalle\n " ,
42+ " \t 66\t 4398 LaSalle Blvd.\t Verdun\n " ,
43+ " \t 67\t\t Nun's Island\n " ,
44+ " \n " ,
45+ " \n " ,
46+ " 16\t 03\t 256 Young\t Montreal\n " ,
47+ " \t 15\t 1255 Richmond\t Montreal\n " ,
48+ " \t 23\t 523 Place St. Henri\t Montreal\n " ,
49+ " \t 33\t 6040 Monk\t Montreal\n " ,
50+ " \n " ,
51+ " \n " ,
52+ " 17\t 04\t 5260 Van Horne\t Montreal\n " ,
53+ " \t 27\t 5353 Gatineau\t Montreal\n " ,
54+ " \t 34\t 5369 Cote St Antoine\t Montreal\n " ,
55+ " \t 46\t 4760 Cumberland\t Montreal\n " ,
56+ " \t 76\t 19 Stanton\t Westmount\n " ,
57+ " \n " ,
58+ " \n " ,
59+ " 18\t 02\t Ile Ste- Helene (Seasonal)\t Montreal\n " ,
60+ " \t 05\t 75 Ontario East\t Montreal\n " ,
61+ " \t 10\t 1445 Saint Mathieu\t Montreal\n " ,
62+ " \t 19\t 2000 de Lormier\t Montreal\n " ,
63+ " \t 20\t 920 Saint Urbain\t Montreal\n " ,
64+ " \t 25\t 1212 Drummond\t Montreal\n " ,
65+ " \n " ,
66+ " \n " ,
67+ " 19\t 16\t 1041 Rachel\t Montreal\n " ,
68+ " \t 26\t 2151 Mont-Royal\t Montreal\n " ,
69+ " \t 30\t 5 Laurier West\t Montreal\n " ,
70+ " \t 75\t 40 Avenue Saint-Just\t Outremont\n " ,
71+ " \n " ,
72+ " \n " ,
73+ " 20\t 74\t 10 Roosevelt\t Mount Royal\n " ,
74+ " \t 09\t 8100 Blvd. Saint Michel\t Montreal\n " ,
75+ " \t 37\t 795 Jarry East\t Montreal\n " ,
76+ " \t 41\t 7405 Champagneur\t Montreal\n " ,
77+ " \n " ,
78+ " \n " ,
79+ " 21\t 35\t 10827 Lajeunesse\t Montreal\n " ,
80+ " \t 42\t 4180 de Salaberry\t Montreal\n " ,
81+ " \t 43\t 1945 Fleury East\t Montreal\n " ,
82+ " \t 49\t 10 Chabanel West\t Montreal\n " ,
83+ " \n " ,
84+ " \n " ,
85+ " 22\t 29\t 5375 1st Ave.\t Montreal\n " ,
86+ " \t 31\t 7041 St. Dominique\t Montreal\n " ,
87+ " \t 47\t 2111 Saint Zotique\t Montreal\n " ,
88+ " \t 50\t 6490 30th Avenue\t Montreal\n " ,
89+ " \n " ,
90+ " \n " ,
91+ " 23\t 13\t 3250 Sainte Catherine St. East\t Montreal\n " ,
92+ " \t 39\t 2915 Monsabre\t Montreal\n " ,
93+ " \t 40\t 8639 Pierre-de-Coubertin\t Montreal\n " ,
94+ " \t 45\t 5100 Hochelaga\t Montreal\n " ,
95+ " \t 48\t 3616 Hochelaga\t Montreal\n " ,
96+ " \n " ,
97+ " \n " ,
98+ " 24\t 21\t 6025 Lavoisier\t St. Leonard Station 1\n " ,
99+ " \t 22\t 5455 Antoine Dagenais\t St. Leonard Station 2\n " ,
100+ " \t 17\t 4340 Charleroi\t Montreal North Station 1\n " ,
101+ " \t 18\t 12012 Rolland\t Montreal North Station 2\n " ,
102+ " \n " ,
103+ " \n " ,
104+ " 25\t 28\t 7650 Blvd. Chateauneuf\t Anjou\n " ,
105+ " \t 08\t 11371 Notre Dame\t Montreal East\n " ,
106+ " \t 14\t 11575 26th Ave.\t Montreal\n " ,
107+ " \t 38\t 14201 Sherbrooke East\t Montreal\n " ,
108+ " \t 44\t 12145 Blvd. Riviere des Prairies\t Montreal\n " ,
109+ " \"\"\" "
110+ ],
111+ "language" : " python" ,
112+ "metadata" : {},
113+ "outputs" : [],
114+ "prompt_number" : 1
115+ },
116+ {
117+ "cell_type" : " code" ,
118+ "collapsed" : false ,
119+ "input" : [
120+ " import pandas as pd\n " ,
121+ " from StringIO import StringIO"
122+ ],
123+ "language" : " python" ,
124+ "metadata" : {},
125+ "outputs" : [],
126+ "prompt_number" : 4
127+ },
128+ {
129+ "cell_type" : " code" ,
130+ "collapsed" : false ,
131+ "input" : [
132+ " TESTDATA = StringIO(s)"
133+ ],
134+ "language" : " python" ,
135+ "metadata" : {},
136+ "outputs" : [],
137+ "prompt_number" : 5
138+ },
139+ {
140+ "cell_type" : " code" ,
141+ "collapsed" : false ,
142+ "input" : [
143+ " df = pd.DataFrame.from_csv(TESTDATA, sep=\"\\ t\" , parse_dates=False)"
144+ ],
145+ "language" : " python" ,
146+ "metadata" : {},
147+ "outputs" : [],
148+ "prompt_number" : 7
149+ },
150+ {
151+ "cell_type" : " code" ,
152+ "collapsed" : false ,
153+ "input" : [
154+ " df.columns.values"
155+ ],
156+ "language" : " python" ,
157+ "metadata" : {},
158+ "outputs" : [
159+ {
160+ "metadata" : {},
161+ "output_type" : " pyout" ,
162+ "prompt_number" : 8 ,
163+ "text" : [
164+ " array(['Station Number', 'Address', 'Former City'], dtype=object)"
165+ ]
166+ }
167+ ],
168+ "prompt_number" : 8
169+ },
170+ {
171+ "cell_type" : " code" ,
172+ "collapsed" : false ,
173+ "input" : [
174+ " addresses = [x[0] for x in df[['Address']].values]"
175+ ],
176+ "language" : " python" ,
177+ "metadata" : {},
178+ "outputs" : [],
179+ "prompt_number" : 13
180+ },
181+ {
182+ "cell_type" : " code" ,
183+ "collapsed" : false ,
184+ "input" : [
185+ " import geocoder"
186+ ],
187+ "language" : " python" ,
188+ "metadata" : {},
189+ "outputs" : [],
190+ "prompt_number" : 14
191+ },
192+ {
193+ "cell_type" : " code" ,
194+ "collapsed" : false ,
195+ "input" : [
196+ " coords = [geocoder.google(addr + ' Montreal') for addr in filter(lambda x: type(x)==str, addresses)]"
197+ ],
198+ "language" : " python" ,
199+ "metadata" : {},
200+ "outputs" : [],
201+ "prompt_number" : 38
202+ },
203+ {
204+ "cell_type" : " code" ,
205+ "collapsed" : false ,
206+ "input" : [
207+ " f = open('firestations.csv', 'wb')\n " ,
208+ " f.write('address,lat,lng\\ n')\n " ,
209+ " for i,c in enumerate(coords):\n " ,
210+ " if c.status.find('ERROR') > -1:\n " ,
211+ " f.write(\" %s,,\\ n\" % (addresses[i]))\n " ,
212+ " else:\n " ,
213+ " f.write(\" %s,%f,%f\\ n\" % (addresses[i],c.lat,c.lng))\n " ,
214+ " f.close()"
215+ ],
216+ "language" : " python" ,
217+ "metadata" : {},
218+ "outputs" : [],
219+ "prompt_number" : 42
220+ },
221+ {
222+ "cell_type" : " code" ,
223+ "collapsed" : false ,
224+ "input" : [],
225+ "language" : " python" ,
226+ "metadata" : {},
227+ "outputs" : []
228+ }
229+ ],
230+ "metadata" : {}
231+ }
232+ ]
233+ }
0 commit comments