├── .gitignore ├── LICENSE ├── README.md ├── d3.v3.min.js ├── d3.v4.min.js ├── normalize.css ├── step-1-a-basic-pie-chart.html ├── step-2-a-basic-donut-chart.html ├── step-3-adding-a-legend.html ├── step-4-loading-external-data.html ├── step-5-adding-tooltips.html ├── step-6-animating-interactivity.html ├── step-7-a-basic-bar-chart.html ├── toronto-parking-ticket-data-2012-weekdays.ipynb └── weekdays.csv /.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints 2 | Parking_Tags_Data_2012.csv 3 | 4 | *.swp 5 | 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2014-2017 Kent English 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## D3.js Step by Step 2 | 3 | Check out the [tutorial](http://zeroviscosity.com/category/d3-js-step-by-step). 4 | 5 | #### NOTE: Examples now target D3 v4. 6 | 7 | Here's what changed in this repo from v3 to v4: 8 | 9 | * `d3.scale.category20b()` became `d3.scaleOrdinal(d3.schemeCategory20b)` 10 | * `d3.svg.arc()` became `d3.arc()` 11 | * `innerRadius()` needs to be explicitly defined so it is now `.innerRadius(0)` for the pie chart 12 | * `d3.layout.pie()` became `d3.pie()` 13 | -------------------------------------------------------------------------------- /normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v3.0.1 | MIT License | git.io/normalize */ 2 | /** 3 | * 1. Set default font family to sans-serif. 4 | * 2. Prevent iOS text size adjust after orientation change, without disabling 5 | * user zoom. 6 | */ 7 | html { 8 | font-family: sans-serif; 9 | /* 1 */ 10 | -ms-text-size-adjust: 100%; 11 | /* 2 */ 12 | -webkit-text-size-adjust: 100%; 13 | /* 2 */ } 14 | 15 | /** 16 | * Remove default margin. 17 | */ 18 | body { 19 | margin: 0; } 20 | 21 | /* HTML5 display definitions 22 | ========================================================================== */ 23 | /** 24 | * Correct `block` display not defined for any HTML5 element in IE 8/9. 25 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. 26 | * Correct `block` display not defined for `main` in IE 11. 27 | */ 28 | article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { 29 | display: block; } 30 | 31 | /** 32 | * 1. Correct `inline-block` display not defined in IE 8/9. 33 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 34 | */ 35 | audio, canvas, progress, video { 36 | display: inline-block; 37 | /* 1 */ 38 | vertical-align: baseline; 39 | /* 2 */ } 40 | 41 | /** 42 | * Prevent modern browsers from displaying `audio` without controls. 43 | * Remove excess height in iOS 5 devices. 44 | */ 45 | audio:not([controls]) { 46 | display: none; 47 | height: 0; } 48 | 49 | /** 50 | * Address `[hidden]` styling not present in IE 8/9/10. 51 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. 52 | */ 53 | [hidden], template { 54 | display: none; } 55 | 56 | /* Links 57 | ========================================================================== */ 58 | /** 59 | * Remove the gray background color from active links in IE 10. 60 | */ 61 | a { 62 | background: transparent; } 63 | 64 | /** 65 | * Improve readability when focused and also mouse hovered in all browsers. 66 | */ 67 | a:active, a:hover { 68 | outline: 0; } 69 | 70 | /* Text-level semantics 71 | ========================================================================== */ 72 | /** 73 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. 74 | */ 75 | abbr[title] { 76 | border-bottom: 1px dotted; } 77 | 78 | /** 79 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. 80 | */ 81 | b, strong { 82 | font-weight: bold; } 83 | 84 | /** 85 | * Address styling not present in Safari and Chrome. 86 | */ 87 | dfn { 88 | font-style: italic; } 89 | 90 | /** 91 | * Address variable `h1` font-size and margin within `section` and `article` 92 | * contexts in Firefox 4+, Safari, and Chrome. 93 | */ 94 | h1 { 95 | font-size: 2em; 96 | margin: 0.67em 0; } 97 | 98 | /** 99 | * Address styling not present in IE 8/9. 100 | */ 101 | mark { 102 | background: #ff0; 103 | color: #000; } 104 | 105 | /** 106 | * Address inconsistent and variable font size in all browsers. 107 | */ 108 | small { 109 | font-size: 80%; } 110 | 111 | /** 112 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 113 | */ 114 | sub, sup { 115 | font-size: 75%; 116 | line-height: 0; 117 | position: relative; 118 | vertical-align: baseline; } 119 | 120 | sup { 121 | top: -0.5em; } 122 | 123 | sub { 124 | bottom: -0.25em; } 125 | 126 | /* Embedded content 127 | ========================================================================== */ 128 | /** 129 | * Remove border when inside `a` element in IE 8/9/10. 130 | */ 131 | img { 132 | border: 0; } 133 | 134 | /** 135 | * Correct overflow not hidden in IE 9/10/11. 136 | */ 137 | svg:not(:root) { 138 | overflow: hidden; } 139 | 140 | /* Grouping content 141 | ========================================================================== */ 142 | /** 143 | * Address margin not present in IE 8/9 and Safari. 144 | */ 145 | figure { 146 | margin: 1em 40px; } 147 | 148 | /** 149 | * Address differences between Firefox and other browsers. 150 | */ 151 | hr { 152 | -moz-box-sizing: content-box; 153 | box-sizing: content-box; 154 | height: 0; } 155 | 156 | /** 157 | * Contain overflow in all browsers. 158 | */ 159 | pre { 160 | overflow: auto; } 161 | 162 | /** 163 | * Address odd `em`-unit font size rendering in all browsers. 164 | */ 165 | code, kbd, pre, samp { 166 | font-family: monospace, monospace; 167 | font-size: 1em; } 168 | 169 | /* Forms 170 | ========================================================================== */ 171 | /** 172 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 173 | * styling of `select`, unless a `border` property is set. 174 | */ 175 | /** 176 | * 1. Correct color not being inherited. 177 | * Known issue: affects color of disabled elements. 178 | * 2. Correct font properties not being inherited. 179 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. 180 | */ 181 | button, input, optgroup, select, textarea { 182 | color: inherit; 183 | /* 1 */ 184 | font: inherit; 185 | /* 2 */ 186 | margin: 0; 187 | /* 3 */ } 188 | 189 | /** 190 | * Address `overflow` set to `hidden` in IE 8/9/10/11. 191 | */ 192 | button { 193 | overflow: visible; } 194 | 195 | /** 196 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 197 | * All other form control elements do not inherit `text-transform` values. 198 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. 199 | * Correct `select` style inheritance in Firefox. 200 | */ 201 | button, select { 202 | text-transform: none; } 203 | 204 | /** 205 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 206 | * and `video` controls. 207 | * 2. Correct inability to style clickable `input` types in iOS. 208 | * 3. Improve usability and consistency of cursor style between image-type 209 | * `input` and others. 210 | */ 211 | button, html input[type="button"], input[type="reset"], input[type="submit"] { 212 | -webkit-appearance: button; 213 | /* 2 */ 214 | cursor: pointer; 215 | /* 3 */ } 216 | 217 | /** 218 | * Re-set default cursor for disabled elements. 219 | */ 220 | button[disabled], html input[disabled] { 221 | cursor: default; } 222 | 223 | /** 224 | * Remove inner padding and border in Firefox 4+. 225 | */ 226 | button::-moz-focus-inner, input::-moz-focus-inner { 227 | border: 0; 228 | padding: 0; } 229 | 230 | /** 231 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 232 | * the UA stylesheet. 233 | */ 234 | input { 235 | line-height: normal; } 236 | 237 | /** 238 | * It's recommended that you don't attempt to style these elements. 239 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 240 | * 241 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 242 | * 2. Remove excess padding in IE 8/9/10. 243 | */ 244 | input[type="checkbox"], input[type="radio"] { 245 | box-sizing: border-box; 246 | /* 1 */ 247 | padding: 0; 248 | /* 2 */ } 249 | 250 | /** 251 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 252 | * `font-size` values of the `input`, it causes the cursor style of the 253 | * decrement button to change from `default` to `text`. 254 | */ 255 | input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { 256 | height: auto; } 257 | 258 | /** 259 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. 260 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome 261 | * (include `-moz` to future-proof). 262 | */ 263 | input[type="search"] { 264 | -webkit-appearance: textfield; 265 | /* 1 */ 266 | -moz-box-sizing: content-box; 267 | -webkit-box-sizing: content-box; 268 | /* 2 */ 269 | box-sizing: content-box; } 270 | 271 | /** 272 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 273 | * Safari (but not Chrome) clips the cancel button when the search input has 274 | * padding (and `textfield` appearance). 275 | */ 276 | input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { 277 | -webkit-appearance: none; } 278 | 279 | /** 280 | * Define consistent border, margin, and padding. 281 | */ 282 | fieldset { 283 | border: 1px solid #c0c0c0; 284 | margin: 0 2px; 285 | padding: 0.35em 0.625em 0.75em; } 286 | 287 | /** 288 | * 1. Correct `color` not being inherited in IE 8/9/10/11. 289 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 290 | */ 291 | legend { 292 | border: 0; 293 | /* 1 */ 294 | padding: 0; 295 | /* 2 */ } 296 | 297 | /** 298 | * Remove default vertical scrollbar in IE 8/9/10/11. 299 | */ 300 | textarea { 301 | overflow: auto; } 302 | 303 | /** 304 | * Don't inherit the `font-weight` (applied by a rule above). 305 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 306 | */ 307 | optgroup { 308 | font-weight: bold; } 309 | 310 | /* Tables 311 | ========================================================================== */ 312 | /** 313 | * Remove most spacing between table cells. 314 | */ 315 | table { 316 | border-collapse: collapse; 317 | border-spacing: 0; } 318 | 319 | td, th { 320 | padding: 0; } 321 | 322 | /*# sourceMappingURL=normalize.css.map */ -------------------------------------------------------------------------------- /step-1-a-basic-pie-chart.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Step 1 - A Basic Pie Chart 6 | 7 | 8 | 9 |
10 | 11 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /step-2-a-basic-donut-chart.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Step 2 - A Basic Donut Chart 6 | 7 | 8 | 9 |
10 | 11 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /step-3-adding-a-legend.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Step 3 - Adding a Legend 6 | 7 | 15 | 16 | 17 |
18 | 19 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /step-4-loading-external-data.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Step 4 - Loading External Data 6 | 7 | 15 | 16 | 17 |
18 | 19 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /step-5-adding-tooltips.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Step 5 - Adding Tooltips 6 | 7 | 34 | 35 | 36 |
37 | 38 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /step-6-animating-interactivity.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Step 6 - Animating Interactivity 6 | 7 | 43 | 44 | 45 |

