Imported all the notebooks
[tm351-notebooks.git] / notebooks / 14 document databases / intro-to-accidents.ipynb
1 {
2 "metadata": {
3 "name": "",
4 "signature": "sha256:3102d98f7297b3c0cd70c28f9fa0390011d2edcac4efb4e92679d52ad77dbeb7"
5 },
6 "nbformat": 3,
7 "nbformat_minor": 0,
8 "worksheets": [
9 {
10 "cells": [
11 {
12 "cell_type": "markdown",
13 "metadata": {},
14 "source": [
15 "# Basic CRUD operations in Mongo\n",
16 "\n",
17 "This is a notebook to take you through some basic CRUD operations with Mongo."
18 ]
19 },
20 {
21 "cell_type": "code",
22 "collapsed": false,
23 "input": [
24 "# Import the required libraries and open the connection to Mongo\n",
25 "\n",
26 "import collections\n",
27 "import datetime\n",
28 "from itertools import chain, repeat\n",
29 "import matplotlib as mpl\n",
30 "import matplotlib.pyplot as plt\n",
31 "from mpl_toolkits.basemap import Basemap\n",
32 "%matplotlib inline\n",
33 "\n",
34 "import numpy as np\n",
35 "import pandas as pd\n",
36 "import scipy.stats\n",
37 "\n",
38 "import pymongo\n",
39 "from bson.objectid import ObjectId\n",
40 "client = pymongo.MongoClient('mongodb://ogedei:27017/')"
41 ],
42 "language": "python",
43 "metadata": {},
44 "outputs": [],
45 "prompt_number": 1
46 },
47 {
48 "cell_type": "code",
49 "collapsed": false,
50 "input": [
51 "db = client.small_accidents\n",
52 "accidents = db.accidents\n",
53 "labels = db.labels\n",
54 "roads = db.roads"
55 ],
56 "language": "python",
57 "metadata": {},
58 "outputs": [],
59 "prompt_number": 2
60 },
61 {
62 "cell_type": "code",
63 "collapsed": false,
64 "input": [
65 "# Load the expanded names of keys and human-readable codes into memory\n",
66 "\n",
67 "expanded_name = collections.defaultdict(str)\n",
68 "for e in labels.find({'expanded': {\"$exists\": True}}):\n",
69 " expanded_name[e['label']] = e['expanded']\n",
70 " \n",
71 "label_of = collections.defaultdict(str)\n",
72 "for l in labels.find({'codes': {\"$exists\": True}}):\n",
73 " for c in l['codes']:\n",
74 " try:\n",
75 " label_of[(l['label'], int(c))] = l['codes'][c]\n",
76 " except ValueError: \n",
77 " label_of[(l['label'], c)] = l['codes'][c]"
78 ],
79 "language": "python",
80 "metadata": {},
81 "outputs": [],
82 "prompt_number": 3
83 },
84 {
85 "cell_type": "markdown",
86 "metadata": {},
87 "source": [
88 "# Getting a single document\n",
89 "`find_one()` is the basic method for returning a single document from a collection. With no arguments, it just returns the first document it finds (chosen arbitrarily by Mongo)."
90 ]
91 },
92 {
93 "cell_type": "code",
94 "collapsed": false,
95 "input": [
96 "accidents.find_one()"
97 ],
98 "language": "python",
99 "metadata": {},
100 "outputs": [
101 {
102 "metadata": {},
103 "output_type": "pyout",
104 "prompt_number": 4,
105 "text": [
106 "{'Longitude': -2.204997,\n",
107 " 'Police_Force': 6,\n",
108 " 'Vehicles': [{'Sex_of_Driver': 2,\n",
109 " '1st_Point_of_Impact': 1,\n",
110 " 'Hit_Object_off_Carriageway': 10,\n",
111 " 'Vehicle_Reference': 1,\n",
112 " 'Was_Vehicle_Left_Hand_Drive?': 1,\n",
113 " 'Vehicle_Leaving_Carriageway': 7,\n",
114 " 'Vehicle_Location-Restricted_Lane': 0,\n",
115 " 'Vehicle_Type': 9,\n",
116 " 'Hit_Object_in_Carriageway': 0,\n",
117 " 'Junction_Location': 0,\n",
118 " 'Age_Band_of_Driver': 5,\n",
119 " 'Driver_Home_Area_Type': 1,\n",
120 " 'Journey_Purpose_of_Driver': 6,\n",
121 " 'Propulsion_Code': 1,\n",
122 " 'Engine_Capacity_(CC)': 1596,\n",
123 " 'Vehicle_Manoeuvre': 16,\n",
124 " 'Age_of_Vehicle': 6,\n",
125 " 'Towing_and_Articulation': 0,\n",
126 " 'Skidding_and_Overturning': 1,\n",
127 " 'Driver_IMD_Decile': 3}],\n",
128 " 'Date': '01/01/2012',\n",
129 " 'Road_Surface_Conditions': 2,\n",
130 " 'loc': {'coordinates': [-2.204997, 53.588335], 'type': 'Point'},\n",
131 " '1st_Road_Class': 5,\n",
132 " 'Road_Type': 6,\n",
133 " 'Location_Easting_OSGR': 386528,\n",
134 " 'Number_of_Casualties': 2,\n",
135 " 'Datetime': datetime.datetime(2012, 1, 1, 0, 4),\n",
136 " '1st_Road_Number': 0,\n",
137 " '2nd_Road_Number': 0,\n",
138 " 'Weather_Conditions': 2,\n",
139 " 'Location_Northing_OSGR': 410215,\n",
140 " 'Pedestrian_Crossing-Human_Control': 0,\n",
141 " 'Casualties': [{'Casualty_Severity': 3,\n",
142 " 'Pedestrian_Location': 0,\n",
143 " 'Vehicle_Reference': 1,\n",
144 " 'Pedestrian_Road_Maintenance_Worker': 0,\n",
145 " 'Sex_of_Casualty': 2,\n",
146 " 'Age_Band_of_Casualty': 5,\n",
147 " 'Car_Passenger': 0,\n",
148 " 'Casualty_Type': 9,\n",
149 " 'Casualty_Home_Area_Type': 1,\n",
150 " 'Casualty_Reference': 1,\n",
151 " 'Pedestrian_Movement': 0,\n",
152 " 'Casualty_Class': 1,\n",
153 " 'Bus_or_Coach_Passenger': 0},\n",
154 " {'Casualty_Severity': 3,\n",
155 " 'Pedestrian_Location': 0,\n",
156 " 'Vehicle_Reference': 1,\n",
157 " 'Pedestrian_Road_Maintenance_Worker': 0,\n",
158 " 'Sex_of_Casualty': 2,\n",
159 " 'Age_Band_of_Casualty': 7,\n",
160 " 'Car_Passenger': 2,\n",
161 " 'Casualty_Type': 9,\n",
162 " 'Casualty_Home_Area_Type': -1,\n",
163 " 'Casualty_Reference': 2,\n",
164 " 'Pedestrian_Movement': 0,\n",
165 " 'Casualty_Class': 2,\n",
166 " 'Bus_or_Coach_Passenger': 0}],\n",
167 " 'LSOA_of_Accident_Location': 'E01005507',\n",
168 " 'Accident_Index': '201206P055810',\n",
169 " 'Local_Authority_(District)': 106,\n",
170 " 'Junction_Detail': 0,\n",
171 " 'Accident_Severity': 3,\n",
172 " 'Speed_limit': 30,\n",
173 " 'Number_of_Vehicles': 1,\n",
174 " '_id': ObjectId('52a9c97e92c4e16686d1be6b'),\n",
175 " 'Local_Authority_(Highway)': 'E08000005',\n",
176 " 'Latitude': 53.588335,\n",
177 " 'Carriageway_Hazards': 0,\n",
178 " 'Time': '00:04',\n",
179 " 'Day_of_Week': 1,\n",
180 " 'Did_Police_Officer_Attend_Scene_of_Accident': 1,\n",
181 " 'Junction_Control': -1,\n",
182 " 'Pedestrian_Crossing-Physical_Facilities': 0,\n",
183 " 'Special_Conditions_at_Site': 0,\n",
184 " 'Urban_or_Rural_Area': 1,\n",
185 " 'Light_Conditions': 4,\n",
186 " '2nd_Road_Class': -1}"
187 ]
188 }
189 ],
190 "prompt_number": 4
191 },
192 {
193 "cell_type": "markdown",
194 "metadata": {},
195 "source": [
196 "That's quite a bit of data, and it's not that useful to select an arbitrary accident report. Let's pull out an accident that happened in a 70 mph zone. We do that by giving a document that must match one in the database before it's returned."
197 ]
198 },
199 {
200 "cell_type": "code",
201 "collapsed": false,
202 "input": [
203 "accidents.find_one({'Speed_limit': 30})"
204 ],
205 "language": "python",
206 "metadata": {},
207 "outputs": [
208 {
209 "metadata": {},
210 "output_type": "pyout",
211 "prompt_number": 5,
212 "text": [
213 "{'Longitude': -2.204997,\n",
214 " 'Police_Force': 6,\n",
215 " 'Vehicles': [{'Sex_of_Driver': 2,\n",
216 " '1st_Point_of_Impact': 1,\n",
217 " 'Hit_Object_off_Carriageway': 10,\n",
218 " 'Vehicle_Reference': 1,\n",
219 " 'Was_Vehicle_Left_Hand_Drive?': 1,\n",
220 " 'Vehicle_Leaving_Carriageway': 7,\n",
221 " 'Vehicle_Location-Restricted_Lane': 0,\n",
222 " 'Vehicle_Type': 9,\n",
223 " 'Hit_Object_in_Carriageway': 0,\n",
224 " 'Junction_Location': 0,\n",
225 " 'Age_Band_of_Driver': 5,\n",
226 " 'Driver_Home_Area_Type': 1,\n",
227 " 'Journey_Purpose_of_Driver': 6,\n",
228 " 'Propulsion_Code': 1,\n",
229 " 'Engine_Capacity_(CC)': 1596,\n",
230 " 'Vehicle_Manoeuvre': 16,\n",
231 " 'Age_of_Vehicle': 6,\n",
232 " 'Towing_and_Articulation': 0,\n",
233 " 'Skidding_and_Overturning': 1,\n",
234 " 'Driver_IMD_Decile': 3}],\n",
235 " 'Date': '01/01/2012',\n",
236 " 'Road_Surface_Conditions': 2,\n",
237 " 'loc': {'coordinates': [-2.204997, 53.588335], 'type': 'Point'},\n",
238 " '1st_Road_Class': 5,\n",
239 " 'Road_Type': 6,\n",
240 " 'Location_Easting_OSGR': 386528,\n",
241 " 'Number_of_Casualties': 2,\n",
242 " 'Datetime': datetime.datetime(2012, 1, 1, 0, 4),\n",
243 " '1st_Road_Number': 0,\n",
244 " '2nd_Road_Number': 0,\n",
245 " 'Weather_Conditions': 2,\n",
246 " 'Location_Northing_OSGR': 410215,\n",
247 " 'Pedestrian_Crossing-Human_Control': 0,\n",
248 " 'Casualties': [{'Casualty_Severity': 3,\n",
249 " 'Pedestrian_Location': 0,\n",
250 " 'Vehicle_Reference': 1,\n",
251 " 'Pedestrian_Road_Maintenance_Worker': 0,\n",
252 " 'Sex_of_Casualty': 2,\n",
253 " 'Age_Band_of_Casualty': 5,\n",
254 " 'Car_Passenger': 0,\n",
255 " 'Casualty_Type': 9,\n",
256 " 'Casualty_Home_Area_Type': 1,\n",
257 " 'Casualty_Reference': 1,\n",
258 " 'Pedestrian_Movement': 0,\n",
259 " 'Casualty_Class': 1,\n",
260 " 'Bus_or_Coach_Passenger': 0},\n",
261 " {'Casualty_Severity': 3,\n",
262 " 'Pedestrian_Location': 0,\n",
263 " 'Vehicle_Reference': 1,\n",
264 " 'Pedestrian_Road_Maintenance_Worker': 0,\n",
265 " 'Sex_of_Casualty': 2,\n",
266 " 'Age_Band_of_Casualty': 7,\n",
267 " 'Car_Passenger': 2,\n",
268 " 'Casualty_Type': 9,\n",
269 " 'Casualty_Home_Area_Type': -1,\n",
270 " 'Casualty_Reference': 2,\n",
271 " 'Pedestrian_Movement': 0,\n",
272 " 'Casualty_Class': 2,\n",
273 " 'Bus_or_Coach_Passenger': 0}],\n",
274 " 'LSOA_of_Accident_Location': 'E01005507',\n",
275 " 'Accident_Index': '201206P055810',\n",
276 " 'Local_Authority_(District)': 106,\n",
277 " 'Junction_Detail': 0,\n",
278 " 'Accident_Severity': 3,\n",
279 " 'Speed_limit': 30,\n",
280 " 'Number_of_Vehicles': 1,\n",
281 " '_id': ObjectId('52a9c97e92c4e16686d1be6b'),\n",
282 " 'Local_Authority_(Highway)': 'E08000005',\n",
283 " 'Latitude': 53.588335,\n",
284 " 'Carriageway_Hazards': 0,\n",
285 " 'Time': '00:04',\n",
286 " 'Day_of_Week': 1,\n",
287 " 'Did_Police_Officer_Attend_Scene_of_Accident': 1,\n",
288 " 'Junction_Control': -1,\n",
289 " 'Pedestrian_Crossing-Physical_Facilities': 0,\n",
290 " 'Special_Conditions_at_Site': 0,\n",
291 " 'Urban_or_Rural_Area': 1,\n",
292 " 'Light_Conditions': 4,\n",
293 " '2nd_Road_Class': -1}"
294 ]
295 }
296 ],
297 "prompt_number": 5
298 },
299 {
300 "cell_type": "markdown",
301 "metadata": {},
302 "source": [
303 "If we give more than one key-value pair in the query document, the returned document must match all of them (and AND). For instance, to find an accident at 30mph that involved two vehicles and one casuality, we specify that information in the query document:"
304 ]
305 },
306 {
307 "cell_type": "code",
308 "collapsed": false,
309 "input": [
310 "accidents.find_one({'Speed_limit': 30, 'Number_of_Casualties': 1, 'Number_of_Vehicles': 2})"
311 ],
312 "language": "python",
313 "metadata": {},
314 "outputs": [
315 {
316 "metadata": {},
317 "output_type": "pyout",
318 "prompt_number": 6,
319 "text": [
320 "{'Longitude': -1.731617,\n",
321 " 'Police_Force': 13,\n",
322 " 'Vehicles': [{'Sex_of_Driver': 2,\n",
323 " '1st_Point_of_Impact': 1,\n",
324 " 'Hit_Object_off_Carriageway': 0,\n",
325 " 'Vehicle_Reference': 1,\n",
326 " 'Was_Vehicle_Left_Hand_Drive?': 1,\n",
327 " 'Vehicle_Leaving_Carriageway': 0,\n",
328 " 'Vehicle_Location-Restricted_Lane': 0,\n",
329 " 'Vehicle_Type': 9,\n",
330 " 'Hit_Object_in_Carriageway': 0,\n",
331 " 'Junction_Location': 1,\n",
332 " 'Age_Band_of_Driver': 5,\n",
333 " 'Driver_Home_Area_Type': 1,\n",
334 " 'Journey_Purpose_of_Driver': 6,\n",
335 " 'Propulsion_Code': 1,\n",
336 " 'Engine_Capacity_(CC)': 1587,\n",
337 " 'Vehicle_Manoeuvre': 5,\n",
338 " 'Age_of_Vehicle': 10,\n",
339 " 'Towing_and_Articulation': 0,\n",
340 " 'Skidding_and_Overturning': 0,\n",
341 " 'Driver_IMD_Decile': 1},\n",
342 " {'Sex_of_Driver': 3,\n",
343 " '1st_Point_of_Impact': 2,\n",
344 " 'Hit_Object_off_Carriageway': 0,\n",
345 " 'Vehicle_Reference': 2,\n",
346 " 'Was_Vehicle_Left_Hand_Drive?': 1,\n",
347 " 'Vehicle_Leaving_Carriageway': 0,\n",
348 " 'Vehicle_Location-Restricted_Lane': 0,\n",
349 " 'Vehicle_Type': 19,\n",
350 " 'Hit_Object_in_Carriageway': 0,\n",
351 " 'Junction_Location': 1,\n",
352 " 'Age_Band_of_Driver': -1,\n",
353 " 'Driver_Home_Area_Type': -1,\n",
354 " 'Journey_Purpose_of_Driver': 6,\n",
355 " 'Propulsion_Code': 2,\n",
356 " 'Engine_Capacity_(CC)': 2402,\n",
357 " 'Vehicle_Manoeuvre': 2,\n",
358 " 'Age_of_Vehicle': 7,\n",
359 " 'Towing_and_Articulation': 0,\n",
360 " 'Skidding_and_Overturning': 0,\n",
361 " 'Driver_IMD_Decile': -1}],\n",
362 " 'Date': '01/01/2012',\n",
363 " 'Road_Surface_Conditions': 2,\n",
364 " 'loc': {'coordinates': [-1.731617, 53.810716], 'type': 'Point'},\n",
365 " '1st_Road_Class': 6,\n",
366 " 'Road_Type': 6,\n",
367 " 'Location_Easting_OSGR': 417770,\n",
368 " 'Number_of_Casualties': 1,\n",
369 " 'Datetime': datetime.datetime(2012, 1, 1, 0, 15),\n",
370 " '1st_Road_Number': 0,\n",
371 " '2nd_Road_Number': -1,\n",
372 " 'Weather_Conditions': 9,\n",
373 " 'Location_Northing_OSGR': 434970,\n",
374 " 'Pedestrian_Crossing-Human_Control': 0,\n",
375 " 'Casualties': [{'Casualty_Severity': 3,\n",
376 " 'Pedestrian_Location': 0,\n",
377 " 'Vehicle_Reference': 1,\n",
378 " 'Pedestrian_Road_Maintenance_Worker': 0,\n",
379 " 'Sex_of_Casualty': 2,\n",
380 " 'Age_Band_of_Casualty': 5,\n",
381 " 'Car_Passenger': 0,\n",
382 " 'Casualty_Type': 9,\n",
383 " 'Casualty_Home_Area_Type': 1,\n",
384 " 'Casualty_Reference': 1,\n",
385 " 'Pedestrian_Movement': 0,\n",
386 " 'Casualty_Class': 1,\n",
387 " 'Bus_or_Coach_Passenger': 0}],\n",
388 " 'LSOA_of_Accident_Location': 'E01010828',\n",
389 " 'Accident_Index': 2012130002806,\n",
390 " 'Local_Authority_(District)': 200,\n",
391 " 'Junction_Detail': 8,\n",
392 " 'Accident_Severity': 3,\n",
393 " 'Speed_limit': 30,\n",
394 " 'Number_of_Vehicles': 2,\n",
395 " '_id': ObjectId('52a9c97f92c4e16686d1e68e'),\n",
396 " 'Local_Authority_(Highway)': 'E08000032',\n",
397 " 'Latitude': 53.810716,\n",
398 " 'Carriageway_Hazards': 0,\n",
399 " 'Time': '00:15',\n",
400 " 'Day_of_Week': 1,\n",
401 " 'Did_Police_Officer_Attend_Scene_of_Accident': 2,\n",
402 " 'Junction_Control': 4,\n",
403 " 'Pedestrian_Crossing-Physical_Facilities': 0,\n",
404 " 'Special_Conditions_at_Site': 0,\n",
405 " 'Urban_or_Rural_Area': 1,\n",
406 " 'Light_Conditions': 7,\n",
407 " '2nd_Road_Class': -1}"
408 ]
409 }
410 ],
411 "prompt_number": 6
412 },
413 {
414 "cell_type": "markdown",
415 "metadata": {},
416 "source": [
417 "We can also limit the key-value pairs returned by specifying the second argument to `find_one()`. If we give it a list of key names, only those key-value pairs are returned."
418 ]
419 },
420 {
421 "cell_type": "code",
422 "collapsed": false,
423 "input": [
424 "accidents.find_one({'Speed_limit': 30, 'Number_of_Casualties': 1, 'Number_of_Vehicles': 2}, \n",
425 " ['Accident_Index', 'Speed_limit', 'Number_of_Casualties', 'Number_of_Vehicles'])"
426 ],
427 "language": "python",
428 "metadata": {},
429 "outputs": [
430 {
431 "metadata": {},
432 "output_type": "pyout",
433 "prompt_number": 7,
434 "text": [
435 "{'Number_of_Vehicles': 2,\n",
436 " '_id': ObjectId('52a9c97f92c4e16686d1e68e'),\n",
437 " 'Number_of_Casualties': 1,\n",
438 " 'Accident_Index': 2012130002806,\n",
439 " 'Speed_limit': 30}"
440 ]
441 }
442 ],
443 "prompt_number": 7
444 },
445 {
446 "cell_type": "markdown",
447 "metadata": {},
448 "source": [
449 "You'll notice that Mongo returns the document `_id`. It always does that unless we specifically ask it not to. \n",
450 "\n",
451 "The 'list of keys' notation is a shorthand for the full specification for which keys to return. Mongo expects a dict of keys to include or exclude. If the keys in that projection specification have a value `1`, the key is included; if they have a value `0`, they're excludeded. You can only include or exclude keys in one projection, with the exception of the `_id` key. \n",
452 "\n",
453 "For instance, the previous query could be specified as:"
454 ]
455 },
456 {
457 "cell_type": "code",
458 "collapsed": false,
459 "input": [
460 "accidents.find_one({'Speed_limit': 30, 'Number_of_Casualties': 1, 'Number_of_Vehicles': 2}, \n",
461 " {'Accident_Index': 1, 'Speed_limit': 1, \n",
462 " 'Number_of_Casualties': 1, 'Number_of_Vehicles': 1})"
463 ],
464 "language": "python",
465 "metadata": {},
466 "outputs": [
467 {
468 "metadata": {},
469 "output_type": "pyout",
470 "prompt_number": 8,
471 "text": [
472 "{'Number_of_Vehicles': 2,\n",
473 " '_id': ObjectId('52a9c97f92c4e16686d1e68e'),\n",
474 " 'Number_of_Casualties': 1,\n",
475 " 'Accident_Index': 2012130002806,\n",
476 " 'Speed_limit': 30}"
477 ]
478 }
479 ],
480 "prompt_number": 8
481 },
482 {
483 "cell_type": "markdown",
484 "metadata": {},
485 "source": [
486 "or, to exclude the `_id`:"
487 ]
488 },
489 {
490 "cell_type": "code",
491 "collapsed": false,
492 "input": [
493 "accidents.find_one({'Speed_limit': 30, 'Number_of_Casualties': 1, 'Number_of_Vehicles': 2}, \n",
494 " {'_id': 0, \n",
495 " 'Accident_Index': 1, 'Speed_limit': 1, \n",
496 " 'Number_of_Casualties': 1, 'Number_of_Vehicles': 1})"
497 ],
498 "language": "python",
499 "metadata": {},
500 "outputs": [
501 {
502 "metadata": {},
503 "output_type": "pyout",
504 "prompt_number": 9,
505 "text": [
506 "{'Number_of_Vehicles': 2,\n",
507 " 'Number_of_Casualties': 1,\n",
508 " 'Accident_Index': 2012130002806,\n",
509 " 'Speed_limit': 30}"
510 ]
511 }
512 ],
513 "prompt_number": 9
514 },
515 {
516 "cell_type": "markdown",
517 "metadata": {},
518 "source": [
519 "To return all the key-value pairs _except_ for the few we specify:"
520 ]
521 },
522 {
523 "cell_type": "code",
524 "collapsed": false,
525 "input": [
526 "accidents.find_one({'Speed_limit': 30, 'Number_of_Casualties': 1, 'Number_of_Vehicles': 2}, \n",
527 " {'Casualies': 0, 'Vehicles': 0})"
528 ],
529 "language": "python",
530 "metadata": {},
531 "outputs": [
532 {
533 "metadata": {},
534 "output_type": "pyout",
535 "prompt_number": 10,
536 "text": [
537 "{'Longitude': -1.731617,\n",
538 " 'Police_Force': 13,\n",
539 " 'Day_of_Week': 1,\n",
540 " 'Date': '01/01/2012',\n",
541 " 'Road_Surface_Conditions': 2,\n",
542 " 'Light_Conditions': 7,\n",
543 " '1st_Road_Class': 6,\n",
544 " 'Road_Type': 6,\n",
545 " 'Location_Easting_OSGR': 417770,\n",
546 " 'Number_of_Casualties': 1,\n",
547 " '1st_Road_Number': 0,\n",
548 " '2nd_Road_Number': -1,\n",
549 " 'Weather_Conditions': 9,\n",
550 " 'loc': {'coordinates': [-1.731617, 53.810716], 'type': 'Point'},\n",
551 " 'Location_Northing_OSGR': 434970,\n",
552 " 'Pedestrian_Crossing-Human_Control': 0,\n",
553 " 'Casualties': [{'Casualty_Severity': 3,\n",
554 " 'Pedestrian_Location': 0,\n",
555 " 'Vehicle_Reference': 1,\n",
556 " 'Pedestrian_Road_Maintenance_Worker': 0,\n",
557 " 'Sex_of_Casualty': 2,\n",
558 " 'Age_Band_of_Casualty': 5,\n",
559 " 'Car_Passenger': 0,\n",
560 " 'Casualty_Type': 9,\n",
561 " 'Casualty_Home_Area_Type': 1,\n",
562 " 'Casualty_Reference': 1,\n",
563 " 'Pedestrian_Movement': 0,\n",
564 " 'Casualty_Class': 1,\n",
565 " 'Bus_or_Coach_Passenger': 0}],\n",
566 " 'LSOA_of_Accident_Location': 'E01010828',\n",
567 " 'Accident_Index': 2012130002806,\n",
568 " 'Local_Authority_(District)': 200,\n",
569 " 'Junction_Detail': 8,\n",
570 " 'Accident_Severity': 3,\n",
571 " 'Speed_limit': 30,\n",
572 " 'Number_of_Vehicles': 2,\n",
573 " '_id': ObjectId('52a9c97f92c4e16686d1e68e'),\n",
574 " 'Local_Authority_(Highway)': 'E08000032',\n",
575 " 'Carriageway_Hazards': 0,\n",
576 " 'Time': '00:15',\n",
577 " '2nd_Road_Class': -1,\n",
578 " 'Did_Police_Officer_Attend_Scene_of_Accident': 2,\n",
579 " 'Junction_Control': 4,\n",
580 " 'Pedestrian_Crossing-Physical_Facilities': 0,\n",
581 " 'Datetime': datetime.datetime(2012, 1, 1, 0, 15),\n",
582 " 'Urban_or_Rural_Area': 1,\n",
583 " 'Latitude': 53.810716,\n",
584 " 'Special_Conditions_at_Site': 0}"
585 ]
586 }
587 ],
588 "prompt_number": 10
589 },
590 {
591 "cell_type": "markdown",
592 "metadata": {},
593 "source": [
594 "## Finding multiple documents\n",
595 "If we want to find more than one document at a time, we use the imaginatively named `find()` function."
596 ]
597 },
598 {
599 "cell_type": "code",
600 "collapsed": false,
601 "input": [
602 "accidents.find({'Speed_limit': 30, 'Number_of_Casualties': 1, 'Number_of_Vehicles': 2})"
603 ],
604 "language": "python",
605 "metadata": {},
606 "outputs": [
607 {
608 "metadata": {},
609 "output_type": "pyout",
610 "prompt_number": 11,
611 "text": [
612 "<pymongo.cursor.Cursor at 0x7f4bac98f4a8>"
613 ]
614 }
615 ],
616 "prompt_number": 11
617 },
618 {
619 "cell_type": "markdown",
620 "metadata": {},
621 "source": [
622 "This returns a PyMongo `cursor` object, which acts like an iterable in most cases. \n",
623 "\n",
624 "One useful thing the cursor can do is tell us how many documents match."
625 ]
626 },
627 {
628 "cell_type": "code",
629 "collapsed": false,
630 "input": [
631 "accidents.find({'Speed_limit': 30, 'Number_of_Casualties': 1, 'Number_of_Vehicles': 2}).count()"
632 ],
633 "language": "python",
634 "metadata": {},
635 "outputs": [
636 {
637 "metadata": {},
638 "output_type": "pyout",
639 "prompt_number": 12,
640 "text": [
641 "46715"
642 ]
643 }
644 ],
645 "prompt_number": 12
646 },
647 {
648 "cell_type": "markdown",
649 "metadata": {},
650 "source": [
651 "While we're exploring, we can limit the number of documents returned with the `limit` keyword parameter. Again, which documents are returned is arbitrary."
652 ]
653 },
654 {
655 "cell_type": "code",
656 "collapsed": false,
657 "input": [
658 "len(list(accidents.find({'Speed_limit': 30, 'Number_of_Casualties': 1, 'Number_of_Vehicles': 2}, limit=10)))"
659 ],
660 "language": "python",
661 "metadata": {},
662 "outputs": [
663 {
664 "metadata": {},
665 "output_type": "pyout",
666 "prompt_number": 13,
667 "text": [
668 "10"
669 ]
670 }
671 ],
672 "prompt_number": 13
673 },
674 {
675 "cell_type": "markdown",
676 "metadata": {},
677 "source": [
678 "We can iterate over the cursor in Python just as we'd iterate over any iterable, and pull values from the document just as we would from any dict:"
679 ]
680 },
681 {
682 "cell_type": "code",
683 "collapsed": false,
684 "input": [
685 "for a in accidents.find({'Speed_limit': 30, 'Number_of_Casualties': 3, 'Number_of_Vehicles': 2}, limit=10):\n",
686 " print(a['Accident_Index'], a['Accident_Severity'])"
687 ],
688 "language": "python",
689 "metadata": {},
690 "outputs": [
691 {
692 "output_type": "stream",
693 "stream": "stdout",
694 "text": [
695 "201201KD50022 3\n",
696 "2012620213941 3\n",
697 "201243N035012 2\n",
698 "201201XD80013 2\n",
699 "2012130000979 2\n",
700 "2012540017412 2\n",
701 "201206N056171 3\n",
702 "201242I000601 3\n",
703 "2012160C00741 3\n",
704 "2012030001017 3\n"
705 ]
706 }
707 ],
708 "prompt_number": 14
709 },
710 {
711 "cell_type": "markdown",
712 "metadata": {},
713 "source": [
714 "And we can use the `label_of` dict to show what the cryptic codes mean."
715 ]
716 },
717 {
718 "cell_type": "code",
719 "collapsed": false,
720 "input": [
721 "for a in accidents.find({'Speed_limit': 30, 'Number_of_Casualties': 3, 'Number_of_Vehicles': 2}, limit=10):\n",
722 " print(a['Accident_Index'], label_of[('Accident_Severity', a['Accident_Severity'])])"
723 ],
724 "language": "python",
725 "metadata": {},
726 "outputs": [
727 {
728 "output_type": "stream",
729 "stream": "stdout",
730 "text": [
731 "201201KD50022 Slight\n",
732 "2012620213941 Slight\n",
733 "201243N035012 Serious\n",
734 "201201XD80013 Serious\n",
735 "2012130000979 Serious\n",
736 "2012540017412 Serious\n",
737 "201206N056171 Slight\n",
738 "201242I000601 Slight\n",
739 "2012160C00741 Slight\n",
740 "2012030001017 Slight\n"
741 ]
742 }
743 ],
744 "prompt_number": 15
745 },
746 {
747 "cell_type": "markdown",
748 "metadata": {},
749 "source": [
750 "We can now start to investigate the data. What are the proportions of accident severities in 30mph zones?\n",
751 "\n",
752 "First, make sure we have the labels for the severities in the correct order, so we can use that order in the plots."
753 ]
754 },
755 {
756 "cell_type": "code",
757 "collapsed": false,
758 "input": [
759 "ordered_severity_labels = [label_of[k] for k in \n",
760 " sorted([(l, c) for l, c in label_of.keys() if l == 'Accident_Severity'], \n",
761 " key = lambda ln: ln[1])]"
762 ],
763 "language": "python",
764 "metadata": {},
765 "outputs": [],
766 "prompt_number": 16
767 },
768 {
769 "cell_type": "code",
770 "collapsed": false,
771 "input": [
772 "severities_30 = pd.Series(collections.Counter(label_of[('Accident_Severity', a['Accident_Severity'])] \n",
773 " for a in accidents.find({'Speed_limit': 30}, ['Accident_Severity'])))\n",
774 "severities_30.reindex(ordered_severity_labels)\n",
775 "severities_30"
776 ],
777 "language": "python",
778 "metadata": {},
779 "outputs": [
780 {
781 "metadata": {},
782 "output_type": "pyout",
783 "prompt_number": 17,
784 "text": [
785 "Fatal 582\n",
786 "Serious 12686\n",
787 "Slight 81727\n",
788 "dtype: int64"
789 ]
790 }
791 ],
792 "prompt_number": 17
793 },
794 {
795 "cell_type": "code",
796 "collapsed": false,
797 "input": [
798 "severities_30.plot(kind='bar')"
799 ],
800 "language": "python",
801 "metadata": {},
802 "outputs": [
803 {
804 "metadata": {},
805 "output_type": "pyout",
806 "prompt_number": 18,
807 "text": [
808 "<matplotlib.axes.AxesSubplot at 0x7f4bac98f7f0>"
809 ]
810 },
811 {
812 "metadata": {},
813 "output_type": "display_data",
814 "png": "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\n",
815 "text": [
816 "<matplotlib.figure.Figure at 0x7f4bac993128>"
817 ]
818 }
819 ],
820 "prompt_number": 18
821 },
822 {
823 "cell_type": "markdown",
824 "metadata": {},
825 "source": [
826 "How about in 70mph zones?"
827 ]
828 },
829 {
830 "cell_type": "code",
831 "collapsed": false,
832 "input": [
833 "severities_70 = pd.Series(collections.Counter(label_of[('Accident_Severity', a['Accident_Severity'])] \n",
834 " for a in accidents.find({'Speed_limit': 70}, ['Accident_Severity'])))\n",
835 "severities_70.reindex(ordered_severity_labels)\n",
836 "severities_70"
837 ],
838 "language": "python",
839 "metadata": {},
840 "outputs": [
841 {
842 "metadata": {},
843 "output_type": "pyout",
844 "prompt_number": 19,
845 "text": [
846 "Fatal 198\n",
847 "Serious 1157\n",
848 "Slight 8667\n",
849 "dtype: int64"
850 ]
851 }
852 ],
853 "prompt_number": 19
854 },
855 {
856 "cell_type": "code",
857 "collapsed": false,
858 "input": [
859 "severities_70.plot(kind='bar')"
860 ],
861 "language": "python",
862 "metadata": {},
863 "outputs": [
864 {
865 "metadata": {},
866 "output_type": "pyout",
867 "prompt_number": 20,
868 "text": [
869 "<matplotlib.axes.AxesSubplot at 0x7f4bac944940>"
870 ]
871 },
872 {
873 "metadata": {},
874 "output_type": "display_data",
875 "png": "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\n",
876 "text": [
877 "<matplotlib.figure.Figure at 0x7f4bac91f278>"
878 ]
879 }
880 ],
881 "prompt_number": 20
882 },
883 {
884 "cell_type": "markdown",
885 "metadata": {},
886 "source": [
887 "Let's compare accident severities across speed limits"
888 ]
889 },
890 {
891 "cell_type": "code",
892 "collapsed": false,
893 "input": [
894 "severity_by_speed_dict = collections.Counter((a['Speed_limit'], a['Accident_Severity']) \n",
895 " for a in accidents.find({}, ['Speed_limit', 'Accident_Severity']))\n",
896 "severity_by_speed_dict"
897 ],
898 "language": "python",
899 "metadata": {},
900 "outputs": [
901 {
902 "metadata": {},
903 "output_type": "pyout",
904 "prompt_number": 21,
905 "text": [
906 "Counter({(30, 3): 81727, (60, 3): 16416, (30, 2): 12686, (40, 3): 9961, (70, 3): 8667, (50, 3): 4356, (60, 2): 4157, (20, 3): 1905, (40, 2): 1798, (70, 2): 1157, (50, 2): 770, (60, 1): 599, (30, 1): 582, (20, 2): 333, (70, 1): 198, (40, 1): 155, (50, 1): 94, (20, 1): 9, (10, 3): 1})"
907 ]
908 }
909 ],
910 "prompt_number": 21
911 },
912 {
913 "cell_type": "markdown",
914 "metadata": {},
915 "source": [
916 "Capture the severities and speeds and put them in the right order"
917 ]
918 },
919 {
920 "cell_type": "code",
921 "collapsed": false,
922 "input": [
923 "speeds = sorted(set(k[0] for k in severity_by_speed_dict.keys()))\n",
924 "severities = sorted(set(k[1] for k in severity_by_speed_dict.keys()))"
925 ],
926 "language": "python",
927 "metadata": {},
928 "outputs": [],
929 "prompt_number": 22
930 },
931 {
932 "cell_type": "code",
933 "collapsed": false,
934 "input": [
935 "severity_by_speed = pd.DataFrame(\n",
936 " {label_of[('Accident_Severity', sv)]: {sp: severity_by_speed_dict[(sp, sv)]\n",
937 " for sp in speeds} \n",
938 " for sv in severities})\n",
939 "severity_by_speed.reindex(columns=ordered_severity_labels)\n",
940 "severity_by_speed.index.name = 'Speed'\n",
941 "severity_by_speed.columns.name = 'Severity'\n",
942 "severity_by_speed"
943 ],
944 "language": "python",
945 "metadata": {},
946 "outputs": [
947 {
948 "html": [
949 "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
950 "<table border=\"1\" class=\"dataframe\">\n",
951 " <thead>\n",
952 " <tr style=\"text-align: right;\">\n",
953 " <th>Severity</th>\n",
954 " <th>Fatal</th>\n",
955 " <th>Serious</th>\n",
956 " <th>Slight</th>\n",
957 " </tr>\n",
958 " <tr>\n",
959 " <th>Speed</th>\n",
960 " <th></th>\n",
961 " <th></th>\n",
962 " <th></th>\n",
963 " </tr>\n",
964 " </thead>\n",
965 " <tbody>\n",
966 " <tr>\n",
967 " <th>10</th>\n",
968 " <td> 0</td>\n",
969 " <td> 0</td>\n",
970 " <td> 1</td>\n",
971 " </tr>\n",
972 " <tr>\n",
973 " <th>20</th>\n",
974 " <td> 9</td>\n",
975 " <td> 333</td>\n",
976 " <td> 1905</td>\n",
977 " </tr>\n",
978 " <tr>\n",
979 " <th>30</th>\n",
980 " <td> 582</td>\n",
981 " <td> 12686</td>\n",
982 " <td> 81727</td>\n",
983 " </tr>\n",
984 " <tr>\n",
985 " <th>40</th>\n",
986 " <td> 155</td>\n",
987 " <td> 1798</td>\n",
988 " <td> 9961</td>\n",
989 " </tr>\n",
990 " <tr>\n",
991 " <th>50</th>\n",
992 " <td> 94</td>\n",
993 " <td> 770</td>\n",
994 " <td> 4356</td>\n",
995 " </tr>\n",
996 " <tr>\n",
997 " <th>60</th>\n",
998 " <td> 599</td>\n",
999 " <td> 4157</td>\n",
1000 " <td> 16416</td>\n",
1001 " </tr>\n",
1002 " <tr>\n",
1003 " <th>70</th>\n",
1004 " <td> 198</td>\n",
1005 " <td> 1157</td>\n",
1006 " <td> 8667</td>\n",
1007 " </tr>\n",
1008 " </tbody>\n",
1009 "</table>\n",
1010 "<p>7 rows \u00d7 3 columns</p>\n",
1011 "</div>"
1012 ],
1013 "metadata": {},
1014 "output_type": "pyout",
1015 "prompt_number": 23,
1016 "text": [
1017 "Severity Fatal Serious Slight\n",
1018 "Speed \n",
1019 "10 0 0 1\n",
1020 "20 9 333 1905\n",
1021 "30 582 12686 81727\n",
1022 "40 155 1798 9961\n",
1023 "50 94 770 4356\n",
1024 "60 599 4157 16416\n",
1025 "70 198 1157 8667\n",
1026 "\n",
1027 "[7 rows x 3 columns]"
1028 ]
1029 }
1030 ],
1031 "prompt_number": 23
1032 },
1033 {
1034 "cell_type": "markdown",
1035 "metadata": {},
1036 "source": [
1037 "Plot this data to see what we've got."
1038 ]
1039 },
1040 {
1041 "cell_type": "code",
1042 "collapsed": false,
1043 "input": [
1044 "severity_by_speed.plot(kind='bar')"
1045 ],
1046 "language": "python",
1047 "metadata": {},
1048 "outputs": [
1049 {
1050 "metadata": {},
1051 "output_type": "pyout",
1052 "prompt_number": 24,
1053 "text": [
1054 "<matplotlib.axes.AxesSubplot at 0x7f4bac8352e8>"
1055 ]
1056 },
1057 {
1058 "metadata": {},
1059 "output_type": "display_data",
1060 "png": "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\nAAAAAElFTkSuQmCC\n",
1061 "text": [
1062 "<matplotlib.figure.Figure at 0x7f4bac835c88>"
1063 ]
1064 }
1065 ],
1066 "prompt_number": 24
1067 },
1068 {
1069 "cell_type": "markdown",
1070 "metadata": {},
1071 "source": [
1072 "It's difficult to see the detail because there are so many accidents at 30mph. How many accidents are there at each speed?"
1073 ]
1074 },
1075 {
1076 "cell_type": "code",
1077 "collapsed": false,
1078 "input": [
1079 "# What proportion of the accidents occur at each speed?\n",
1080 "severity_by_speed.sum(axis='columns') / severity_by_speed.sum(axis='columns').sum()"
1081 ],
1082 "language": "python",
1083 "metadata": {},
1084 "outputs": [
1085 {
1086 "metadata": {},
1087 "output_type": "pyout",
1088 "prompt_number": 25,
1089 "text": [
1090 "Speed\n",
1091 "10 0.000007\n",
1092 "20 0.015436\n",
1093 "30 0.652568\n",
1094 "40 0.081843\n",
1095 "50 0.035859\n",
1096 "60 0.145441\n",
1097 "70 0.068846\n",
1098 "dtype: float64"
1099 ]
1100 }
1101 ],
1102 "prompt_number": 25
1103 },
1104 {
1105 "cell_type": "code",
1106 "collapsed": false,
1107 "input": [
1108 "# scale the accident numbers so the largest value is 1.\n",
1109 "severity_by_speed.sum(axis='columns') / severity_by_speed.sum(axis='columns').max()"
1110 ],
1111 "language": "python",
1112 "metadata": {},
1113 "outputs": [
1114 {
1115 "metadata": {},
1116 "output_type": "pyout",
1117 "prompt_number": 26,
1118 "text": [
1119 "Speed\n",
1120 "10 0.000011\n",
1121 "20 0.023654\n",
1122 "30 1.000000\n",
1123 "40 0.125417\n",
1124 "50 0.054950\n",
1125 "60 0.222875\n",
1126 "70 0.105500\n",
1127 "dtype: float64"
1128 ]
1129 }
1130 ],
1131 "prompt_number": 26
1132 },
1133 {
1134 "cell_type": "code",
1135 "collapsed": false,
1136 "input": [
1137 "severity_by_speed.sum(axis=1).plot(kind='bar')"
1138 ],
1139 "language": "python",
1140 "metadata": {},
1141 "outputs": [
1142 {
1143 "metadata": {},
1144 "output_type": "pyout",
1145 "prompt_number": 27,
1146 "text": [
1147 "<matplotlib.axes.AxesSubplot at 0x7f4bab1a0438>"
1148 ]
1149 },
1150 {
1151 "metadata": {},
1152 "output_type": "display_data",
1153 "png": "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\n",
1154 "text": [
1155 "<matplotlib.figure.Figure at 0x7f4bac80cf98>"
1156 ]
1157 }
1158 ],
1159 "prompt_number": 27
1160 },
1161 {
1162 "cell_type": "markdown",
1163 "metadata": {},
1164 "source": [
1165 "There are over four times as many accidents in 30mph zones as at any speed, and those accidents represent about two thirds of all the accidents that occurred. \n",
1166 "\n",
1167 "Let's normalise each row so that we can see the proportions of accidents at each severity at eash speed.\n",
1168 "\n",
1169 "(And push the legend out beyond the right hand side of the plot so that it doesn't obscure the bars.)"
1170 ]
1171 },
1172 {
1173 "cell_type": "code",
1174 "collapsed": false,
1175 "input": [
1176 "severity_by_speed_norm_row = severity_by_speed.div(severity_by_speed.sum(axis='columns'), axis='index')\n",
1177 "ax = severity_by_speed_norm_row.plot(kind='bar', legend=False)\n",
1178 "ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))"
1179 ],
1180 "language": "python",
1181 "metadata": {},
1182 "outputs": [
1183 {
1184 "metadata": {},
1185 "output_type": "pyout",
1186 "prompt_number": 28,
1187 "text": [
1188 "<matplotlib.legend.Legend at 0x7f4bac7d8cf8>"
1189 ]
1190 },
1191 {
1192 "metadata": {},
1193 "output_type": "display_data",
1194 "png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAAERCAYAAAD2e5d3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+cFPWd5/FXzwyKQA8zzCicMDiLq6A5CWZPFAKbMf44\nzGEg3iMSlNyMe+F45B66zCO5W0RzByY5SS4oPAx3ognObMydsrp6ZL0IiY8FhJyi7GUILII6Qhgg\nLBKGmZbMGQbq/qietmm6p6pnqqvqW/V+Ph71oKv62zXvKdv+TNWnqhpERERERERERERERERERERE\nRERERERERERE8noG+Cdgdz9jngDeA3YB1/sRSkREJGxmYhfBQgXzC8DP049vBN70I5SIiEgY1VO4\nYK4F5mXN7wNGlzqQiIiIn8o8WMdYoCNr/jAwzoP1ioiIhIYXBRMgkTNvebReERGRUKjwYB1HgLqs\n+XHpZee58sorrfb2dg9+nIhIrOwCpgQdQrzZw/wZ8G/Sj28CTmGfVXue9vZ2LMvydVq2bFne5WDv\nAruZgNDkDvuk3Mqu3N5PwKc9+JwWD7jZw3wO+BxQi92rXAYMST/3FPYZsl8A3gdOA/d5H3NgDh48\nGHSEAVFuf5maG8zNrtxiIjcFc76LMfcPNoiIiEiYeXXSTyg1NTUFHWFAlNtfpuYGc7Mrt5go9+zW\nUrLSx+MDl0gkXJ/GmwDCkltE4ieRSIC/n9VSQKT3MLds2RJ0hAFRbn+ZmhvMza7cYqJIF0wRERGv\n6JCs01h0SFZEgqNDsuGhPUwREREXIl0wTe03KLe/TM0N5mZXbjFRpAumiIiIV9TDdBqLepgiEhz1\nMMNDe5giIiIuRLpgmtpvUG5/mZobzM2u3GKiSBdMERERr6iH6TQW9TBFJDjqYYaH9jBFRERciHTB\nNLXfoNz+MjU3mJtducVEkS6YIiIiXlEP02ks6mGKSHDUwwwP7WGKiIi4EOmCaWq/Qbn9ZWpuMDe7\ncouJIl0wRUREvKIeptNY1MMUkeCohxke2sMUERFxIdIF09R+g3L7y9TcYG525RYTRbpgioiIeEU9\nTKexqIcpIsFRDzM8tIcpIiLiQqQLpqn9BuX2l6m5wdzsUcs9qrKSRCLhahpVWelvaPFMpAumhIM+\nTCTqOlMpLHA1daZSQcWUQVIP02ks6mEOlra3RF0p3+PqYYaH9jBFRERciHTBVJ/EX1Hb3iYwNbty\ni4kqgg4g7vX1SdxIqE8iIuIp9TCdxhKenppyi4STepjxEOlDsiKDUcwh8DCd4WtqbpGwi3TBNLXf\noNz+KpS7mEsFgrpcIF92U3ObwNTc4o1IF0wRERGvuDkuPgtYDZQDPwa+n/N8LfBTYAz2SUQrgdY8\n61EPc5CU21/F5IbwZDc1t8nUw4wHp/8I5cB+4FbgCPA2MB94J2vMcuBiYCl28dwPjAZ6c9algjlI\nyu0vUwuPqblNpoIZD06HZKcC7wMHgTPA88CcnDG/A/rOGqgEfs+FxTIQpvYblNtfpuYGc7Mrt5jI\n6TrMsUBH1vxh4MacMT8C/h44CiSBuz1LJyIiEhJOu/n/GruHuTA9vwC7YD6QNeZb2Idim4ErgV8C\nnwZyT73TIdlBUm5/mXpo09TcJtMh2Xhw2sM8AtRlzddh72Vmmw78l/TjduAAMBHYmbuypqYm6uvr\nAaiqqmLKlCk0NDQAnxzq8G0+nakh/W+h+T6+5yswn8njkL/vNUHnjcv2Dl1+l3kz80HnNXwe7G3a\nkPWY/ub7Wd+WLVtobW0FyHxeihkqsItgPXAR0AZckzPmcWBZ+vFo7II6Ks+6LL9t3rw573LAslxO\nyu1enHOHKbupuU0QxHscijpgICXktIfZC9wPbMI+Y3Yd9hmyi9LPPwU8CrQAu7BPIvor4GQpwoqI\niARF95J1Gkt4+jvK7S9Te4Gm5jaZepjxoDv9iIiIuBDpgpl74oYplNtfpuYGc7Pny23CTeNN3d7i\nDX0fpoiEQjHf9wr6zlfxn3qYTmMJT39Huf1lai9Quf2nHmY8RPqQrIiIiFciXTBN7Tcot79MzQ3m\nZlduMVGkC6aIiIhX1MN0Gks8+iSlFIfcEJ7syu0/9TDjQXuYIiIiLkS6YJrab1Buf5maG8zNrtxi\nokgXTBEREa+oh+k0lnj0SUopDrkhPNmV23/qYcaD9jBFRERciHTBNLXfoNz+MjU3mJtducVEkS6Y\nIiIiXlEP02ks8eiTlFIcckN4siu3/9TDjAftYYqIiLgQ6YJpar9Buf1lam4wN7tyi4kiXTBFRES8\noh6m01ji0ScppTjkhvBkV27/qYcZD9rDFBERcSHSBdPUfoNy+8vU3GBuduUWE0W6YIqIiHhFPUyn\nscSjT1JKccgN4cmu3P5TDzMetIcpIiLiQqQLpqn9BuX2l6m5wdzsyi0minTBFBER8Yp6mE5jiUef\npJTikBvCk125/aceZjxoD1NERMSFSBdMU/sNyu0vU3ODudmVW0wU6YIpIiLiFfUwncYSjz5JKcUh\nN4Qnu3L7Tz3MeKgIOoCIiBSvoqKiu7e3Nxl0jqipqKhI9fb2VuZ7LtKHZE3tNyi3v0zNDeZmV+7B\n6+3tTVqWhSZvp/7+CIl0wRQREfGKm+Pis4DVQDnwY+D7ecY0AKuAIcCJ9Hwu9TAHSbn9ZWpPTbn9\nF1APMzSfqVHSX8/YqWCWA/uBW4EjwNvAfOCdrDFVwK+AfwkcBmqxi2au0PzHjcMHuHIPnqkf4Mrt\nPxXM6OivYDodkp0KvA8cBM4AzwNzcsbcA/wtdrGE/MUyEGHqNxRDuf1lam4wN7tyy0AtX76cr371\nq4H8bKeCORboyJo/nF6W7SpgFLAZ2AkE85uIiEjg6uvrGTZsGMlkkmQySWVlJceOHSs4vqGhgXXr\n1rlef3oPMBBOl5W42d8fAnwGuAUYBrwBvAm8N7hog9fQ0BB0hAFRbn+ZmhvMza7cpVFZOYpUqrNk\n608mq+nuPtnvmEQiwSuvvMLnP/95V+sstgAGeRjaqWAeAeqy5uv45NBrnw7sw7A96el14NPkKZhN\nTU3U19cDUFVVxZQpUzJvwL5DHb7NpzM1pP8tNN/H93wF5jN5HPL3vSbovHHZ3qHL7zJvZj7ovIZv\n775MTnkz8/2sb8uWLbS2tgJkPi/dsotl6QpKKlX83t2pU6dYsGABb731Fr29vXz2s59l7dq1jB07\nlocffpht27bx5ptv0tzczH333ccTTzzB4sWLefnll+nq6uKqq65i9erVzJgxowS/kbcqgHagHrgI\naAOuyRkzCXgN+wShYcBu4No867L8tnnz5rzLActyOSm3e3HOHabsyu1vbssq7XucwhWwwNiiNmOR\nk3P2+vp667XXXsvMnzhxwnrppZesnp4eK5VKWV/+8petuXPnZp5vaGiw1q1bd946fvrTn1onT560\nzp49az322GPWmDFjrI8//tiyLMtatmyZtWDBgqK2YTH62d6OPcxe4H5gE7AXWI99huyi9ASwD9gI\n/AbYAfwoPVZERGLGsizmzp1LdXU11dXVLFy4kC996UsMHTqUESNG8NBDD7F169YLXpPt3nvvpbq6\nmrKyMr7xjW/w8ccfs3//fj9/jbzc3Brv1fSU7amc+ZXpKVTC3m8oRLn9ZWpuMDe7ckdXIpFgw4YN\nmR5mT08PixYtYtOmTXR22v3Vjz76CMuyMv3L3D7mypUreeaZZzh69CiJRILu7m5OnAj+Agzd6UdE\nREpm5cqVvPvuu7z11lt0dXWxdetWLMvK7FXmFstt27bxgx/8gBdeeIFTp07R2dnJyJEjQ3HNbaQL\npqnXTCm3v0zNDeZmV+74+Oijj7jkkksYOXIkJ0+e5JFHHjnv+dGjR9Pe3p6ZT6VSVFRUUFtbyx//\n+Ee+/e1v093d7XfsvCJdMEVEJFjNzc309PRQW1vL9OnTueOOO87bq1y8eDEvvvgio0aNorm5mVmz\nZjFr1iyuvvpq6uvrueSSSxg/fnxmfCKRCOxaTH0fptNY4nH7rVKKQ24IT3bl9l9Ybo0XhuswTdff\nrfH0fZgiIhER9WIWtEgfkjW136Dc/jI1N5ibXbnFRJEumCIiIl5RD9NpLPHok5RSHHJDeLIrt//C\n0sOUwRvM13uJiIgIES+YpvYblNtfpuYGc7Mrt5go0gVTRETEK+phOo0lHn2SUopDbghPduX2n3qY\n0aEepoiIGCmZTHLw4MGgYwARL5im9huU21+m5gZzsyt3tG3fvp3p06dTVVVFTU0NM2bMYOfOnQNa\nVyqVKvqLtEtFd/oREYmIyqpKUl2pkq0/OTJJ96n+b4Te3d3N7Nmzeeqpp7j77rv5+OOP2bZtGxdf\nfHFRP6u3t5eKinCVKPUwncYSjz5JKcUhN4Qnu3L7Lyw9zEQiActdr7p4y52z79y5k9tuuy3z3Ze5\nnnnmGVauXMmxY8eYOnUqTz/9dObm6mVlZaxZs4ZVq1Zx7tw52tvbKSsr4/3332fChAl0dXXxwAMP\nsHHjRoYNG8bChQt56KGHSCQSLF++nPb2dp599lkADh48yIQJE+jt7aWsrIzW1la+853v8OGHH1Jb\nW8t3v/td7rnnngvyqYcpIiK+mDhxIuXl5TQ1NbFx48bzCueGDRtYsWIFL7/8MidOnGDmzJnMnz//\nvNdv2LCBt99+m717916w7gceeIBUKsWBAwfYunUrP/nJT2hpaQEu/F7NbKdPn2bx4sVs3LiR7u5u\n3njjDaZMmVL07xbpgmlqv0G5/WVqbjA3u3JHVzKZZPv27SQSCRYuXMhll13GnDlzOH78OGvXrmXp\n0qVMnDiRsrIyli5dSltbGx0dHZnXL126lKqqqgsO4Z49e5b169ezYsUKhg8fzhVXXME3v/nNzB6l\n055vWVkZu3fvpqenh9GjR3PttdcW/btFumCKiIj/Jk2aREtLCx0dHezZs4ejR4/S3NzMoUOHWLx4\nMdXV1VRXV1NTUwPAkSNHMq+tq6vLu84TJ05w5swZrrjiisyy8ePHn/faQoYPH8769etZu3Ytl19+\nObNnz2b//v1F/16RLpgNDQ1BRxgQ5faXqbnB3OzKHR8TJ06ksbGRPXv2MH78eJ5++mk6Ozsz0+nT\np7npppsy4wsdWq2trWXIkCHnXWJy6NAhxo0bB9hF8Q9/+EPmuWPHjp33+ttvv51f/OIXHDt2jEmT\nJrFw4cKif5dIF0wREfHX/v37efzxxzN7fh0dHTz33HNMmzaNRYsW8eijj2b6k11dXbzwwguu1lte\nXs7dd9/Nww8/zEcffcRvf/tbVq1axYIFCwC4/vrref311+no6KCrq4sVK1ZkXnv8+HE2bNjA6dOn\nGTJkCMOHD6e8vLzo3y3SBdPUfoNy+8vU3GBuduWOrmQyyY4dO7jxxhsZMWIE06ZNY/LkyTz22GPM\nnTuXJUuW8JWvfIWRI0dy3XXXsWnTpsxr8+1dZi/74Q9/yPDhw5kwYQIzZ87k3nvv5b777gPg1ltv\nZd68eUyePJkbbriBO++8M/Pac+fOsWrVKsaOHUtNTQ3btm3jySefLPp3C9dFLiIiMmDJkUlSy0t7\nHaaTyy+/nPXr1xd8fsGCBZm9wlxnz57td1lVVVXmJJ981qxZw5o1azLzX/va1wAYM2aMJ3/s6DpM\np7HE41qvUopDbghPduX2X1iuw5TB03WYIiIigxTpgmlqv0G5/WVqbjA3u3KLiSJdMEVERLyiHqbT\nWOLRJymlOOSG8GRXbv+phxkd6mGKiIgMUqQLpqn9BuX2l6m5wdzsyi0minTBFBER8Yp6mE5jiUef\npJTikBvCk125/acepjutra2sW7eObdu2AfZdgXbv3k19fb3ja7O/F7OU1MMUERHfbN++nenTp1NV\nVUVNTQ0zZsxg586dF4xLpVKuiqWT1tZWZs6cOej1OIl0wTS136Dc/jI1N5ibXblLY1RlJYlEomTT\nqMpKxwzd3d3Mnj2bxYsX09nZyZEjR1i2bNkF329pokgXTBGROOlMpbCgZFNnyvk+te+++y6JRIJ5\n8+aRSCQYOnQot912G9ddd90FY8vKyvjggw8A+P3vf8+dd97JyJEjmTp1Kt/61rcu2Gv85S9/ydVX\nX011dTX3338/AO+88w5f//rXeeONN0gmk4waNaqYTRZaVlgAluVyUu7Bi0PuMGVXbv+V8j0OBduj\ng8oxkMlN9u7ubqumpsZqbGy0Xn31VevkyZOZ51paWqwZM2Zk5hOJhNXe3m5ZlmXNmzfPmj9/vtXT\n02Pt3bvXqqurs2bOnHne2DvvvNPq6uqyDh06ZF166aXWxo0bLcuyrNbW1vPWOxj9bG9Xe5izgH3A\ne8CSfsbdAPQCd7lYp4iIRFAymWT79u0kEgkWLlzIZZddxpw5czh+/HjB15w9e5aXXnqJRx55hKFD\nh3LNNdfQ2Nh4wclRDz74IJWVldTV1XHzzTfT1tYG4NvJX04FsxxYg100rwXmA9cUGPd9YCP+nnnb\nr7D3GwpRbn+ZmhvMza7c0TZp0iRaWlro6Ohgz549HD16lObm5rzfdwnw4Ycf0tvbS11dXWbZuHHj\nLhg3ZsyYzONhw4Zx+vRp78P3w6lgTgXeBw4CZ4DngTl5xj0AvAh86GU4EREx28SJE2lsbGTPnj0F\nx1x66aVUVFTQ0dGRWZb92EmhQuw1p4I5FshOfTi9LHfMHKDv66v92Td2oaGhIegIA6Lc/jI1N5ib\nXbmja//+/Tz++OMcOXIEsAvfc889x7Rp0wq+pry8nLvuuovly5fT09PDvn37ePbZZ/sthJZlZQ7F\njh49msOHD3PmzBlvf5kcTgXTTfFbDTyYHpsgRIdkRUTEX8lkkh07dnDjjTcyYsQIpk2bxuTJk3ns\nsceA8/cGsx+vWbOGrq4uxowZQ2NjI/Pnz+eiiy7KO7Zvvm/ZLbfcwqc+9SnGjBnDZZddVrLfrcLh\n+SNAXdZ8HfZeZrY/wz5UC1AL3IF9+PZnuStramrKXKRaVVXFlClTMn+x9fUGvJxva2ujubk5//Pp\nTA3pfwvN9ylFvkLz2X2S3OczeRzy973Gj7x983He3kHlz/0dit3emXkftzfA6tWr8/7/38dt/sz4\ngLd3XyanvJl5h/dja2srQNEX9VcnkyRcXPoxUNXJpOOYyy+/nPXr1+d9rrGxkcbGxsz82bNnM49r\na2t55ZVXMvNLliw5r6eZPRagpaUl83jIkCHnvTYoFUA7UA9cBLSR/6SfPi0UPkvWk1N+i7F58+a8\nywn5qevK7S8vcocpu3L7m9uywnNZicn27dtn7dq1yzp37py1Y8cOq7a21tqwYYPvOfrZ3q4On96B\nfdi1HFgHrAAWpZ97KmdsC/B3wEsF/uO6+HGlF4d7myr34Jl6b1Pl9p/uJTt4O3fuZP78+Rw9epTR\no0ezaNEilizp70rG0ujvXrK6+brTWOLxP2UpxSE3hCe7cvtPBTM6YnvzdVOvmVJuf5maG8zNrtxi\nokgXTBEREa/okKzTWOJx2KeU4pAbwpNduf2nQ7LREdtDsiIiIl6JdME0td+g3P4yNTeYm125B6+i\noiJVyu++jOtUUVFR8EJWpxsXiIhICPX29jp/m7MUrbe3t+Bz6mE6jSUefZJSikNuCE925fZfQD1M\n8VmkD8mKiIh4JdIFM0z9hmIot79MzQ3mZlduMVGkC6aIiIhX1MN0Gks8+iSlFIfcEJ7syu0/9TDj\nQXuYIiIiLkS6YJrab1Buf5maG8zNrtxiokgXTBEREa+oh+k0lnj0SUopDrkhPNmV23/qYcaD9jBF\nRERciHTBNLXfoNz+MjU3mJtducVEkS6YIiIiXlEP02ks8eiTlFIcckN4siu3/9TDjAftYYqIiLgQ\n6YJpar9Buf1lam4wN7tyi4kiXTBFRES8oh6m01ji0ScppTjkhvBkV27/qYcZD9rDFBERcSHSBdPU\nfoNy+8vU3GBuduUWE0W6YIqIiHhFPUynscSjT1JKccgN4cmu3P5TDzMetIcpIiLiQqQLpqn9BuX2\nl6m5wdzsyi0minTBFBER8Yp6mE5jiUefpJTikBvCk125/aceZjxoD1NERMSFSBdMU/sNyu0vU3OD\nudmVW0wU6YIpIiLiFfUwncYSjz5JKcUhN4Qnu3L7Tz3MeNAepoiIiAtuC+YsYB/wHrAkz/P3AruA\n3wC/AiZ7km6QTO03KLe/TM0N5mZXbjFRhYsx5cAa4FbgCPA28DPgnawxHwB/DnRhF9engZs8TSoi\nIhIgN8fFpwHLsAshwIPpf79XYHw1sBsYl7NcPcxBUm5/mdpTU27/qYcZD24OyY4FOrLmD6eXFfJv\ngZ8PJpSIiEjYuCmYxfwJdzPwF+Tvc/rO1H6DcvvL1NxgbnblFhO56WEeAeqy5uuw9zJzTQZ+hH3o\ntjPfipqamqivrwegqqqKKVOm0NDQAHzyRvRyvq2trfDz6UwN6X8LzfcpRb6BzGfyOOTve42f+eK8\nvYPKX/DnucybmS9Rvi/O/SKprhTFcps/Mz7g7d2XySlvZr6fn7dlyxZaW1sBMp+XEg5ujotXAPuB\nW4CjwFvAfM4/6Wc88PfAAuDNAutRD3OQlNtfpvbUwpQ7kUjAcpeDlxd3OCss2xvUw4wLN3uYvcD9\nwCbsM2bXYRfLRennnwL+M/bJPk+ml50BpnqaVEREJEBur8N8FZgI/CmwIr3sqfQE8DWgBrg+PYWi\nWJrab1Buf5maGwzOfiDoAANj7PYWT+hOPyIiIi7oXrJOY4lHn6SU4pAbwpM9TLnVw8wzFvUwTaU9\nTBERERciXTBN7Tcot79MzQ0GZ1cPUwwU6YIpIiLiFfUwncYSjz5JKcUhN4Qne5hyq4eZZyzqYZpK\ne5giIiIuRLpghr3fUFlVSSKRcD2FXdi3NxS3zcPE1NwFqYcpBnJzpx8pkVRXKv/hqgPAn+RZnm+s\nFCXvNjdgexf1Xsk3TkQGLdJ7mNk3RjZKvg9vA2h7B8DU7IbmNvY9Lp6IdMGU0ojaoWQRETcifUg2\n++utjFLoEGFIRO5Qcsi3d79MzW5obmM/U8QT2sMUERFxIdIF09i/BA38yxtQ7iCYmt3Q3MZ+pogn\nIl0wRUQGQn16yUc9zDAytL+j3AEwNXvIc0euTy+e0B6miIiIC5EumEbuXUKo//Lul3L7z9Tsyi0G\ninTBFBER8UqkC6ax93009D6byh0AU7Mrtxgo0gVTRETEK5EumOph+ky5/WdqduUWA0W6YIqIiHgl\n0gVTPUyfKbf/TM2u3GKgSBdMERERr0S6YKqH6TPl9p+p2ZVbDBTpgikiIuKVSBdM9TB9ptz+MzW7\ncouBIl0wRUREvBLpgqkeps+U23+mZlduMVCkC6aIiIhXIl0w1cP0mXL7z9Tsyi0GinTBFBER8Uqk\nC6Z6mD5Tbv+Zml25xUCRLpgi4q3KylEkEgnXk0iUuCmYs4B9wHvAkgJjnkg/vwu43ptog6ceps+U\n238+Z0+lOgGriKkAU7e5qbnFE04FsxxYg100rwXmA9fkjPkC8KfAVcC/A570OOOAtbW1BR1hYI4F\nHWCAlNs1z/bUtM1dK2abF2Tq9hZPOBXMqcD7wEHgDPA8MCdnzBeBv04/3gFUAaO9izhwp06dCjrC\nwPy/oAMMUAC5PSk8AeT2bE9N7xXXitvmBZi6vcUTTgVzLNCRNX84vcxpzLjBRxNx5lnhERFx4FQw\n3X7C5P7pHopPpoMHD/r+Mz057BPAjrGpuT1ham4wN7tySwTdBGzMml/KhSf+rAW+kjW/j/yHZNso\nbldAkyZNmjTZn51igAqgHagHLsL+D5fvpJ+fpx/fBLzpVzgREZEwuQPYj33yz9L0skXpqc+a9PO7\ngM/4mk5EREREREREREREREREJHyqgO9hn6HbCZxMP/5e+rmwUm5/mZobzM2u3BIZUbn5+t9gv6kb\ngFHp6Wbsq6b+JrhYjpTbX6bmBnOzK7dIyLw7wOeCptz+MjU3mJtduSUyorKH+Vvgrzj/hgljsG+y\ncCiQRO4ot79MzQ3mZlduiYyoFMx5QC2wFfswSiewBagB7g4uliPl9pepucHc7Plyb8bM3FsIf26R\nQbkv6AAOrgFuBZI5y2cFkKUYM4BPpR/fDPwH4Jbg4gzYs0EHGKCZwDeB24MO4uBGYGT68XDgO8D/\nBv5r1vIw+kugLugQIn7rcB4SmL/EvovS/8I+BDQ367lfB5LInRXYt0B8G/uD703gPwGvA/8xwFxO\n/g74Wfrfvul01vIweyvr8ULs21QuA37FJ3fgCqO92LfYBPgRsBr7j63lwEsBZXKjC/gdsA3498Cl\nwcYR8c7ufqY/BpjLyR5gRPpxPfAPQHN6PswFs+9DcBiQ4pM9hUuA3wQVyoVfA/8De4/4c9hnQP4u\n/fhzwcVyJfv9sJNPPsCHY7+PwuqdrMf/N+e5XX4GKdKvsVtWtwPPAB9ifxFFIxceDRIxyj8B12MX\nndzpaDCRXPnHnPkRwCZgFeH+hoK2Ao/zzYdJOfAN4DXs9wvAgeDiFOU32Jc21HDhH1Nh3uYvAn+R\nftwC3JB+fDX2EYqwyt3GFwFzgOeBE/7HEfHOM9g9nXye8zNIkTYDU3KWDQF+ApzzP45rO7D3LuH8\nE8equHAvIozGAS8A/41wH7LPdhC7uB8APgD+WXp5knAXzCrgr7Ez7wDOYP8OrwOfDjCXk/6O8Az3\nLYWIZNRhn6qeK4Hd5wmroQWW1wLX+RlkkGYDjwYdYpCGAX8SdAgXRmL/cfgvyP+eD5uJQQcQERER\nERERERERERERERERiZOHsa9L3IV9puPUEv6sLcCflXD9IhIiFc5DRIwxDfhX2NdYnsG+bvHiEv48\nKz2JSAxE5ebrImBfrnACu1iC/aW/v8O+hvH72Bf/7wCuTD9/KfaF9W+lp+np5cOxr+3dgX1d6RfT\nyy/BvnB9L/Zt3S7BvgRIRETEKMOxD8Pux74pwZ+nlx/gk/utfhX73rEA/xP4bPrxeOxCCPa1mfem\nH1el1zcM+y5BP04vvw67MH/G619CRETED2XY94Vdjr132YRdMOvTzw/hk1ubHccusH1TB3bR3Yl9\nH+K+5QcGpEyvAAAA3ElEQVSBScDL2Pef7fMPqGCKxIZ6mBI157C/w3ArdtFryjOmr++YwP76qXw3\n6L8LeC/Pch2CFYkp9TAlSq4Grsqavx577xDsLwTu+/f/pB//Avsr1vr03dt0U87yvhu1vw7ck378\nz4HJg04sIiISgM9gfz/kP2JfVvIi9rd7HAC+l162A5iQHl+DfRLPrvRr/nt6+VBgLfZJQnv45Lsy\nh2LfzH8v8LfAG+iQrIiIRMgB7EtMREQGTIdkJQ50raSIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI\niAzE/wfBD5sVYPb3OAAAAABJRU5ErkJggg==\n",
1195 "text": [
1196 "<matplotlib.figure.Figure at 0x7f4bac7d82b0>"
1197 ]
1198 }
1199 ],
1200 "prompt_number": 28
1201 },
1202 {
1203 "cell_type": "markdown",
1204 "metadata": {},
1205 "source": [
1206 "Is there a difference of accident severity with speed? We'll normalise the data down each column, so we can see the proportion of fatal accidents that occur at each speed (and the same for all the severities).\n",
1207 "\n",
1208 "We'll plot the data grouped by severity."
1209 ]
1210 },
1211 {
1212 "cell_type": "code",
1213 "collapsed": false,
1214 "input": [
1215 "severity_by_speed_norm_col = severity_by_speed / severity_by_speed.sum()\n",
1216 "ax = severity_by_speed_norm_col.T.plot(kind='bar')\n",
1217 "ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))"
1218 ],
1219 "language": "python",
1220 "metadata": {},
1221 "outputs": [
1222 {
1223 "metadata": {},
1224 "output_type": "pyout",
1225 "prompt_number": 29,
1226 "text": [
1227 "<matplotlib.legend.Legend at 0x7f4bac83fba8>"
1228 ]
1229 },
1230 {
1231 "metadata": {},
1232 "output_type": "display_data",
1233 "png": "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\nAAAASUVORK5CYII=\n",
1234 "text": [
1235 "<matplotlib.figure.Figure at 0x7f4bac93be48>"
1236 ]
1237 }
1238 ],
1239 "prompt_number": 29
1240 },
1241 {
1242 "cell_type": "markdown",
1243 "metadata": {},
1244 "source": [
1245 "Which shows that serious and fatal accidents tend to happen at higher speeds. \n",
1246 "\n",
1247 "Let's now look at how accident the number of casualites and vehicles correlate.\n",
1248 "\n",
1249 "First of all, what's the range of number of casualities and vehicles involved in accidents? (The `distinct` function gives the distinct values for a particular key in a cursor.)"
1250 ]
1251 },
1252 {
1253 "cell_type": "code",
1254 "collapsed": false,
1255 "input": [
1256 "sorted(accidents.find().distinct('Number_of_Casualties'))"
1257 ],
1258 "language": "python",
1259 "metadata": {},
1260 "outputs": [
1261 {
1262 "metadata": {},
1263 "output_type": "pyout",
1264 "prompt_number": 30,
1265 "text": [
1266 "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 25, 33, 38, 42]"
1267 ]
1268 }
1269 ],
1270 "prompt_number": 30
1271 },
1272 {
1273 "cell_type": "code",
1274 "collapsed": false,
1275 "input": [
1276 "sorted(accidents.find().distinct('Number_of_Vehicles'))"
1277 ],
1278 "language": "python",
1279 "metadata": {},
1280 "outputs": [
1281 {
1282 "metadata": {},
1283 "output_type": "pyout",
1284 "prompt_number": 31,
1285 "text": [
1286 "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 18]"
1287 ]
1288 }
1289 ],
1290 "prompt_number": 31
1291 },
1292 {
1293 "cell_type": "markdown",
1294 "metadata": {},
1295 "source": [
1296 "Now let's look at the distribution of the numbers."
1297 ]
1298 },
1299 {
1300 "cell_type": "code",
1301 "collapsed": false,
1302 "input": [
1303 "cas_veh_dict = collections.Counter((a['Number_of_Casualties'], a['Number_of_Vehicles']) for a in accidents.find())\n",
1304 "cas_veh_dict"
1305 ],
1306 "language": "python",
1307 "metadata": {},
1308 "outputs": [
1309 {
1310 "metadata": {},
1311 "output_type": "pyout",
1312 "prompt_number": 32,
1313 "text": [
1314 "Counter({(1, 2): 65680, (1, 1): 39217, (2, 2): 15035, (1, 3): 6168, (3, 2): 4186, (2, 1): 3781, (2, 3): 3002, (4, 2): 1440, (3, 3): 1203, (1, 4): 1056, (2, 4): 716, (3, 1): 682, (5, 2): 521, (4, 3): 481, (3, 4): 319, (4, 1): 287, (1, 5): 197, (6, 2): 183, (5, 3): 169, (4, 4): 166, (2, 5): 128, (5, 1): 79, (1, 6): 76, (3, 5): 73, (6, 3): 72, (5, 4): 63, (7, 2): 52, (4, 5): 48, (6, 4): 46, (2, 6): 41, (5, 5): 29, (7, 3): 28, (1, 7): 27, (3, 6): 25, (8, 2): 24, (6, 1): 22, (2, 7): 14, (6, 5): 13, (3, 7): 12, (8, 3): 12, (7, 4): 12, (4, 6): 11, (9, 2): 11, (5, 6): 10, (8, 4): 9, (6, 7): 7, (7, 5): 7, (7, 1): 7, (10, 2): 7, (3, 8): 6, (2, 9): 6, (5, 7): 6, (9, 3): 5, (8, 1): 5, (2, 8): 4, (6, 6): 4, (11, 4): 4, (1, 8): 4, (4, 8): 3, (8, 5): 3, (10, 5): 3, (11, 2): 3, (10, 3): 3, (2, 10): 3, (7, 6): 2, (13, 2): 2, (25, 2): 2, (4, 7): 2, (9, 1): 2, (4, 9): 2, (8, 6): 2, (11, 9): 2, (7, 8): 2, (3, 9): 2, (9, 5): 2, (12, 1): 1, (13, 4): 1, (1, 11): 1, (5, 8): 1, (42, 2): 1, (4, 13): 1, (8, 10): 1, (17, 2): 1, (2, 16): 1, (12, 3): 1, (13, 1): 1, (15, 3): 1, (7, 7): 1, (1, 9): 1, (14, 1): 1, (6, 8): 1, (11, 8): 1, (5, 9): 1, (4, 18): 1, (3, 11): 1, (2, 12): 1, (9, 4): 1, (16, 1): 1, (12, 2): 1, (1, 10): 1, (33, 2): 1, (12, 7): 1, (13, 6): 1, (19, 2): 1, (38, 4): 1, (15, 2): 1, (11, 3): 1, (16, 3): 1})"
1315 ]
1316 }
1317 ],
1318 "prompt_number": 32
1319 },
1320 {
1321 "cell_type": "code",
1322 "collapsed": false,
1323 "input": [
1324 "cas_veh = pd.DataFrame(\n",
1325 " {'Casualties': [v for c, v in sorted(cas_veh_dict.keys())],\n",
1326 " 'Vehicles': [c for c, v in sorted(cas_veh_dict.keys())],\n",
1327 " 'Count': [cas_veh_dict[(c, v)] for c, v in sorted(cas_veh_dict.keys())]}\n",
1328 " )\n",
1329 "cas_veh"
1330 ],
1331 "language": "python",
1332 "metadata": {},
1333 "outputs": [
1334 {
1335 "html": [
1336 "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
1337 "<table border=\"1\" class=\"dataframe\">\n",
1338 " <thead>\n",
1339 " <tr style=\"text-align: right;\">\n",
1340 " <th></th>\n",
1341 " <th>Casualties</th>\n",
1342 " <th>Count</th>\n",
1343 " <th>Vehicles</th>\n",
1344 " </tr>\n",
1345 " </thead>\n",
1346 " <tbody>\n",
1347 " <tr>\n",
1348 " <th>0 </th>\n",
1349 " <td> 1</td>\n",
1350 " <td> 39217</td>\n",
1351 " <td> 1</td>\n",
1352 " </tr>\n",
1353 " <tr>\n",
1354 " <th>1 </th>\n",
1355 " <td> 2</td>\n",
1356 " <td> 65680</td>\n",
1357 " <td> 1</td>\n",
1358 " </tr>\n",
1359 " <tr>\n",
1360 " <th>2 </th>\n",
1361 " <td> 3</td>\n",
1362 " <td> 6168</td>\n",
1363 " <td> 1</td>\n",
1364 " </tr>\n",
1365 " <tr>\n",
1366 " <th>3 </th>\n",
1367 " <td> 4</td>\n",
1368 " <td> 1056</td>\n",
1369 " <td> 1</td>\n",
1370 " </tr>\n",
1371 " <tr>\n",
1372 " <th>4 </th>\n",
1373 " <td> 5</td>\n",
1374 " <td> 197</td>\n",
1375 " <td> 1</td>\n",
1376 " </tr>\n",
1377 " <tr>\n",
1378 " <th>5 </th>\n",
1379 " <td> 6</td>\n",
1380 " <td> 76</td>\n",
1381 " <td> 1</td>\n",
1382 " </tr>\n",
1383 " <tr>\n",
1384 " <th>6 </th>\n",
1385 " <td> 7</td>\n",
1386 " <td> 27</td>\n",
1387 " <td> 1</td>\n",
1388 " </tr>\n",
1389 " <tr>\n",
1390 " <th>7 </th>\n",
1391 " <td> 8</td>\n",
1392 " <td> 4</td>\n",
1393 " <td> 1</td>\n",
1394 " </tr>\n",
1395 " <tr>\n",
1396 " <th>8 </th>\n",
1397 " <td> 9</td>\n",
1398 " <td> 1</td>\n",
1399 " <td> 1</td>\n",
1400 " </tr>\n",
1401 " <tr>\n",
1402 " <th>9 </th>\n",
1403 " <td> 10</td>\n",
1404 " <td> 1</td>\n",
1405 " <td> 1</td>\n",
1406 " </tr>\n",
1407 " <tr>\n",
1408 " <th>10</th>\n",
1409 " <td> 11</td>\n",
1410 " <td> 1</td>\n",
1411 " <td> 1</td>\n",
1412 " </tr>\n",
1413 " <tr>\n",
1414 " <th>11</th>\n",
1415 " <td> 1</td>\n",
1416 " <td> 3781</td>\n",
1417 " <td> 2</td>\n",
1418 " </tr>\n",
1419 " <tr>\n",
1420 " <th>12</th>\n",
1421 " <td> 2</td>\n",
1422 " <td> 15035</td>\n",
1423 " <td> 2</td>\n",
1424 " </tr>\n",
1425 " <tr>\n",
1426 " <th>13</th>\n",
1427 " <td> 3</td>\n",
1428 " <td> 3002</td>\n",
1429 " <td> 2</td>\n",
1430 " </tr>\n",
1431 " <tr>\n",
1432 " <th>14</th>\n",
1433 " <td> 4</td>\n",
1434 " <td> 716</td>\n",
1435 " <td> 2</td>\n",
1436 " </tr>\n",
1437 " <tr>\n",
1438 " <th>15</th>\n",
1439 " <td> 5</td>\n",
1440 " <td> 128</td>\n",
1441 " <td> 2</td>\n",
1442 " </tr>\n",
1443 " <tr>\n",
1444 " <th>16</th>\n",
1445 " <td> 6</td>\n",
1446 " <td> 41</td>\n",
1447 " <td> 2</td>\n",
1448 " </tr>\n",
1449 " <tr>\n",
1450 " <th>17</th>\n",
1451 " <td> 7</td>\n",
1452 " <td> 14</td>\n",
1453 " <td> 2</td>\n",
1454 " </tr>\n",
1455 " <tr>\n",
1456 " <th>18</th>\n",
1457 " <td> 8</td>\n",
1458 " <td> 4</td>\n",
1459 " <td> 2</td>\n",
1460 " </tr>\n",
1461 " <tr>\n",
1462 " <th>19</th>\n",
1463 " <td> 9</td>\n",
1464 " <td> 6</td>\n",
1465 " <td> 2</td>\n",
1466 " </tr>\n",
1467 " <tr>\n",
1468 " <th>20</th>\n",
1469 " <td> 10</td>\n",
1470 " <td> 3</td>\n",
1471 " <td> 2</td>\n",
1472 " </tr>\n",
1473 " <tr>\n",
1474 " <th>21</th>\n",
1475 " <td> 12</td>\n",
1476 " <td> 1</td>\n",
1477 " <td> 2</td>\n",
1478 " </tr>\n",
1479 " <tr>\n",
1480 " <th>22</th>\n",
1481 " <td> 16</td>\n",
1482 " <td> 1</td>\n",
1483 " <td> 2</td>\n",
1484 " </tr>\n",
1485 " <tr>\n",
1486 " <th>23</th>\n",
1487 " <td> 1</td>\n",
1488 " <td> 682</td>\n",
1489 " <td> 3</td>\n",
1490 " </tr>\n",
1491 " <tr>\n",
1492 " <th>24</th>\n",
1493 " <td> 2</td>\n",
1494 " <td> 4186</td>\n",
1495 " <td> 3</td>\n",
1496 " </tr>\n",
1497 " <tr>\n",
1498 " <th>25</th>\n",
1499 " <td> 3</td>\n",
1500 " <td> 1203</td>\n",
1501 " <td> 3</td>\n",
1502 " </tr>\n",
1503 " <tr>\n",
1504 " <th>26</th>\n",
1505 " <td> 4</td>\n",
1506 " <td> 319</td>\n",
1507 " <td> 3</td>\n",
1508 " </tr>\n",
1509 " <tr>\n",
1510 " <th>27</th>\n",
1511 " <td> 5</td>\n",
1512 " <td> 73</td>\n",
1513 " <td> 3</td>\n",
1514 " </tr>\n",
1515 " <tr>\n",
1516 " <th>28</th>\n",
1517 " <td> 6</td>\n",
1518 " <td> 25</td>\n",
1519 " <td> 3</td>\n",
1520 " </tr>\n",
1521 " <tr>\n",
1522 " <th>29</th>\n",
1523 " <td> 7</td>\n",
1524 " <td> 12</td>\n",
1525 " <td> 3</td>\n",
1526 " </tr>\n",
1527 " <tr>\n",
1528 " <th>30</th>\n",
1529 " <td> 8</td>\n",
1530 " <td> 6</td>\n",
1531 " <td> 3</td>\n",
1532 " </tr>\n",
1533 " <tr>\n",
1534 " <th>31</th>\n",
1535 " <td> 9</td>\n",
1536 " <td> 2</td>\n",
1537 " <td> 3</td>\n",
1538 " </tr>\n",
1539 " <tr>\n",
1540 " <th>32</th>\n",
1541 " <td> 11</td>\n",
1542 " <td> 1</td>\n",
1543 " <td> 3</td>\n",
1544 " </tr>\n",
1545 " <tr>\n",
1546 " <th>33</th>\n",
1547 " <td> 1</td>\n",
1548 " <td> 287</td>\n",
1549 " <td> 4</td>\n",
1550 " </tr>\n",
1551 " <tr>\n",
1552 " <th>34</th>\n",
1553 " <td> 2</td>\n",
1554 " <td> 1440</td>\n",
1555 " <td> 4</td>\n",
1556 " </tr>\n",
1557 " <tr>\n",
1558 " <th>35</th>\n",
1559 " <td> 3</td>\n",
1560 " <td> 481</td>\n",
1561 " <td> 4</td>\n",
1562 " </tr>\n",
1563 " <tr>\n",
1564 " <th>36</th>\n",
1565 " <td> 4</td>\n",
1566 " <td> 166</td>\n",
1567 " <td> 4</td>\n",
1568 " </tr>\n",
1569 " <tr>\n",
1570 " <th>37</th>\n",
1571 " <td> 5</td>\n",
1572 " <td> 48</td>\n",
1573 " <td> 4</td>\n",
1574 " </tr>\n",
1575 " <tr>\n",
1576 " <th>38</th>\n",
1577 " <td> 6</td>\n",
1578 " <td> 11</td>\n",
1579 " <td> 4</td>\n",
1580 " </tr>\n",
1581 " <tr>\n",
1582 " <th>39</th>\n",
1583 " <td> 7</td>\n",
1584 " <td> 2</td>\n",
1585 " <td> 4</td>\n",
1586 " </tr>\n",
1587 " <tr>\n",
1588 " <th>40</th>\n",
1589 " <td> 8</td>\n",
1590 " <td> 3</td>\n",
1591 " <td> 4</td>\n",
1592 " </tr>\n",
1593 " <tr>\n",
1594 " <th>41</th>\n",
1595 " <td> 9</td>\n",
1596 " <td> 2</td>\n",
1597 " <td> 4</td>\n",
1598 " </tr>\n",
1599 " <tr>\n",
1600 " <th>42</th>\n",
1601 " <td> 13</td>\n",
1602 " <td> 1</td>\n",
1603 " <td> 4</td>\n",
1604 " </tr>\n",
1605 " <tr>\n",
1606 " <th>43</th>\n",
1607 " <td> 18</td>\n",
1608 " <td> 1</td>\n",
1609 " <td> 4</td>\n",
1610 " </tr>\n",
1611 " <tr>\n",
1612 " <th>44</th>\n",
1613 " <td> 1</td>\n",
1614 " <td> 79</td>\n",
1615 " <td> 5</td>\n",
1616 " </tr>\n",
1617 " <tr>\n",
1618 " <th>45</th>\n",
1619 " <td> 2</td>\n",
1620 " <td> 521</td>\n",
1621 " <td> 5</td>\n",
1622 " </tr>\n",
1623 " <tr>\n",
1624 " <th>46</th>\n",
1625 " <td> 3</td>\n",
1626 " <td> 169</td>\n",
1627 " <td> 5</td>\n",
1628 " </tr>\n",
1629 " <tr>\n",
1630 " <th>47</th>\n",
1631 " <td> 4</td>\n",
1632 " <td> 63</td>\n",
1633 " <td> 5</td>\n",
1634 " </tr>\n",
1635 " <tr>\n",
1636 " <th>48</th>\n",
1637 " <td> 5</td>\n",
1638 " <td> 29</td>\n",
1639 " <td> 5</td>\n",
1640 " </tr>\n",
1641 " <tr>\n",
1642 " <th>49</th>\n",
1643 " <td> 6</td>\n",
1644 " <td> 10</td>\n",
1645 " <td> 5</td>\n",
1646 " </tr>\n",
1647 " <tr>\n",
1648 " <th>50</th>\n",
1649 " <td> 7</td>\n",
1650 " <td> 6</td>\n",
1651 " <td> 5</td>\n",
1652 " </tr>\n",
1653 " <tr>\n",
1654 " <th>51</th>\n",
1655 " <td> 8</td>\n",
1656 " <td> 1</td>\n",
1657 " <td> 5</td>\n",
1658 " </tr>\n",
1659 " <tr>\n",
1660 " <th>52</th>\n",
1661 " <td> 9</td>\n",
1662 " <td> 1</td>\n",
1663 " <td> 5</td>\n",
1664 " </tr>\n",
1665 " <tr>\n",
1666 " <th>53</th>\n",
1667 " <td> 1</td>\n",
1668 " <td> 22</td>\n",
1669 " <td> 6</td>\n",
1670 " </tr>\n",
1671 " <tr>\n",
1672 " <th>54</th>\n",
1673 " <td> 2</td>\n",
1674 " <td> 183</td>\n",
1675 " <td> 6</td>\n",
1676 " </tr>\n",
1677 " <tr>\n",
1678 " <th>55</th>\n",
1679 " <td> 3</td>\n",
1680 " <td> 72</td>\n",
1681 " <td> 6</td>\n",
1682 " </tr>\n",
1683 " <tr>\n",
1684 " <th>56</th>\n",
1685 " <td> 4</td>\n",
1686 " <td> 46</td>\n",
1687 " <td> 6</td>\n",
1688 " </tr>\n",
1689 " <tr>\n",
1690 " <th>57</th>\n",
1691 " <td> 5</td>\n",
1692 " <td> 13</td>\n",
1693 " <td> 6</td>\n",
1694 " </tr>\n",
1695 " <tr>\n",
1696 " <th>58</th>\n",
1697 " <td> 6</td>\n",
1698 " <td> 4</td>\n",
1699 " <td> 6</td>\n",
1700 " </tr>\n",
1701 " <tr>\n",
1702 " <th>59</th>\n",
1703 " <td> 7</td>\n",
1704 " <td> 7</td>\n",
1705 " <td> 6</td>\n",
1706 " </tr>\n",
1707 " <tr>\n",
1708 " <th></th>\n",
1709 " <td>...</td>\n",
1710 " <td>...</td>\n",
1711 " <td>...</td>\n",
1712 " </tr>\n",
1713 " </tbody>\n",
1714 "</table>\n",
1715 "<p>108 rows \u00d7 3 columns</p>\n",
1716 "</div>"
1717 ],
1718 "metadata": {},
1719 "output_type": "pyout",
1720 "prompt_number": 33,
1721 "text": [
1722 " Casualties Count Vehicles\n",
1723 "0 1 39217 1\n",
1724 "1 2 65680 1\n",
1725 "2 3 6168 1\n",
1726 "3 4 1056 1\n",
1727 "4 5 197 1\n",
1728 "5 6 76 1\n",
1729 "6 7 27 1\n",
1730 "7 8 4 1\n",
1731 "8 9 1 1\n",
1732 "9 10 1 1\n",
1733 "10 11 1 1\n",
1734 "11 1 3781 2\n",
1735 "12 2 15035 2\n",
1736 "13 3 3002 2\n",
1737 "14 4 716 2\n",
1738 "15 5 128 2\n",
1739 "16 6 41 2\n",
1740 "17 7 14 2\n",
1741 "18 8 4 2\n",
1742 "19 9 6 2\n",
1743 "20 10 3 2\n",
1744 "21 12 1 2\n",
1745 "22 16 1 2\n",
1746 "23 1 682 3\n",
1747 "24 2 4186 3\n",
1748 "25 3 1203 3\n",
1749 "26 4 319 3\n",
1750 "27 5 73 3\n",
1751 "28 6 25 3\n",
1752 "29 7 12 3\n",
1753 "30 8 6 3\n",
1754 "31 9 2 3\n",
1755 "32 11 1 3\n",
1756 "33 1 287 4\n",
1757 "34 2 1440 4\n",
1758 "35 3 481 4\n",
1759 "36 4 166 4\n",
1760 "37 5 48 4\n",
1761 "38 6 11 4\n",
1762 "39 7 2 4\n",
1763 "40 8 3 4\n",
1764 "41 9 2 4\n",
1765 "42 13 1 4\n",
1766 "43 18 1 4\n",
1767 "44 1 79 5\n",
1768 "45 2 521 5\n",
1769 "46 3 169 5\n",
1770 "47 4 63 5\n",
1771 "48 5 29 5\n",
1772 "49 6 10 5\n",
1773 "50 7 6 5\n",
1774 "51 8 1 5\n",
1775 "52 9 1 5\n",
1776 "53 1 22 6\n",
1777 "54 2 183 6\n",
1778 "55 3 72 6\n",
1779 "56 4 46 6\n",
1780 "57 5 13 6\n",
1781 "58 6 4 6\n",
1782 "59 7 7 6\n",
1783 " ... ... ...\n",
1784 "\n",
1785 "[108 rows x 3 columns]"
1786 ]
1787 }
1788 ],
1789 "prompt_number": 33
1790 },
1791 {
1792 "cell_type": "markdown",
1793 "metadata": {},
1794 "source": [
1795 "Plot the data on a bubble chart: the area of the bubble is the number of accidents with that number of casualties and vehicles."
1796 ]
1797 },
1798 {
1799 "cell_type": "code",
1800 "collapsed": false,
1801 "input": [
1802 "plt.scatter(cas_veh['Vehicles'], cas_veh['Casualties'], s=np.sqrt(cas_veh['Count']))\n",
1803 "plt.xlabel('Number of casualties')\n",
1804 "plt.ylabel('Number of vehicles')\n",
1805 "plt.show()"
1806 ],
1807 "language": "python",
1808 "metadata": {},
1809 "outputs": [
1810 {
1811 "metadata": {},
1812 "output_type": "display_data",
1813 "png": "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\nQmCC\n",
1814 "text": [
1815 "<matplotlib.figure.Figure at 0x7f4bac6a78d0>"
1816 ]
1817 }
1818 ],
1819 "prompt_number": 34
1820 },
1821 {
1822 "cell_type": "markdown",
1823 "metadata": {},
1824 "source": [
1825 "That shows a few outliers of some very large accidents. How large?"
1826 ]
1827 },
1828 {
1829 "cell_type": "code",
1830 "collapsed": false,
1831 "input": [
1832 "print('Casualties:', cas_veh['Casualties'].max(), 'Vehicles:', cas_veh['Vehicles'].max())"
1833 ],
1834 "language": "python",
1835 "metadata": {},
1836 "outputs": [
1837 {
1838 "output_type": "stream",
1839 "stream": "stdout",
1840 "text": [
1841 "Casualties: 18 Vehicles: 42\n"
1842 ]
1843 }
1844 ],
1845 "prompt_number": 35
1846 },
1847 {
1848 "cell_type": "markdown",
1849 "metadata": {},
1850 "source": [
1851 "Let's limit the plot to smallish values. It looks like 10 vehicles and 20 casualties will capture most of the data."
1852 ]
1853 },
1854 {
1855 "cell_type": "code",
1856 "collapsed": false,
1857 "input": [
1858 "small_cas_veh = cas_veh[cas_veh['Casualties'] <= 20][cas_veh['Vehicles'] <= 10]\n",
1859 "plt.scatter(small_cas_veh['Vehicles'], small_cas_veh['Casualties'], s=np.sqrt(small_cas_veh['Count']))\n",
1860 "plt.xlabel('Number of casualties')\n",
1861 "plt.ylabel('Number of vehicles')\n",
1862 "plt.show()"
1863 ],
1864 "language": "python",
1865 "metadata": {},
1866 "outputs": [
1867 {
1868 "metadata": {},
1869 "output_type": "display_data",
1870 "png": "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\nykbzDLdTQagAiIhEKJoXgoWzWIyIiNRS2smLiMQpFQARkTjl/ly2XVsGbAJK8MYZDq3GtoiIxJ3q\nLACGt9rY+mpsA9988w1LlizhiCOOoF27ds7z1q9fz7p16+jYsSMJCQnO80REdqW6u4Cq9WTqe+99\niGOPPYvLLnuVHj0OYdasWU7z3nzzLVq37kTPnn+gT59+bNu2zWlednY2mZk9aNAgg6eeetZpFsDy\n5cs5+uiTOPTQ45g3b57zvHXr1jF06F+59tphMZm+oKioiLFjx/LJJ584zwLvupGpU6eyatWqmOSB\nt0RqcXFxzPI2btwYs6zS0lKWL18ek2lDZPeWALOBmcDQHX7n/JLp0tJSS05ONVhmYAaP2Ukn/dFp\nZkZGJ4PPDEosNfU4Gz9+vNO8ww7rZ/CIQbYlJ6fZpk2bnOYdf/wg8/tvNnjIevQ43GmWmdn5519q\nSUkXWL16J9lNN/2f87xRo+6yQKC3BQLNbM6cOc7z/vWvRy0QyLSGDVtYYWGh87yXX37Z/P7EmE0F\nMW7c8wbYnXfeG5O8v/71BvP5Euy++x6KSV51IIpTQbh2JLAGaAZMBn4Appf9cuTIkb+/MCsri6ys\nrNi2rk6p6994Yrl9df1vKbXJtGnTmDZtWnU3Y6/dhjfZXJmYVMt77nnQgsG2lp4+yNLSmtnMmTOd\n5r3xxpsWCDSyYLCN9e6dZfn5+U7zvvvuO2vfvofVr9/cnnzyGadZZmbLli2zvn1PtN69/2DZ2dnO\n83JycmzIkKvtmmtusLy8POd5hYWF9txzz9nHH3/sPMvMO0qdMmWKrVy5MiZ5ZmYrV660oqKimOXl\n5ubGLKukpMSWL1/ufBLG6kSE31Cqqw8+CCTgTS+RCnwEjAr9hBheCTxjxgyWLFlCnz59YjoI3KlT\nJ/z+6h6CEZG6JJpTQbjUAXgzdD8ReBG4u8LvY1YARETqitpSAHZHBUBEJELRXBFMRETqMBUAEZE4\nFfcFICcnh+zsbOcXZYmI1DRxWwAKCgq44IKhtG3bhSOP/CPNmrXjySefcZo5fvyLdOrUkwYNWnDW\nWX/il19+cZqXn5/P+PHj+fe//83y5cudZpXJzc0lJycnJlkiUjc5P1/2b3+70QKBkw1yQ1cCf2/B\nYBubPn26k7zXXnvNgsEOBlMMllti4vXWqdMBVlJS4iRv69attu++vS019XgLBC6xtDT3V6+OGHGn\n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\n",
1871 "text": [
1872 "<matplotlib.figure.Figure at 0x7f4bac63ac50>"
1873 ]
1874 }
1875 ],
1876 "prompt_number": 36
1877 },
1878 {
1879 "cell_type": "markdown",
1880 "metadata": {},
1881 "source": [
1882 "It seems that there isn't much of a correlation. We can easily find the Pearson's R correlation coefficient, which confirms what the graph shows us.\n",
1883 "\n",
1884 "The calculation assumes there's one row in the data for each data point. That means we need to expand out the data into one long sequence of (casualties, vehicles) pairs. We'll use some functions from the `itertools` built-in library to do that."
1885 ]
1886 },
1887 {
1888 "cell_type": "code",
1889 "collapsed": false,
1890 "input": [
1891 "# Create an iterator of length 'count' for each (casualties, vehicles) pair\n",
1892 "iters = [repeat(cv, n) for cv, n in cas_veh_dict.items()]\n",
1893 "# Chain all the iterators together into one long one, run them, and store the results in a list.\n",
1894 "all_cv = list(chain(*iters))\n",
1895 "# Finally, find the correlation coefficient\n",
1896 "scipy.stats.pearsonr([cv[0] for cv in all_cv], [cv[1] for cv in all_cv])"
1897 ],
1898 "language": "python",
1899 "metadata": {},
1900 "outputs": [
1901 {
1902 "metadata": {},
1903 "output_type": "pyout",
1904 "prompt_number": 37,
1905 "text": [
1906 "(0.24158490939307017, 0.0)"
1907 ]
1908 }
1909 ],
1910 "prompt_number": 37
1911 },
1912 {
1913 "cell_type": "markdown",
1914 "metadata": {},
1915 "source": [
1916 "There were accidents with 42 and 38 casualties. Let's look at those in a bit more detail. First, find the accident documents:"
1917 ]
1918 },
1919 {
1920 "cell_type": "code",
1921 "collapsed": false,
1922 "input": [
1923 "[a for a in accidents.find({'Number_of_Casualties': {'$gt': 35}}, \n",
1924 " ['Accident_Index', 'Number_of_Casualties', 'Number_of_Vehicles',\n",
1925 " 'Datetime', 'Accident_Severity'])]"
1926 ],
1927 "language": "python",
1928 "metadata": {},
1929 "outputs": [
1930 {
1931 "metadata": {},
1932 "output_type": "pyout",
1933 "prompt_number": 38,
1934 "text": [
1935 "[{'Accident_Index': '201220Z000792',\n",
1936 " 'Datetime': datetime.datetime(2012, 3, 24, 6, 20),\n",
1937 " 'Number_of_Casualties': 42,\n",
1938 " 'Number_of_Vehicles': 2,\n",
1939 " '_id': ObjectId('52a9c98092c4e16686d2287a'),\n",
1940 " 'Accident_Severity': 1},\n",
1941 " {'Accident_Index': '201291NM05840',\n",
1942 " 'Datetime': datetime.datetime(2012, 6, 8, 15, 40),\n",
1943 " 'Number_of_Casualties': 38,\n",
1944 " 'Number_of_Vehicles': 4,\n",
1945 " '_id': ObjectId('52a9c98492c4e16686d34644'),\n",
1946 " 'Accident_Severity': 1}]"
1947 ]
1948 }
1949 ],
1950 "prompt_number": 38
1951 },
1952 {
1953 "cell_type": "markdown",
1954 "metadata": {},
1955 "source": [
1956 "Let's look into these in a bit more detail, without being overwhelmed by the data."
1957 ]
1958 },
1959 {
1960 "cell_type": "code",
1961 "collapsed": false,
1962 "input": [
1963 "big_accidents = [a for a in accidents.find({'Accident_Index': {'$in': ['201220Z000792', '201291NM05840']}})]"
1964 ],
1965 "language": "python",
1966 "metadata": {},
1967 "outputs": [],
1968 "prompt_number": 39
1969 },
1970 {
1971 "cell_type": "code",
1972 "collapsed": false,
1973 "input": [
1974 "for a in big_accidents:\n",
1975 " print(a['Accident_Index'], a['Datetime'], \n",
1976 " label_of[('1st_Road_Class', a['1st_Road_Class'])][0] + str(a['1st_Road_Number']),\n",
1977 " label_of[('Accident_Severity', a['Accident_Severity'])],\n",
1978 " a['Number_of_Casualties'], 'casualties,',\n",
1979 " a['Number_of_Vehicles'], 'vehicles')\n",
1980 " for v in a['Vehicles']:\n",
1981 " print(' ', label_of[('Vehicle_Type', v['Vehicle_Type'])], ':',\n",
1982 " len([c for c in a['Casualties'] if c['Vehicle_Reference'] == v['Vehicle_Reference']]),\n",
1983 " 'casualties')"
1984 ],
1985 "language": "python",
1986 "metadata": {},
1987 "outputs": [
1988 {
1989 "output_type": "stream",
1990 "stream": "stdout",
1991 "text": [
1992 "201220Z000792 2012-03-24 06:20:00 M5 Fatal 42 casualties, 2 vehicles\n",
1993 " Bus or coach (17 or more pass seats) : 41 casualties\n",
1994 " Goods 7.5 tonnes mgw and over : 1 casualties\n",
1995 "201291NM05840 2012-06-08 15:40:00 A9 Fatal 38 casualties, 4 vehicles\n",
1996 " Van / Goods 3.5 tonnes mgw or under : 2 casualties\n",
1997 " Bus or coach (17 or more pass seats) : 36 casualties\n",
1998 " Car : 0 casualties\n",
1999 " Car : 0 casualties\n"
2000 ]
2001 }
2002 ],
2003 "prompt_number": 40
2004 },
2005 {
2006 "cell_type": "markdown",
2007 "metadata": {},
2008 "source": [
2009 "# Exercises"
2010 ]
2011 },
2012 {
2013 "cell_type": "markdown",
2014 "metadata": {},
2015 "source": [
2016 "How many accidents occurred in the Milton Keynes district authority (`'Local_Authority_(District)'` = 479)"
2017 ]
2018 },
2019 {
2020 "cell_type": "code",
2021 "collapsed": false,
2022 "input": [
2023 "accidents.find({'Local_Authority_(District)': 479}).count()"
2024 ],
2025 "language": "python",
2026 "metadata": {},
2027 "outputs": [
2028 {
2029 "metadata": {},
2030 "output_type": "pyout",
2031 "prompt_number": 41,
2032 "text": [
2033 "674"
2034 ]
2035 }
2036 ],
2037 "prompt_number": 41
2038 },
2039 {
2040 "cell_type": "markdown",
2041 "metadata": {},
2042 "source": [
2043 "Which highway authorities are responsible for the roads in the Milton Keynes district authority?"
2044 ]
2045 },
2046 {
2047 "cell_type": "code",
2048 "collapsed": false,
2049 "input": [
2050 "lahs = accidents.find({'Local_Authority_(District)': 479}, ['Local_Authority_(Highway)']).distinct('Local_Authority_(Highway)')\n",
2051 "[(lah, label_of[('Local_Authority_(Highway)', lah)]) for lah in lahs]"
2052 ],
2053 "language": "python",
2054 "metadata": {},
2055 "outputs": [
2056 {
2057 "metadata": {},
2058 "output_type": "pyout",
2059 "prompt_number": 42,
2060 "text": [
2061 "[('E06000042', 'Milton Keynes')]"
2062 ]
2063 }
2064 ],
2065 "prompt_number": 42
2066 },
2067 {
2068 "cell_type": "markdown",
2069 "metadata": {},
2070 "source": [
2071 "Which district authorities are served by Milton Keynes highways?"
2072 ]
2073 },
2074 {
2075 "cell_type": "code",
2076 "collapsed": false,
2077 "input": [
2078 "lads = accidents.find({'Local_Authority_(Highway)': 'E06000042'}, ['Local_Authority_(District)']).distinct('Local_Authority_(District)')\n",
2079 "[(lad, label_of[('Local_Authority_(District)', lad)]) for lad in lads]"
2080 ],
2081 "language": "python",
2082 "metadata": {},
2083 "outputs": [
2084 {
2085 "metadata": {},
2086 "output_type": "pyout",
2087 "prompt_number": 43,
2088 "text": [
2089 "[(479, 'Milton Keynes')]"
2090 ]
2091 }
2092 ],
2093 "prompt_number": 43
2094 },
2095 {
2096 "cell_type": "markdown",
2097 "metadata": {},
2098 "source": [
2099 "Which police forces are responsible for the roads in the Milton Keynes district authority?"
2100 ]
2101 },
2102 {
2103 "cell_type": "code",
2104 "collapsed": false,
2105 "input": [
2106 "pfs = accidents.find({'Local_Authority_(District)': 479}, ['Police_Force']).distinct('Police_Force')\n",
2107 "[(pf, label_of[('Police_Force', pf)]) for pf in pfs]"
2108 ],
2109 "language": "python",
2110 "metadata": {},
2111 "outputs": [
2112 {
2113 "metadata": {},
2114 "output_type": "pyout",
2115 "prompt_number": 44,
2116 "text": [
2117 "[(43, 'Thames Valley')]"
2118 ]
2119 }
2120 ],
2121 "prompt_number": 44
2122 },
2123 {
2124 "cell_type": "markdown",
2125 "metadata": {},
2126 "source": [
2127 "Which district authorities are served by Thames Valley police?"
2128 ]
2129 },
2130 {
2131 "cell_type": "code",
2132 "collapsed": false,
2133 "input": [
2134 "lads = accidents.find({'Police_Force': 43}, ['Local_Authority_(District)']).distinct('Local_Authority_(District)')\n",
2135 "[(lad, label_of[('Local_Authority_(District)', lad)]) for lad in lads]"
2136 ],
2137 "language": "python",
2138 "metadata": {},
2139 "outputs": [
2140 {
2141 "metadata": {},
2142 "output_type": "pyout",
2143 "prompt_number": 45,
2144 "text": [
2145 "[(479, 'Milton Keynes'),\n",
2146 " (477, 'South Bucks'),\n",
2147 " (475, 'Wokingham'),\n",
2148 " (470, 'Bracknell Forest'),\n",
2149 " (484, 'South Oxfordshire'),\n",
2150 " (471, 'West Berkshire'),\n",
2151 " (472, 'Reading'),\n",
2152 " (485, 'West Oxfordshire'),\n",
2153 " (481, 'Cherwell'),\n",
2154 " (480, 'Wycombe'),\n",
2155 " (476, 'Aylesbury Vale'),\n",
2156 " (474, 'Windsor and Maidenhead'),\n",
2157 " (483, 'Vale of White Horse'),\n",
2158 " (473, 'Slough'),\n",
2159 " (482, 'Oxford'),\n",
2160 " (478, 'Chiltern')]"
2161 ]
2162 }
2163 ],
2164 "prompt_number": 45
2165 },
2166 {
2167 "cell_type": "markdown",
2168 "metadata": {},
2169 "source": [
2170 "How many casualties were involved in accident index '201243S022012'"
2171 ]
2172 },
2173 {
2174 "cell_type": "code",
2175 "collapsed": false,
2176 "input": [
2177 "accidents.find_one({'Accident_Index': '201243S022012'}, ['Number_of_Casualties'])"
2178 ],
2179 "language": "python",
2180 "metadata": {},
2181 "outputs": [
2182 {
2183 "metadata": {},
2184 "output_type": "pyout",
2185 "prompt_number": 46,
2186 "text": [
2187 "{'_id': ObjectId('52a9c98292c4e16686d2b607'), 'Number_of_Casualties': 4}"
2188 ]
2189 }
2190 ],
2191 "prompt_number": 46
2192 },
2193 {
2194 "cell_type": "code",
2195 "collapsed": false,
2196 "input": [
2197 "[a for a in accidents.find({'Local_Authority_(District)': 479}, \n",
2198 " ['Accident_Index', 'Number_of_Casualties', 'Number_of_Vehicles'],\n",
2199 " limit=10)]"
2200 ],
2201 "language": "python",
2202 "metadata": {},
2203 "outputs": [
2204 {
2205 "metadata": {},
2206 "output_type": "pyout",
2207 "prompt_number": 47,
2208 "text": [
2209 "[{'Number_of_Vehicles': 1,\n",
2210 " '_id': ObjectId('52a9c98292c4e16686d2b5f6'),\n",
2211 " 'Accident_Index': '201243S018012',\n",
2212 " 'Number_of_Casualties': 1},\n",
2213 " {'Number_of_Vehicles': 2,\n",
2214 " '_id': ObjectId('52a9c98292c4e16686d2b6a5'),\n",
2215 " 'Accident_Index': '201243S056012',\n",
2216 " 'Number_of_Casualties': 1},\n",
2217 " {'Number_of_Vehicles': 2,\n",
2218 " '_id': ObjectId('52a9c98292c4e16686d2b5e6'),\n",
2219 " 'Accident_Index': '201243S014012',\n",
2220 " 'Number_of_Casualties': 1},\n",
2221 " {'Number_of_Vehicles': 2,\n",
2222 " '_id': ObjectId('52a9c98292c4e16686d2b60c'),\n",
2223 " 'Accident_Index': '201243S023012',\n",
2224 " 'Number_of_Casualties': 1},\n",
2225 " {'Number_of_Vehicles': 2,\n",
2226 " '_id': ObjectId('52a9c98292c4e16686d2b5fe'),\n",
2227 " 'Accident_Index': '201243S020012',\n",
2228 " 'Number_of_Casualties': 1},\n",
2229 " {'Number_of_Vehicles': 2,\n",
2230 " '_id': ObjectId('52a9c98292c4e16686d2b5f9'),\n",
2231 " 'Accident_Index': '201243S019012',\n",
2232 " 'Number_of_Casualties': 1},\n",
2233 " {'Number_of_Vehicles': 2,\n",
2234 " '_id': ObjectId('52a9c98292c4e16686d2b607'),\n",
2235 " 'Accident_Index': '201243S022012',\n",
2236 " 'Number_of_Casualties': 4},\n",
2237 " {'Number_of_Vehicles': 2,\n",
2238 " '_id': ObjectId('52a9c98292c4e16686d2b649'),\n",
2239 " 'Accident_Index': '201243S036012',\n",
2240 " 'Number_of_Casualties': 1},\n",
2241 " {'Number_of_Vehicles': 2,\n",
2242 " '_id': ObjectId('52a9c98292c4e16686d2b683'),\n",
2243 " 'Accident_Index': '201243S048012',\n",
2244 " 'Number_of_Casualties': 1},\n",
2245 " {'Number_of_Vehicles': 2,\n",
2246 " '_id': ObjectId('52a9c98292c4e16686d2b621'),\n",
2247 " 'Accident_Index': '201243S028012',\n",
2248 " 'Number_of_Casualties': 1}]"
2249 ]
2250 }
2251 ],
2252 "prompt_number": 47
2253 },
2254 {
2255 "cell_type": "code",
2256 "collapsed": false,
2257 "input": [
2258 "[(v, label_of[('Police_Force', v)]) for k, v in label_of.keys() if k == 'Police_Force']"
2259 ],
2260 "language": "python",
2261 "metadata": {},
2262 "outputs": [
2263 {
2264 "metadata": {},
2265 "output_type": "pyout",
2266 "prompt_number": 48,
2267 "text": [
2268 "[(14, 'South Yorkshire'),\n",
2269 " (32, 'Lincolnshire'),\n",
2270 " (92, 'Grampian'),\n",
2271 " (1, 'Metropolitan Police'),\n",
2272 " (61, 'Gwent'),\n",
2273 " (96, 'Central'),\n",
2274 " (47, 'Sussex'),\n",
2275 " (91, 'Northern'),\n",
2276 " (12, 'North Yorkshire'),\n",
2277 " (7, 'Cheshire'),\n",
2278 " (34, 'Northamptonshire'),\n",
2279 " (16, 'Humberside'),\n",
2280 " (42, 'Essex'),\n",
2281 " (11, 'Durham'),\n",
2282 " (45, 'Surrey'),\n",
2283 " (44, 'Hampshire'),\n",
2284 " (36, 'Norfolk'),\n",
2285 " (62, 'South Wales'),\n",
2286 " (5, 'Merseyside'),\n",
2287 " (31, 'Nottinghamshire'),\n",
2288 " (46, 'Kent'),\n",
2289 " (22, 'West Mercia'),\n",
2290 " (40, 'Bedfordshire'),\n",
2291 " (95, 'Lothian and Borders'),\n",
2292 " (60, 'North Wales'),\n",
2293 " (55, 'Dorset'),\n",
2294 " (20, 'West Midlands'),\n",
2295 " (33, 'Leicestershire'),\n",
2296 " (93, 'Tayside'),\n",
2297 " (52, 'Avon and Somerset'),\n",
2298 " (6, 'Greater Manchester'),\n",
2299 " (50, 'Devon and Cornwall'),\n",
2300 " (35, 'Cambridgeshire'),\n",
2301 " (53, 'Gloucestershire'),\n",
2302 " (4, 'Lancashire'),\n",
2303 " (97, 'Strathclyde'),\n",
2304 " (10, 'Northumbria'),\n",
2305 " (13, 'West Yorkshire'),\n",
2306 " (30, 'Derbyshire'),\n",
2307 " (21, 'Staffordshire'),\n",
2308 " (48, 'City of London'),\n",
2309 " (17, 'Cleveland'),\n",
2310 " (43, 'Thames Valley'),\n",
2311 " (94, 'Fife'),\n",
2312 " (3, 'Cumbria'),\n",
2313 " (37, 'Suffolk'),\n",
2314 " (63, 'Dyfed-Powys'),\n",
2315 " (54, 'Wiltshire'),\n",
2316 " (98, 'Dumfries and Galloway'),\n",
2317 " (23, 'Warwickshire'),\n",
2318 " (41, 'Hertfordshire')]"
2319 ]
2320 }
2321 ],
2322 "prompt_number": 48
2323 },
2324 {
2325 "cell_type": "code",
2326 "collapsed": false,
2327 "input": [],
2328 "language": "python",
2329 "metadata": {},
2330 "outputs": [],
2331 "prompt_number": 48
2332 }
2333 ],
2334 "metadata": {}
2335 }
2336 ]
2337 }