Toronto Parking Tickets by Weekday in 2012

46 |
47 | 48 | 188 | 189 | 190 | -------------------------------------------------------------------------------- /step-7-a-basic-bar-chart.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Step 7 - A Basic Bar Chart 6 | 7 | 22 | 23 | 24 |

Toronto Parking Tickets by Weekday in 2012

25 |
26 | 27 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /toronto-parking-ticket-data-2012-weekdays.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "name": "", 4 | "signature": "sha256:b81d551f6fc983fba194fb50b817038ec38c1ea0fa560d95354cfd8842366406" 5 | }, 6 | "nbformat": 3, 7 | "nbformat_minor": 0, 8 | "worksheets": [ 9 | { 10 | "cells": [ 11 | { 12 | "cell_type": "code", 13 | "collapsed": false, 14 | "input": [ 15 | "import pandas as pd\n", 16 | "import datetime as dt\n", 17 | "\n", 18 | "df = pd.read_csv('Parking_Tags_Data_2012.csv')\n", 19 | "df" 20 | ], 21 | "language": "python", 22 | "metadata": {}, 23 | "outputs": [ 24 | { 25 | "html": [ 26 | "
\n", 27 | "\n", 28 | " \n", 29 | " \n", 30 | " \n", 31 | " \n", 32 | " \n", 33 | " \n", 34 | " \n", 35 | " \n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | "
tag_number_maskeddate_of_infractioninfraction_codeinfraction_descriptionset_fine_amounttime_of_infractionlocation1location2location3location4province
0 ***78746 20120101 192 STAND SIGNED TRANSIT STOP 60 0 NR 355 PARKSIDE DR NaN NaN ON
1 ***31670 20120101 5 PARK HWY PROHIBED TIME/DAY 40 1 NR 220 KING ST W NaN NaN ON
2 ***47870 20120101 5 PARK HWY PROHIBED TIME/DAY 40 1 N/S ELM ST W/O ELIZABETH ST ON
3 ***68489 20120101 8 STD VEH HWY PROHIB TIME/DAY 60 1 N/S WALTON ST E/O BAY ST ON
4 ***98802 20120101 337 PARK - ON BOULEVARD 50 1 S/S SHEPPARD AVE E E/O NEILSON AVE ON
5 ***85083 20120101 8 STD VEH HWY PROHIB TIME/DAY 60 2 N/S WALTON ST E/O BAY ST ON
6 ***98803 20120101 337 PARK - ON BOULEVARD 50 2 S/S SHEPPARD AVE E E/O NEILSON AVE ON
7 ***08841 20120101 15 PARK - 3 M OF FIRE HYDRANT 100 2 NR 35 THORNCLIFFE PARK DR NaN NaN NJ
8 ***47871 20120101 5 PARK HWY PROHIBED TIME/DAY 40 3 N/S ELM ST E/O UNIVERSITY AVE ON
9 ***98804 20120101 337 PARK - ON BOULEVARD 50 3 S/S SHEPPARD AVE E E/O NEILSON AVE ON
10 ***98805 20120101 337 PARK - ON BOULEVARD 50 3 S/S SHEPPARD AVE E E/O NEILSON AVE ON
11 ***99287 20120101 5 PARK HWY PROHIBED TIME/DAY 40 3 NR 968 QUEEN ST W NaN NaN ON
12 ***47872 20120101 5 PARK HWY PROHIBED TIME/DAY 40 4 N/S ELM ST E/O UNIVERSITY AVE ON
13 ***98806 20120101 337 PARK - ON BOULEVARD 50 4 S/S SHEPPARD AVE E E/O NEILSON AVE ON
14 ***13375 20120101 192 STAND SIGNED TRANSIT STOP 60 4 NR 193 PARKSIDE DR NaN NaN UT
15 ***13376 20120101 192 STAND SIGNED TRANSIT STOP 60 5 NR 193 PARKSIDE DR NaN NaN ON
16 ***13377 20120101 192 STAND SIGNED TRANSIT STOP 60 5 NR 193 PARKSIDE DR NaN NaN ON
17 ***98807 20120101 337 PARK - ON BOULEVARD 50 6 S/S SHEPPARD AVE E E/O NEILSON AVE ON
18 ***68490 20120101 384 STOP VEH OTR THN BCYCL-BYCL LN 60 7 OPP 86 GERRARD ST E NaN NaN ON
19 ***85084 20120101 384 STOP VEH OTR THN BCYCL-BYCL LN 60 8 OPP 86 GERRARD ST E NaN NaN ON
20 ***98808 20120101 337 PARK - ON BOULEVARD 50 8 S/S SHEPPARD AVE E E/O NEILSON AVE ON
21 ***68491 20120101 384 STOP VEH OTR THN BCYCL-BYCL LN 60 9 NR 101 GERRARD ST E NaN NaN GA
22 ***86155 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 9 AT 361 FRONT ST W NaN NaN ON
23 ***98809 20120101 337 PARK - ON BOULEVARD 50 9 S/S SHEPPARD AVE E E/O NEILSON AVE ON
24 ***99288 20120101 5 PARK HWY PROHIBED TIME/DAY 40 9 NR 942 QUEEN ST W NaN NaN ON
25 ***47873 20120101 9 STOP HWY PROHIBITED TIME/DAY 60 10 W/S ELIZABETH ST N/O EDWARD ST ON
26 ***47874 20120101 5 PARK HWY PROHIBED TIME/DAY 40 12 NR 150 ELIZABETH ST NaN NaN ON
27 ***68492 20120101 192 STAND SIGNED TRANSIT STOP 60 14 W/S PARLIAMENT ST S/O VERNER LANE ON
28 ***99289 20120101 5 PARK HWY PROHIBED TIME/DAY 40 14 NR 723 QUEEN ST W NaN NaN ON
29 ***47875 20120101 5 PARK HWY PROHIBED TIME/DAY 40 16 OPP 77 ELM ST NaN NaN ON
30 ***47876 20120101 5 PARK HWY PROHIBED TIME/DAY 40 17 OPP 77 ELM ST NaN NaN ON
31 ***86156 20120101 15 PARK 3M OF FIRE HYDRANT 100 20 AT 361 FRONT ST W NaN NaN ON
32 ***99290 20120101 5 PARK HWY PROHIBED TIME/DAY 40 22 NR 801 KING ST W NaN NaN ON
33 ***08842 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 22 AT 177 REDPATH AVE NaN NaN ON
34 ***08843 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 23 AT 177 REDPATH AVE NaN NaN ON
35 ***47877 20120101 15 PARK 3M OF FIRE HYDRANT 100 25 NR 13 ELM ST NaN NaN ON
36 ***99291 20120101 5 PARK HWY PROHIBED TIME/DAY 40 26 NR 901 KING ST W NaN NaN ON
37 ***08844 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 26 AT 200 ROEHAMPTON AVE NaN NaN ON
38 ***08845 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 26 AT 200 ROEHAMPTON AVE NaN NaN ON
39 ***98810 20120101 14 PARK OBSTRUCT DRIVE/LANE 40 28 NR 11 PROTEA GDNS NaN NaN ON
40 ***08846 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 28 AT 200 ROEHAMPTON AVE NaN NaN ON
41 ***08847 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 31 AT 200 ROEHAMPTON AVE NaN NaN ON
42 ***94096 20120101 192 STAND SIGNED TRANSIT STOP 60 37 NR 922 PAPE AVE NaN NaN ON
43 ***99292 20120101 5 PARK-HWY DRNG PROH TIMES/DAYS 40 39 NR 1366 DUNDAS ST W NaN NaN ON
44 ***47878 20120101 369 STAND STR DISABL LDG NO DROPOF 450 41 NR 32 GRENVILLE ST NaN NaN ON
45 ***47879 20120101 369 STAND STR DISABL LDG NO DROPOF 450 43 NR 18 GRENVILLE ST NaN NaN ON
46 ***47880 20120101 5 PARK HWY PROHIBED TIME/DAY 40 47 NR 7 BREADALBANE ST NaN NaN ON
47 ***37886 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 48 AT 735 COLLEGE ST NaN NaN ON
48 ***37887 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 49 AT 735 COLLEGE ST NaN NaN ON
49 ***86157 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 49 AT 37 GROSVENOR ST NaN NaN ON
50 ***08848 20120101 5 PARK HWY PROHIBED TIME/DAY 40 50 E/S MOUNT PLEASANT RD S/O GARFIELD AVE ON
51 ***54745 20120101 3 PARK/LEAVE ON PRIVATE PROPERTY 30 51 AT 1 SCOTT ST NaN NaN ON
52 ***37888 20120101 30 STOP ON/OVER SIDEWALK/FOOTPATH 60 52 NR 178 BEATRICE ST NaN NaN ON
53 ***44968 20120101 5 PARK HWY PROHIBED TIME/DAY 40 55 OPP 168 SIMCOE ST NaN NaN ON
54 ***47881 20120101 5 PARK HWY PROHIBED TIME/DAY 40 56 NR 27 CARLTON ST NaN NaN ON
55 ***47882 20120101 5 PARK HWY PROHIBED TIME/DAY 40 58 NR 27 CARLTON ST NaN NaN ON
56 ***47883 20120101 5 PARK HWY PROHIBED TIME/DAY 40 59 NR 27 CARLTON ST NaN NaN ON
57 ***44969 20120101 5 PARK HWY PROHIBED TIME/DAY 40 103 NR 100 SIMCOE ST NaN NaN ON
58 ***09737 20120101 356 STAND IN DISABLED NO PERMIT 450 110 AT 11 BRUNEL CT NaN NaN ON
59 ***47884 20120101 9 STOP HWY PROHIBITED TIME/DAY 60 111 OPP 86 GERRARD ST E NaN NaN ON
.................................
\n", 901 | "

2746154 rows \u00d7 11 columns

\n", 902 | "
" 903 | ], 904 | "metadata": {}, 905 | "output_type": "pyout", 906 | "prompt_number": 1, 907 | "text": [ 908 | " tag_number_masked date_of_infraction infraction_code \\\n", 909 | "0 ***78746 20120101 192 \n", 910 | "1 ***31670 20120101 5 \n", 911 | "2 ***47870 20120101 5 \n", 912 | "3 ***68489 20120101 8 \n", 913 | "4 ***98802 20120101 337 \n", 914 | "5 ***85083 20120101 8 \n", 915 | "6 ***98803 20120101 337 \n", 916 | "7 ***08841 20120101 15 \n", 917 | "8 ***47871 20120101 5 \n", 918 | "9 ***98804 20120101 337 \n", 919 | "10 ***98805 20120101 337 \n", 920 | "11 ***99287 20120101 5 \n", 921 | "12 ***47872 20120101 5 \n", 922 | "13 ***98806 20120101 337 \n", 923 | "14 ***13375 20120101 192 \n", 924 | "15 ***13376 20120101 192 \n", 925 | "16 ***13377 20120101 192 \n", 926 | "17 ***98807 20120101 337 \n", 927 | "18 ***68490 20120101 384 \n", 928 | "19 ***85084 20120101 384 \n", 929 | "20 ***98808 20120101 337 \n", 930 | "21 ***68491 20120101 384 \n", 931 | "22 ***86155 20120101 3 \n", 932 | "23 ***98809 20120101 337 \n", 933 | "24 ***99288 20120101 5 \n", 934 | "25 ***47873 20120101 9 \n", 935 | "26 ***47874 20120101 5 \n", 936 | "27 ***68492 20120101 192 \n", 937 | "28 ***99289 20120101 5 \n", 938 | "29 ***47875 20120101 5 \n", 939 | "30 ***47876 20120101 5 \n", 940 | "31 ***86156 20120101 15 \n", 941 | "32 ***99290 20120101 5 \n", 942 | "33 ***08842 20120101 3 \n", 943 | "34 ***08843 20120101 3 \n", 944 | "35 ***47877 20120101 15 \n", 945 | "36 ***99291 20120101 5 \n", 946 | "37 ***08844 20120101 3 \n", 947 | "38 ***08845 20120101 3 \n", 948 | "39 ***98810 20120101 14 \n", 949 | "40 ***08846 20120101 3 \n", 950 | "41 ***08847 20120101 3 \n", 951 | "42 ***94096 20120101 192 \n", 952 | "43 ***99292 20120101 5 \n", 953 | "44 ***47878 20120101 369 \n", 954 | "45 ***47879 20120101 369 \n", 955 | "46 ***47880 20120101 5 \n", 956 | "47 ***37886 20120101 3 \n", 957 | "48 ***37887 20120101 3 \n", 958 | "49 ***86157 20120101 3 \n", 959 | "50 ***08848 20120101 5 \n", 960 | "51 ***54745 20120101 3 \n", 961 | "52 ***37888 20120101 30 \n", 962 | "53 ***44968 20120101 5 \n", 963 | "54 ***47881 20120101 5 \n", 964 | "55 ***47882 20120101 5 \n", 965 | "56 ***47883 20120101 5 \n", 966 | "57 ***44969 20120101 5 \n", 967 | "58 ***09737 20120101 356 \n", 968 | "59 ***47884 20120101 9 \n", 969 | " ... ... ... \n", 970 | "\n", 971 | " infraction_description set_fine_amount time_of_infraction \\\n", 972 | "0 STAND SIGNED TRANSIT STOP 60 0 \n", 973 | "1 PARK HWY PROHIBED TIME/DAY 40 1 \n", 974 | "2 PARK HWY PROHIBED TIME/DAY 40 1 \n", 975 | "3 STD VEH HWY PROHIB TIME/DAY 60 1 \n", 976 | "4 PARK - ON BOULEVARD 50 1 \n", 977 | "5 STD VEH HWY PROHIB TIME/DAY 60 2 \n", 978 | "6 PARK - ON BOULEVARD 50 2 \n", 979 | "7 PARK - 3 M OF FIRE HYDRANT 100 2 \n", 980 | "8 PARK HWY PROHIBED TIME/DAY 40 3 \n", 981 | "9 PARK - ON BOULEVARD 50 3 \n", 982 | "10 PARK - ON BOULEVARD 50 3 \n", 983 | "11 PARK HWY PROHIBED TIME/DAY 40 3 \n", 984 | "12 PARK HWY PROHIBED TIME/DAY 40 4 \n", 985 | "13 PARK - ON BOULEVARD 50 4 \n", 986 | "14 STAND SIGNED TRANSIT STOP 60 4 \n", 987 | "15 STAND SIGNED TRANSIT STOP 60 5 \n", 988 | "16 STAND SIGNED TRANSIT STOP 60 5 \n", 989 | "17 PARK - ON BOULEVARD 50 6 \n", 990 | "18 STOP VEH OTR THN BCYCL-BYCL LN 60 7 \n", 991 | "19 STOP VEH OTR THN BCYCL-BYCL LN 60 8 \n", 992 | "20 PARK - ON BOULEVARD 50 8 \n", 993 | "21 STOP VEH OTR THN BCYCL-BYCL LN 60 9 \n", 994 | "22 PARK/LEAVE ON PRIVATE PROPERTY 30 9 \n", 995 | "23 PARK - ON BOULEVARD 50 9 \n", 996 | "24 PARK HWY PROHIBED TIME/DAY 40 9 \n", 997 | "25 STOP HWY PROHIBITED TIME/DAY 60 10 \n", 998 | "26 PARK HWY PROHIBED TIME/DAY 40 12 \n", 999 | "27 STAND SIGNED TRANSIT STOP 60 14 \n", 1000 | "28 PARK HWY PROHIBED TIME/DAY 40 14 \n", 1001 | "29 PARK HWY PROHIBED TIME/DAY 40 16 \n", 1002 | "30 PARK HWY PROHIBED TIME/DAY 40 17 \n", 1003 | "31 PARK 3M OF FIRE HYDRANT 100 20 \n", 1004 | "32 PARK HWY PROHIBED TIME/DAY 40 22 \n", 1005 | "33 PARK/LEAVE ON PRIVATE PROPERTY 30 22 \n", 1006 | "34 PARK/LEAVE ON PRIVATE PROPERTY 30 23 \n", 1007 | "35 PARK 3M OF FIRE HYDRANT 100 25 \n", 1008 | "36 PARK HWY PROHIBED TIME/DAY 40 26 \n", 1009 | "37 PARK/LEAVE ON PRIVATE PROPERTY 30 26 \n", 1010 | "38 PARK/LEAVE ON PRIVATE PROPERTY 30 26 \n", 1011 | "39 PARK OBSTRUCT DRIVE/LANE 40 28 \n", 1012 | "40 PARK/LEAVE ON PRIVATE PROPERTY 30 28 \n", 1013 | "41 PARK/LEAVE ON PRIVATE PROPERTY 30 31 \n", 1014 | "42 STAND SIGNED TRANSIT STOP 60 37 \n", 1015 | "43 PARK-HWY DRNG PROH TIMES/DAYS 40 39 \n", 1016 | "44 STAND STR DISABL LDG NO DROPOF 450 41 \n", 1017 | "45 STAND STR DISABL LDG NO DROPOF 450 43 \n", 1018 | "46 PARK HWY PROHIBED TIME/DAY 40 47 \n", 1019 | "47 PARK/LEAVE ON PRIVATE PROPERTY 30 48 \n", 1020 | "48 PARK/LEAVE ON PRIVATE PROPERTY 30 49 \n", 1021 | "49 PARK/LEAVE ON PRIVATE PROPERTY 30 49 \n", 1022 | "50 PARK HWY PROHIBED TIME/DAY 40 50 \n", 1023 | "51 PARK/LEAVE ON PRIVATE PROPERTY 30 51 \n", 1024 | "52 STOP ON/OVER SIDEWALK/FOOTPATH 60 52 \n", 1025 | "53 PARK HWY PROHIBED TIME/DAY 40 55 \n", 1026 | "54 PARK HWY PROHIBED TIME/DAY 40 56 \n", 1027 | "55 PARK HWY PROHIBED TIME/DAY 40 58 \n", 1028 | "56 PARK HWY PROHIBED TIME/DAY 40 59 \n", 1029 | "57 PARK HWY PROHIBED TIME/DAY 40 103 \n", 1030 | "58 STAND IN DISABLED NO PERMIT 450 110 \n", 1031 | "59 STOP HWY PROHIBITED TIME/DAY 60 111 \n", 1032 | " ... ... ... \n", 1033 | "\n", 1034 | " location1 location2 location3 location4 province \n", 1035 | "0 NR 355 PARKSIDE DR NaN NaN ON \n", 1036 | "1 NR 220 KING ST W NaN NaN ON \n", 1037 | "2 N/S ELM ST W/O ELIZABETH ST ON \n", 1038 | "3 N/S WALTON ST E/O BAY ST ON \n", 1039 | "4 S/S SHEPPARD AVE E E/O NEILSON AVE ON \n", 1040 | "5 N/S WALTON ST E/O BAY ST ON \n", 1041 | "6 S/S SHEPPARD AVE E E/O NEILSON AVE ON \n", 1042 | "7 NR 35 THORNCLIFFE PARK DR NaN NaN NJ \n", 1043 | "8 N/S ELM ST E/O UNIVERSITY AVE ON \n", 1044 | "9 S/S SHEPPARD AVE E E/O NEILSON AVE ON \n", 1045 | "10 S/S SHEPPARD AVE E E/O NEILSON AVE ON \n", 1046 | "11 NR 968 QUEEN ST W NaN NaN ON \n", 1047 | "12 N/S ELM ST E/O UNIVERSITY AVE ON \n", 1048 | "13 S/S SHEPPARD AVE E E/O NEILSON AVE ON \n", 1049 | "14 NR 193 PARKSIDE DR NaN NaN UT \n", 1050 | "15 NR 193 PARKSIDE DR NaN NaN ON \n", 1051 | "16 NR 193 PARKSIDE DR NaN NaN ON \n", 1052 | "17 S/S SHEPPARD AVE E E/O NEILSON AVE ON \n", 1053 | "18 OPP 86 GERRARD ST E NaN NaN ON \n", 1054 | "19 OPP 86 GERRARD ST E NaN NaN ON \n", 1055 | "20 S/S SHEPPARD AVE E E/O NEILSON AVE ON \n", 1056 | "21 NR 101 GERRARD ST E NaN NaN GA \n", 1057 | "22 AT 361 FRONT ST W NaN NaN ON \n", 1058 | "23 S/S SHEPPARD AVE E E/O NEILSON AVE ON \n", 1059 | "24 NR 942 QUEEN ST W NaN NaN ON \n", 1060 | "25 W/S ELIZABETH ST N/O EDWARD ST ON \n", 1061 | "26 NR 150 ELIZABETH ST NaN NaN ON \n", 1062 | "27 W/S PARLIAMENT ST S/O VERNER LANE ON \n", 1063 | "28 NR 723 QUEEN ST W NaN NaN ON \n", 1064 | "29 OPP 77 ELM ST NaN NaN ON \n", 1065 | "30 OPP 77 ELM ST NaN NaN ON \n", 1066 | "31 AT 361 FRONT ST W NaN NaN ON \n", 1067 | "32 NR 801 KING ST W NaN NaN ON \n", 1068 | "33 AT 177 REDPATH AVE NaN NaN ON \n", 1069 | "34 AT 177 REDPATH AVE NaN NaN ON \n", 1070 | "35 NR 13 ELM ST NaN NaN ON \n", 1071 | "36 NR 901 KING ST W NaN NaN ON \n", 1072 | "37 AT 200 ROEHAMPTON AVE NaN NaN ON \n", 1073 | "38 AT 200 ROEHAMPTON AVE NaN NaN ON \n", 1074 | "39 NR 11 PROTEA GDNS NaN NaN ON \n", 1075 | "40 AT 200 ROEHAMPTON AVE NaN NaN ON \n", 1076 | "41 AT 200 ROEHAMPTON AVE NaN NaN ON \n", 1077 | "42 NR 922 PAPE AVE NaN NaN ON \n", 1078 | "43 NR 1366 DUNDAS ST W NaN NaN ON \n", 1079 | "44 NR 32 GRENVILLE ST NaN NaN ON \n", 1080 | "45 NR 18 GRENVILLE ST NaN NaN ON \n", 1081 | "46 NR 7 BREADALBANE ST NaN NaN ON \n", 1082 | "47 AT 735 COLLEGE ST NaN NaN ON \n", 1083 | "48 AT 735 COLLEGE ST NaN NaN ON \n", 1084 | "49 AT 37 GROSVENOR ST NaN NaN ON \n", 1085 | "50 E/S MOUNT PLEASANT RD S/O GARFIELD AVE ON \n", 1086 | "51 AT 1 SCOTT ST NaN NaN ON \n", 1087 | "52 NR 178 BEATRICE ST NaN NaN ON \n", 1088 | "53 OPP 168 SIMCOE ST NaN NaN ON \n", 1089 | "54 NR 27 CARLTON ST NaN NaN ON \n", 1090 | "55 NR 27 CARLTON ST NaN NaN ON \n", 1091 | "56 NR 27 CARLTON ST NaN NaN ON \n", 1092 | "57 NR 100 SIMCOE ST NaN NaN ON \n", 1093 | "58 AT 11 BRUNEL CT NaN NaN ON \n", 1094 | "59 OPP 86 GERRARD ST E NaN NaN ON \n", 1095 | " ... ... ... ... ... \n", 1096 | "\n", 1097 | "[2746154 rows x 11 columns]" 1098 | ] 1099 | } 1100 | ], 1101 | "prompt_number": 1 1102 | }, 1103 | { 1104 | "cell_type": "code", 1105 | "collapsed": false, 1106 | "input": [ 1107 | "df.dtypes" 1108 | ], 1109 | "language": "python", 1110 | "metadata": {}, 1111 | "outputs": [ 1112 | { 1113 | "metadata": {}, 1114 | "output_type": "pyout", 1115 | "prompt_number": 2, 1116 | "text": [ 1117 | "tag_number_masked object\n", 1118 | "date_of_infraction int64\n", 1119 | "infraction_code int64\n", 1120 | "infraction_description object\n", 1121 | "set_fine_amount int64\n", 1122 | "time_of_infraction float64\n", 1123 | "location1 object\n", 1124 | "location2 object\n", 1125 | "location3 object\n", 1126 | "location4 object\n", 1127 | "province object\n", 1128 | "dtype: object" 1129 | ] 1130 | } 1131 | ], 1132 | "prompt_number": 2 1133 | }, 1134 | { 1135 | "cell_type": "code", 1136 | "collapsed": false, 1137 | "input": [ 1138 | "pd.isnull(df['date_of_infraction']).value_counts()" 1139 | ], 1140 | "language": "python", 1141 | "metadata": {}, 1142 | "outputs": [ 1143 | { 1144 | "metadata": {}, 1145 | "output_type": "pyout", 1146 | "prompt_number": 3, 1147 | "text": [ 1148 | "False 2746154\n", 1149 | "dtype: int64" 1150 | ] 1151 | } 1152 | ], 1153 | "prompt_number": 3 1154 | }, 1155 | { 1156 | "cell_type": "code", 1157 | "collapsed": false, 1158 | "input": [ 1159 | "date_format = '%Y%m%d'\n", 1160 | "\n", 1161 | "def create_weekday(x):\n", 1162 | " d = dt.datetime.strptime(str(x['date_of_infraction']), date_format)\n", 1163 | " return d.strftime('%A')\n", 1164 | "\n", 1165 | "df['weekday'] = df.apply(create_weekday, axis=1)\n", 1166 | "weekday_counts = df['weekday'].value_counts()\n", 1167 | "weekday_counts" 1168 | ], 1169 | "language": "python", 1170 | "metadata": {}, 1171 | "outputs": [ 1172 | { 1173 | "metadata": {}, 1174 | "output_type": "pyout", 1175 | "prompt_number": 4, 1176 | "text": [ 1177 | "Thursday 432138\n", 1178 | "Wednesday 430728\n", 1179 | "Friday 428295\n", 1180 | "Tuesday 424923\n", 1181 | "Monday 379130\n", 1182 | "Saturday 368239\n", 1183 | "Sunday 282701\n", 1184 | "dtype: int64" 1185 | ] 1186 | } 1187 | ], 1188 | "prompt_number": 4 1189 | }, 1190 | { 1191 | "cell_type": "code", 1192 | "collapsed": false, 1193 | "input": [ 1194 | "weekdays = pd.DataFrame({ 'label': weekday_counts.keys(), 'count': weekday_counts.values })\n", 1195 | "weekdays" 1196 | ], 1197 | "language": "python", 1198 | "metadata": {}, 1199 | "outputs": [ 1200 | { 1201 | "html": [ 1202 | "
\n", 1203 | "\n", 1204 | " \n", 1205 | " \n", 1206 | " \n", 1207 | " \n", 1208 | " \n", 1209 | " \n", 1210 | " \n", 1211 | " \n", 1212 | " \n", 1213 | " \n", 1214 | " \n", 1215 | " \n", 1216 | " \n", 1217 | " \n", 1218 | " \n", 1219 | " \n", 1220 | " \n", 1221 | " \n", 1222 | " \n", 1223 | " \n", 1224 | " \n", 1225 | " \n", 1226 | " \n", 1227 | " \n", 1228 | " \n", 1229 | " \n", 1230 | " \n", 1231 | " \n", 1232 | " \n", 1233 | " \n", 1234 | " \n", 1235 | " \n", 1236 | " \n", 1237 | " \n", 1238 | " \n", 1239 | " \n", 1240 | " \n", 1241 | " \n", 1242 | " \n", 1243 | " \n", 1244 | " \n", 1245 | " \n", 1246 | " \n", 1247 | " \n", 1248 | "
countlabel
0 432138 Thursday
1 430728 Wednesday
2 428295 Friday
3 424923 Tuesday
4 379130 Monday
5 368239 Saturday
6 282701 Sunday
\n", 1249 | "

7 rows \u00d7 2 columns

\n", 1250 | "
" 1251 | ], 1252 | "metadata": {}, 1253 | "output_type": "pyout", 1254 | "prompt_number": 5, 1255 | "text": [ 1256 | " count label\n", 1257 | "0 432138 Thursday\n", 1258 | "1 430728 Wednesday\n", 1259 | "2 428295 Friday\n", 1260 | "3 424923 Tuesday\n", 1261 | "4 379130 Monday\n", 1262 | "5 368239 Saturday\n", 1263 | "6 282701 Sunday\n", 1264 | "\n", 1265 | "[7 rows x 2 columns]" 1266 | ] 1267 | } 1268 | ], 1269 | "prompt_number": 5 1270 | }, 1271 | { 1272 | "cell_type": "code", 1273 | "collapsed": false, 1274 | "input": [ 1275 | "weekdays = weekdays.reindex_axis(sorted(weekdays.columns, reverse=True), axis=1)\n", 1276 | "weekdays" 1277 | ], 1278 | "language": "python", 1279 | "metadata": {}, 1280 | "outputs": [ 1281 | { 1282 | "html": [ 1283 | "
\n", 1284 | "\n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | "
labelcount
0 Thursday 432138
1 Wednesday 430728
2 Friday 428295
3 Tuesday 424923
4 Monday 379130
5 Saturday 368239
6 Sunday 282701
\n", 1330 | "

7 rows \u00d7 2 columns

\n", 1331 | "
" 1332 | ], 1333 | "metadata": {}, 1334 | "output_type": "pyout", 1335 | "prompt_number": 6, 1336 | "text": [ 1337 | " label count\n", 1338 | "0 Thursday 432138\n", 1339 | "1 Wednesday 430728\n", 1340 | "2 Friday 428295\n", 1341 | "3 Tuesday 424923\n", 1342 | "4 Monday 379130\n", 1343 | "5 Saturday 368239\n", 1344 | "6 Sunday 282701\n", 1345 | "\n", 1346 | "[7 rows x 2 columns]" 1347 | ] 1348 | } 1349 | ], 1350 | "prompt_number": 6 1351 | }, 1352 | { 1353 | "cell_type": "code", 1354 | "collapsed": false, 1355 | "input": [ 1356 | "weekdays = weekdays.reindex_axis([4,3,1,0,2,5,6], axis=0)\n", 1357 | "weekdays" 1358 | ], 1359 | "language": "python", 1360 | "metadata": {}, 1361 | "outputs": [ 1362 | { 1363 | "html": [ 1364 | "
\n", 1365 | "\n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | "
labelcount
4 Monday 379130
3 Tuesday 424923
1 Wednesday 430728
0 Thursday 432138
2 Friday 428295
5 Saturday 368239
6 Sunday 282701
\n", 1411 | "

7 rows \u00d7 2 columns

\n", 1412 | "
" 1413 | ], 1414 | "metadata": {}, 1415 | "output_type": "pyout", 1416 | "prompt_number": 7, 1417 | "text": [ 1418 | " label count\n", 1419 | "4 Monday 379130\n", 1420 | "3 Tuesday 424923\n", 1421 | "1 Wednesday 430728\n", 1422 | "0 Thursday 432138\n", 1423 | "2 Friday 428295\n", 1424 | "5 Saturday 368239\n", 1425 | "6 Sunday 282701\n", 1426 | "\n", 1427 | "[7 rows x 2 columns]" 1428 | ] 1429 | } 1430 | ], 1431 | "prompt_number": 7 1432 | }, 1433 | { 1434 | "cell_type": "code", 1435 | "collapsed": false, 1436 | "input": [ 1437 | "weekdays.to_csv('weekdays.csv', index=False)" 1438 | ], 1439 | "language": "python", 1440 | "metadata": {}, 1441 | "outputs": [], 1442 | "prompt_number": 8 1443 | }, 1444 | { 1445 | "cell_type": "code", 1446 | "collapsed": false, 1447 | "input": [], 1448 | "language": "python", 1449 | "metadata": {}, 1450 | "outputs": [] 1451 | } 1452 | ], 1453 | "metadata": {} 1454 | } 1455 | ] 1456 | } -------------------------------------------------------------------------------- /weekdays.csv: -------------------------------------------------------------------------------- 1 | label,count 2 | Monday,379130 3 | Tuesday,424923 4 | Wednesday,430728 5 | Thursday,432138 6 | Friday,428295 7 | Saturday,368239 8 | Sunday,282701 9 | --------------------------------------------------------------------------------