{
"metadata": {
"name": "",
"signature": "sha256:bd2bee09b17a10aba763eceaf6658bde4a59f1eb432431b46e9e6d44856cf2ee"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This iPython Notebook was created as a companion to the [\"Advanced Python for Data Analysis\" tutorial and class](https://tswicegood.github.io/python-data-science-intro/) taught at Investigative Reporters and Editors' [Computer-Assisted Reporting conference](http://ire.org/conferences/nicar2015/schedule/) in March, 2015 in Atlanta, Ga."
]
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"A first look at Pandas"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we're comfortable with our coding environment, and we've dabbled with the iPython notebook, it's time to dive into pandas, the Python library created explicitly for data analysis.\n",
"\n",
"First in our interactive iPython notebook, we'll import pandas and call it \"pd\", a convention of pandas users that you'll quickly grow accustomed to."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Today, we're going to work with a fairly large text file of car accident data from the New Jersey Department of Transportation. This file contains reports from accidents in the Garden State between 2008 and 2013. [The data](https://s3.amazonaws.com/nicar15/njaccidents.csv), originally filed in handwritten reports by state troopers and then typed into a fixed-width database by clerks, is both decently large and very messy. (As an aside, if you're really interested in the genesis of this particular file, you can browse the makefile we used to create it.)\n",
"\n",
"Our analysis today will not be comprehensive or particularly accurate, but working with 1.7 million rows of dirty data is a pretty good way to illustrate what you can do with pandas and how it's going to make your life easier.\n",
"\n",
"The first thing we have to do is ingest our data from a source into a pandas DataFrame object. Think of a DataFrame (similar to R's Data Frame) as a virtual spreadsheet. It has columns with unique names and rows with unique row numbers, which we call \"the Index\". You can read in data from many kinds of sources: json, Excel files, html on the web, sql databases or others. Today, we're going to work with a CSV. First, we're going to create a variable with the name of our CSV, then we'll use pandas' .read_csv() function."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"datafile = \"njaccidents.csv\"\n",
"\n",
"df = pd.read_csv(datafile)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"/Users/tommeagher/.virtualenvs/pandas/lib/python2.7/site-packages/pandas/io/parsers.py:1139: DtypeWarning: Columns (6,17) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" data = self._reader.read(nrows)\n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Now we have a DataFrame object with the name ```df```. Let's use the ```.head()``` method to look at the first five rows of data. Does it look familliar?\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"
\n",
"
\n",
" \n",
" \n",
" | \n",
" case code | \n",
" County Name | \n",
" Municipality Name | \n",
" Crash Date | \n",
" Crash Day Of Week | \n",
" Crash Time | \n",
" Police Dept Code | \n",
" Police Department | \n",
" Police Station | \n",
" Total Killed | \n",
" ... | \n",
" Is Ramp | \n",
" Ramp To/From Route Name | \n",
" Ramp To/From Route Direction | \n",
" Posted Speed | \n",
" Posted Speed Cross Street | \n",
" Latitude | \n",
" Longitude | \n",
" Cell Phone In Use Flag | \n",
" Other Property Damage | \n",
" Reporting Badge No. | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 2008010108-026816 | \n",
" ATLANTIC | \n",
" ABSECON CITY | \n",
" 03/04/2008 | \n",
" TU | \n",
" 1539 | \n",
" 01 | \n",
" ATLANTIC CITY | \n",
" AIU | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 50 | \n",
" | \n",
" 39.41158 | \n",
" 74.49162 | \n",
" N | \n",
" NONE ... | \n",
" 384 | \n",
"
\n",
" \n",
" | 1 | \n",
" 2008010108-163190 | \n",
" ATLANTIC | \n",
" ABSECON CITY | \n",
" 12/19/2008 | \n",
" F | \n",
" 1114 | \n",
" 01 | \n",
" ATLANTIC CITY | \n",
" TRAFFIC | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 50 | \n",
" | \n",
" 39.39231 | \n",
" 74.48952 | \n",
" N | \n",
" NONE ... | \n",
" 739 | \n",
"
\n",
" \n",
" | 2 | \n",
" 2008010108-24779 | \n",
" ATLANTIC | \n",
" ABSECON CITY | \n",
" 11/25/2008 | \n",
" TU | \n",
" 0345 | \n",
" 99 | \n",
" NJ TRANSIT P.D. | \n",
" ATLANTIC CITY | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 10 | \n",
" 25 | \n",
" | \n",
" | \n",
" N | \n",
" ? ... | \n",
" 0053 | \n",
"
\n",
" \n",
" | 3 | \n",
" 2008010108-3901 | \n",
" ATLANTIC | \n",
" ABSECON CITY | \n",
" 03/31/2008 | \n",
" M | \n",
" 0105 | \n",
" 01 | \n",
" EAST WINDSOR | \n",
" TRAFFIC UNIT | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 0 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 551 | \n",
"
\n",
" \n",
" | 4 | \n",
" 2008010108-5016 | \n",
" ATLANTIC | \n",
" ABSECON CITY | \n",
" 01/25/2008 | \n",
" F | \n",
" 0942 | \n",
" 01 | \n",
" EGG HARBOR TWP | \n",
" HQ | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 50 | \n",
" 40 | \n",
" 39.43036 | \n",
" 74.52469 | \n",
" N | \n",
" NONE ... | \n",
" 1571 | \n",
"
\n",
" \n",
"
\n",
"
5 rows \u00d7 47 columns
\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
" case code County Name Municipality Name \\\n",
"0 2008010108-026816 ATLANTIC ABSECON CITY \n",
"1 2008010108-163190 ATLANTIC ABSECON CITY \n",
"2 2008010108-24779 ATLANTIC ABSECON CITY \n",
"3 2008010108-3901 ATLANTIC ABSECON CITY \n",
"4 2008010108-5016 ATLANTIC ABSECON CITY \n",
"\n",
" Crash Date Crash Day Of Week Crash Time Police Dept Code \\\n",
"0 03/04/2008 TU 1539 01 \n",
"1 12/19/2008 F 1114 01 \n",
"2 11/25/2008 TU 0345 99 \n",
"3 03/31/2008 M 0105 01 \n",
"4 01/25/2008 F 0942 01 \n",
"\n",
" Police Department Police Station Total Killed ... \\\n",
"0 ATLANTIC CITY AIU 0 ... \n",
"1 ATLANTIC CITY TRAFFIC 0 ... \n",
"2 NJ TRANSIT P.D. ATLANTIC CITY 0 ... \n",
"3 EAST WINDSOR TRAFFIC UNIT 0 ... \n",
"4 EGG HARBOR TWP HQ 0 ... \n",
"\n",
" Is Ramp Ramp To/From Route Name Ramp To/From Route Direction \\\n",
"0 \n",
"1 \n",
"2 \n",
"3 \n",
"4 \n",
"\n",
" Posted Speed Posted Speed Cross Street Latitude Longitude \\\n",
"0 50 39.41158 74.49162 \n",
"1 50 39.39231 74.48952 \n",
"2 10 25 \n",
"3 0 \n",
"4 50 40 39.43036 74.52469 \n",
"\n",
" Cell Phone In Use Flag Other Property Damage \\\n",
"0 N NONE ... \n",
"1 N NONE ... \n",
"2 N ? ... \n",
"3 N NONE ... \n",
"4 N NONE ... \n",
"\n",
" Reporting Badge No. \n",
"0 384 \n",
"1 739 \n",
"2 0053 \n",
"3 551 \n",
"4 1571 \n",
"\n",
"[5 rows x 47 columns]"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's a table!\n",
"\n",
"To see what we have here, let's make a list of the columns we have to work with the DataFrame's ```.columns``` attribute."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#this is a list that you can pluck items out of.\n",
"df.columns"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
"Index([u'case code', u'County Name', u'Municipality Name', u'Crash Date', u'Crash Day Of Week', u'Crash Time', u'Police Dept Code', u'Police Department', u'Police Station', u'Total Killed', u'Total Injured', u'Pedestrians Killed', u'Pedestrians Injured', u'Severity', u'Intersection', u'Alcohol Involved', u'HazMat Involved', u'Crash Type Code', u'Total Vehicles Involved', u'Crash Location', u'Location Direction', u'Route', u'Route Suffix', u'SRI (Std Rte Identifier)', u'MilePost', u'Road System', u'Road Character', u'Road Surface Type', u'Surface Condition', u'Light Condition', u'Environmental Condition', u'Road Divided By', u'Temporary Traffic Control Zone', u'Distance To Cross Street', u'Unit Of Measurement', u'Directn From Cross Street', u'Cross Street Name', u'Is Ramp', u'Ramp To/From Route Name', u'Ramp To/From Route Direction', u'Posted Speed', u'Posted Speed Cross Street', u'Latitude', u'Longitude', u'Cell Phone In Use Flag', u'Other Property Damage', u'Reporting Badge No.'], dtype='object')"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To get a quick overview of what kind of data is in each column, we can try the ```.describe()``` method."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df.describe()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Total Killed | \n",
" Total Injured | \n",
" Pedestrians Killed | \n",
" Pedestrians Injured | \n",
" Total Vehicles Involved | \n",
" Road System | \n",
" Posted Speed | \n",
"
\n",
" \n",
" \n",
" \n",
" | count | \n",
" 1707841.000000 | \n",
" 1707841.000000 | \n",
" 1707841.000000 | \n",
" 1707841.000000 | \n",
" 1707841.000000 | \n",
" 1707841.000000 | \n",
" 1707840.000000 | \n",
"
\n",
" \n",
" | mean | \n",
" 0.001968 | \n",
" 0.308403 | \n",
" 0.000489 | \n",
" 0.016251 | \n",
" 1.878721 | \n",
" 5.191971 | \n",
" 31.205212 | \n",
"
\n",
" \n",
" | std | \n",
" 0.047111 | \n",
" 0.698354 | \n",
" 0.022238 | \n",
" 0.130033 | \n",
" 0.538178 | \n",
" 2.499018 | \n",
" 17.872276 | \n",
"
\n",
" \n",
" | min | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" | 25% | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 2.000000 | \n",
" 2.000000 | \n",
" 25.000000 | \n",
"
\n",
" \n",
" | 50% | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 2.000000 | \n",
" 5.000000 | \n",
" 30.000000 | \n",
"
\n",
" \n",
" | 75% | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 2.000000 | \n",
" 7.000000 | \n",
" 45.000000 | \n",
"
\n",
" \n",
" | max | \n",
" 5.000000 | \n",
" 42.000000 | \n",
" 2.000000 | \n",
" 10.000000 | \n",
" 20.000000 | \n",
" 10.000000 | \n",
" 99.000000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": [
" Total Killed Total Injured Pedestrians Killed \\\n",
"count 1707841.000000 1707841.000000 1707841.000000 \n",
"mean 0.001968 0.308403 0.000489 \n",
"std 0.047111 0.698354 0.022238 \n",
"min 0.000000 0.000000 0.000000 \n",
"25% 0.000000 0.000000 0.000000 \n",
"50% 0.000000 0.000000 0.000000 \n",
"75% 0.000000 0.000000 0.000000 \n",
"max 5.000000 42.000000 2.000000 \n",
"\n",
" Pedestrians Injured Total Vehicles Involved Road System \\\n",
"count 1707841.000000 1707841.000000 1707841.000000 \n",
"mean 0.016251 1.878721 5.191971 \n",
"std 0.130033 0.538178 2.499018 \n",
"min 0.000000 0.000000 0.000000 \n",
"25% 0.000000 2.000000 2.000000 \n",
"50% 0.000000 2.000000 5.000000 \n",
"75% 0.000000 2.000000 7.000000 \n",
"max 10.000000 20.000000 10.000000 \n",
"\n",
" Posted Speed \n",
"count 1707840.000000 \n",
"mean 31.205212 \n",
"std 17.872276 \n",
"min 0.000000 \n",
"25% 25.000000 \n",
"50% 30.000000 \n",
"75% 45.000000 \n",
"max 99.000000 "
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In earlier versions of pandas (pre-15), ```.describe()``` gives you the summary statistics for the numeric columns. In newer versions of pandas, using the ```.describe(include='all')``` keyword argument will summarize all the columns.\n",
"\n",
"For categorical columns, like ```'Severity'```, you'll get the number of unique values and the most frequent."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['Severity'].describe()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": [
"count 1707841\n",
"unique 3\n",
"top P\n",
"freq 1326626\n",
"dtype: object"
]
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Try it again for ```'County Name'```."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['County Name'].describe()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"count 1707841\n",
"unique 21\n",
"top MIDDLESEX \n",
"freq 176402\n",
"dtype: object"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Say you want to select a single column. You can do this in one of two ways. If the column name is a string without spaces, you can use dot notation, like ```df.Severity```, for instance. Otherwise, you use a similar syntax to what we're used to with dicts, using brackets, like this: ```df['County Name']```. If you want to grab more than one column, give it a list of column names.\n",
"\n",
"Now, let's take a look at cleaning messy data in columns. Why does this return an empty DataFrame?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df[df['County Name']=='Passaic']"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" case code | \n",
" County Name | \n",
" Municipality Name | \n",
" Crash Date | \n",
" Crash Day Of Week | \n",
" Crash Time | \n",
" Police Dept Code | \n",
" Police Department | \n",
" Police Station | \n",
" Total Killed | \n",
" ... | \n",
" Is Ramp | \n",
" Ramp To/From Route Name | \n",
" Ramp To/From Route Direction | \n",
" Posted Speed | \n",
" Posted Speed Cross Street | \n",
" Latitude | \n",
" Longitude | \n",
" Cell Phone In Use Flag | \n",
" Other Property Damage | \n",
" Reporting Badge No. | \n",
"
\n",
" \n",
" \n",
" \n",
"
\n",
"
0 rows \u00d7 47 columns
\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"Empty DataFrame\n",
"Columns: [case code, County Name, Municipality Name, Crash Date, Crash Day Of Week, Crash Time, Police Dept Code, Police Department, Police Station, Total Killed, Total Injured, Pedestrians Killed, Pedestrians Injured, Severity, Intersection, Alcohol Involved, HazMat Involved, Crash Type Code, Total Vehicles Involved, Crash Location, Location Direction, Route, Route Suffix, SRI (Std Rte Identifier), MilePost, Road System, Road Character, Road Surface Type, Surface Condition, Light Condition, Environmental Condition, Road Divided By, Temporary Traffic Control Zone, Distance To Cross Street, Unit Of Measurement, Directn From Cross Street, Cross Street Name, Is Ramp, Ramp To/From Route Name, Ramp To/From Route Direction, Posted Speed, Posted Speed Cross Street, Latitude, Longitude, Cell Phone In Use Flag, Other Property Damage, Reporting Badge No.]\n",
"Index: []\n",
"\n",
"[0 rows x 47 columns]"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With some digging, by using something like ```df[df['County Name'].str.contains('PASSAIC')]```, you can get a DataFrame of rows that have ```PASSAIC``` in the ```'County Name'``` column."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df[df['County Name'].str.contains('PASSAIC')].head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" case code | \n",
" County Name | \n",
" Municipality Name | \n",
" Crash Date | \n",
" Crash Day Of Week | \n",
" Crash Time | \n",
" Police Dept Code | \n",
" Police Department | \n",
" Police Station | \n",
" Total Killed | \n",
" ... | \n",
" Is Ramp | \n",
" Ramp To/From Route Name | \n",
" Ramp To/From Route Direction | \n",
" Posted Speed | \n",
" Posted Speed Cross Street | \n",
" Latitude | \n",
" Longitude | \n",
" Cell Phone In Use Flag | \n",
" Other Property Damage | \n",
" Reporting Badge No. | \n",
"
\n",
" \n",
" \n",
" \n",
" | 242727 | \n",
" 2008160108-0002 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/01/2008 | \n",
" TU | \n",
" 0052 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 35 | \n",
" | \n",
" | \n",
" N | \n",
" SOUTHBOUND GUARDRAIL ... | \n",
" 5 | \n",
"
\n",
" \n",
" | 242728 | \n",
" 2008160108-0083 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/09/2008 | \n",
" W | \n",
" 0550 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 0 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 11 | \n",
"
\n",
" \n",
" | 242729 | \n",
" 2008160108-0155 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/17/2008 | \n",
" TH | \n",
" 0127 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 40 | \n",
" 25 | \n",
" 41.01790 | \n",
" 74.31252 | \n",
" N | \n",
" UTILITY POLE # BMP560B MAILBOX FENCE CEMENT RE... | \n",
" 11 | \n",
"
\n",
" \n",
" | 242730 | \n",
" 2008160108-0159 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/17/2008 | \n",
" TH | \n",
" 0909 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.01119 | \n",
" 74.32027 | \n",
" N | \n",
" NONE ... | \n",
" 10 | \n",
"
\n",
" \n",
" | 242731 | \n",
" 2008160108-0166 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/17/2008 | \n",
" TH | \n",
" 1814 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.03530 | \n",
" 74.34463 | \n",
" N | \n",
" NONE ... | \n",
" 11 | \n",
"
\n",
" \n",
"
\n",
"
5 rows \u00d7 47 columns
\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 9,
"text": [
" case code County Name \\\n",
"242727 2008160108-0002 PASSAIC \n",
"242728 2008160108-0083 PASSAIC \n",
"242729 2008160108-0155 PASSAIC \n",
"242730 2008160108-0159 PASSAIC \n",
"242731 2008160108-0166 PASSAIC \n",
"\n",
" Municipality Name Crash Date Crash Day Of Week Crash Time \\\n",
"242727 BLOOMINGDALE BORO 01/01/2008 TU 0052 \n",
"242728 BLOOMINGDALE BORO 01/09/2008 W 0550 \n",
"242729 BLOOMINGDALE BORO 01/17/2008 TH 0127 \n",
"242730 BLOOMINGDALE BORO 01/17/2008 TH 0909 \n",
"242731 BLOOMINGDALE BORO 01/17/2008 TH 1814 \n",
"\n",
" Police Dept Code Police Department Police Station \\\n",
"242727 01 BLOOMINGDALE \n",
"242728 01 BLOOMINGDALE \n",
"242729 01 BLOOMINGDALE \n",
"242730 01 BLOOMINGDALE \n",
"242731 01 BLOOMINGDALE \n",
"\n",
" Total Killed ... Is Ramp Ramp To/From Route Name \\\n",
"242727 0 ... \n",
"242728 0 ... \n",
"242729 0 ... \n",
"242730 0 ... \n",
"242731 0 ... \n",
"\n",
" Ramp To/From Route Direction Posted Speed Posted Speed Cross Street \\\n",
"242727 35 35 \n",
"242728 0 \n",
"242729 40 25 \n",
"242730 35 25 \n",
"242731 35 25 \n",
"\n",
" Latitude Longitude Cell Phone In Use Flag \\\n",
"242727 N \n",
"242728 N \n",
"242729 41.01790 74.31252 N \n",
"242730 41.01119 74.32027 N \n",
"242731 41.03530 74.34463 N \n",
"\n",
" Other Property Damage Reporting Badge No. \n",
"242727 SOUTHBOUND GUARDRAIL ... 5 \n",
"242728 NONE ... 11 \n",
"242729 UTILITY POLE # BMP560B MAILBOX FENCE CEMENT RE... 11 \n",
"242730 NONE ... 10 \n",
"242731 NONE ... 11 \n",
"\n",
"[5 rows x 47 columns]"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When we select a single row with the ```.ix[]``` index function, you'll notice that the ```'County Name'``` column includes a bunch of trailing whitespace: ```'PASSAIC '```. Normally, in Python, you might solve this by writing a for loop to cycle through every item in the column and clean it up one at a time.\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['County Name'][df['County Name'].str.contains('PASSAIC')].ix[242727]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 10,
"text": [
"'PASSAIC '"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But with Pandas, we can do the same thing much faster. We'll use the ```.map()``` function to perform the ```.strip()``` method on every string in the column at the same time."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['County Name']=df['County Name'].map(str.strip)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once our ```'County Name'``` field is cleaned, we can filter the table by its values, returning a view of the DataFrame that only shows rows with accidents that happened in Passaic County.\n",
"\n",
"You can try something similar by finding Police Departments that contain the string ```BLOOMINGDALE``` and cleaning them up with the strip function, if you want to."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['Police Department'][df['Police Department'].str.contains('BLOOMINGDALE')]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 12,
"text": [
"242727 BLOOMINGDALE \n",
"242728 BLOOMINGDALE \n",
"242729 BLOOMINGDALE \n",
"242730 BLOOMINGDALE \n",
"242731 BLOOMINGDALE \n",
"242732 BLOOMINGDALE \n",
"242733 BLOOMINGDALE \n",
"242734 BLOOMINGDALE \n",
"242735 BLOOMINGDALE \n",
"242736 BLOOMINGDALE \n",
"242737 BLOOMINGDALE \n",
"242738 BLOOMINGDALE \n",
"242739 BLOOMINGDALE \n",
"242740 BLOOMINGDALE \n",
"242741 BLOOMINGDALE \n",
"...\n",
"1650731 BLOOMINGDALE BORO PD \n",
"1650732 BLOOMINGDALE BORO PD \n",
"1650733 BLOOMINGDALE BORO PD \n",
"1650734 BLOOMINGDALE BORO PD \n",
"1650735 BLOOMINGDALE BORO PD \n",
"1650736 BLOOMINGDALE BORO PD \n",
"1650737 BLOOMINGDALE BORO PD \n",
"1650738 BLOOMINGDALE BORO PD \n",
"1650739 BLOOMINGDALE BORO PD \n",
"1650740 BLOOMINGDALE BORO PD \n",
"1650741 BLOOMINGDALE BORO PD \n",
"1650742 BLOOMINGDALE BORO PD \n",
"1650743 BLOOMINGDALE BORO PD \n",
"1650744 BLOOMINGDALE BORO PD \n",
"1665827 BLOOMINGDALE BORO PD \n",
"Name: Police Department, Length: 844, dtype: object"
]
}
],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once our 'County Name' field is cleaned, we can filter the table by its values, returning a view of the DataFrame that only shows rows with accidents that happened in Passaic County, with a comparison using ```==```."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df[df['County Name']=='PASSAIC']"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" case code | \n",
" County Name | \n",
" Municipality Name | \n",
" Crash Date | \n",
" Crash Day Of Week | \n",
" Crash Time | \n",
" Police Dept Code | \n",
" Police Department | \n",
" Police Station | \n",
" Total Killed | \n",
" ... | \n",
" Is Ramp | \n",
" Ramp To/From Route Name | \n",
" Ramp To/From Route Direction | \n",
" Posted Speed | \n",
" Posted Speed Cross Street | \n",
" Latitude | \n",
" Longitude | \n",
" Cell Phone In Use Flag | \n",
" Other Property Damage | \n",
" Reporting Badge No. | \n",
"
\n",
" \n",
" \n",
" \n",
" | 242727 | \n",
" 2008160108-0002 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/01/2008 | \n",
" TU | \n",
" 0052 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 35 | \n",
" | \n",
" | \n",
" N | \n",
" SOUTHBOUND GUARDRAIL ... | \n",
" 5 | \n",
"
\n",
" \n",
" | 242728 | \n",
" 2008160108-0083 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/09/2008 | \n",
" W | \n",
" 0550 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 0 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 11 | \n",
"
\n",
" \n",
" | 242729 | \n",
" 2008160108-0155 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/17/2008 | \n",
" TH | \n",
" 0127 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 40 | \n",
" 25 | \n",
" 41.01790 | \n",
" 74.31252 | \n",
" N | \n",
" UTILITY POLE # BMP560B MAILBOX FENCE CEMENT RE... | \n",
" 11 | \n",
"
\n",
" \n",
" | 242730 | \n",
" 2008160108-0159 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/17/2008 | \n",
" TH | \n",
" 0909 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.01119 | \n",
" 74.32027 | \n",
" N | \n",
" NONE ... | \n",
" 10 | \n",
"
\n",
" \n",
" | 242731 | \n",
" 2008160108-0166 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/17/2008 | \n",
" TH | \n",
" 1814 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.03530 | \n",
" 74.34463 | \n",
" N | \n",
" NONE ... | \n",
" 11 | \n",
"
\n",
" \n",
" | 242732 | \n",
" 2008160108-0194 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 01/21/2008 | \n",
" M | \n",
" 1318 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 0 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 11 | \n",
"
\n",
" \n",
" | 242733 | \n",
" 2008160108-0273 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/01/2008 | \n",
" F | \n",
" 0905 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 35 | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 12 | \n",
"
\n",
" \n",
" | 242734 | \n",
" 2008160108-0307 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/05/2008 | \n",
" TU | \n",
" 1459 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 0 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 11 | \n",
"
\n",
" \n",
" | 242735 | \n",
" 2008160108-0310 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/05/2008 | \n",
" TU | \n",
" 1728 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.00775 | \n",
" 74.33502 | \n",
" N | \n",
" NONE ... | \n",
" 8 | \n",
"
\n",
" \n",
" | 242736 | \n",
" 2008160108-0330 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/08/2008 | \n",
" F | \n",
" 1309 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.00741 | \n",
" 74.34208 | \n",
" N | \n",
" NONE ... | \n",
" 8 | \n",
"
\n",
" \n",
" | 242737 | \n",
" 2008160108-0360 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/11/2008 | \n",
" M | \n",
" 1835 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.00690 | \n",
" 74.34344 | \n",
" N | \n",
" ? ... | \n",
" 6 | \n",
"
\n",
" \n",
" | 242738 | \n",
" 2008160108-0365 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/12/2008 | \n",
" TU | \n",
" 1221 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 30 | \n",
" 35 | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 12 | \n",
"
\n",
" \n",
" | 242739 | \n",
" 2008160108-0369 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/12/2008 | \n",
" TU | \n",
" 1823 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 15 | \n",
" 41.01493 | \n",
" 74.35526 | \n",
" N | \n",
" ? ... | \n",
" 6 | \n",
"
\n",
" \n",
" | 242740 | \n",
" 2008160108-0370 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/12/2008 | \n",
" TU | \n",
" 2217 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 30 | \n",
" 41.00387 | \n",
" 74.33420 | \n",
" N | \n",
" NONE ... | \n",
" | \n",
"
\n",
" \n",
" | 242741 | \n",
" 2008160108-0381 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/14/2008 | \n",
" TH | \n",
" 0808 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.01119 | \n",
" 74.32027 | \n",
" N | \n",
" NONE ... | \n",
" 11 | \n",
"
\n",
" \n",
" | 242742 | \n",
" 2008160108-0393 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/16/2008 | \n",
" SA | \n",
" 0748 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 25 | \n",
" 25 | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 12 | \n",
"
\n",
" \n",
" | 242743 | \n",
" 2008160108-0448 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/21/2008 | \n",
" TH | \n",
" 1122 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" | \n",
" 41.00673 | \n",
" 74.35107 | \n",
" N | \n",
" NONE ... | \n",
" 9 | \n",
"
\n",
" \n",
" | 242744 | \n",
" 2008160108-0457 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/22/2008 | \n",
" F | \n",
" 1228 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 30 | \n",
" 41.00141 | \n",
" 74.32169 | \n",
" N | \n",
" NONE ... | \n",
" 10 | \n",
"
\n",
" \n",
" | 242745 | \n",
" 2008160108-0476 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/25/2008 | \n",
" M | \n",
" 1142 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.00690 | \n",
" 74.34344 | \n",
" N | \n",
" ? ... | \n",
" 6 | \n",
"
\n",
" \n",
" | 242746 | \n",
" 2008160108-0491 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/27/2008 | \n",
" W | \n",
" 0133 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 25 | \n",
" 25 | \n",
" | \n",
" | \n",
" N | \n",
" NONE NOTED ... | \n",
" 5 | \n",
"
\n",
" \n",
" | 242747 | \n",
" 2008160108-0504 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 02/28/2008 | \n",
" TH | \n",
" 2020 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 0 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" UNKNOWN ... | \n",
" 8 | \n",
"
\n",
" \n",
" | 242748 | \n",
" 2008160108-0538 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 03/05/2008 | \n",
" W | \n",
" 0806 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 30 | \n",
" 35 | \n",
" 41.00384 | \n",
" 74.33426 | \n",
" N | \n",
" NONE ... | \n",
" 9 | \n",
"
\n",
" \n",
" | 242749 | \n",
" 2008160108-0619 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 03/14/2008 | \n",
" F | \n",
" 0708 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 25 | \n",
" 41.03262 | \n",
" 74.34254 | \n",
" N | \n",
" KAMPFE LAKE ASSOCIATION PROPERTY-TREES/LANDSCA... | \n",
" 6 | \n",
"
\n",
" \n",
" | 242750 | \n",
" 2008160108-0640 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 03/15/2008 | \n",
" SA | \n",
" 1537 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 25 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 9 | \n",
"
\n",
" \n",
" | 242751 | \n",
" 2008160108-0687 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 03/22/2008 | \n",
" SA | \n",
" 0431 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 25 | \n",
" 35 | \n",
" | \n",
" | \n",
" N | \n",
" UTILITY POLE# BMP331P WAS STRUCK AND SUSTAINED... | \n",
" 10 | \n",
"
\n",
" \n",
" | 242752 | \n",
" 2008160108-0719 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 03/26/2008 | \n",
" W | \n",
" 1340 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 30 | \n",
" 25 | \n",
" 41.00247 | \n",
" 74.32864 | \n",
" N | \n",
" NONE ... | \n",
" 8 | \n",
"
\n",
" \n",
" | 242753 | \n",
" 2008160108-0743 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 03/28/2008 | \n",
" F | \n",
" 0700 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 35 | \n",
" | \n",
" | \n",
" N | \n",
" DAMAGE TO LANDSCAPING OF 587 GLENWILD AVE. ... | \n",
" | \n",
"
\n",
" \n",
" | 242754 | \n",
" 2008160108-0762 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 03/29/2008 | \n",
" SA | \n",
" | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 25 | \n",
" 35 | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" | \n",
"
\n",
" \n",
" | 242755 | \n",
" 2008160108-0797 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 04/02/2008 | \n",
" W | \n",
" 0814 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 15 | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" | \n",
"
\n",
" \n",
" | 242756 | \n",
" 2008160108-0798 | \n",
" PASSAIC | \n",
" BLOOMINGDALE BORO | \n",
" 04/02/2008 | \n",
" W | \n",
" 0908 | \n",
" 01 | \n",
" BLOOMINGDALE | \n",
" | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 35 | \n",
" 35 | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 12 | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 1669227 | \n",
" 20131616B060-2013-01720A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 07/11/2013 | \n",
" TH | \n",
" 2240 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 6732 | \n",
"
\n",
" \n",
" | 1669228 | \n",
" 20131616B060-2013-01772A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 07/17/2013 | \n",
" W | \n",
" 1827 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7190 | \n",
"
\n",
" \n",
" | 1669229 | \n",
" 20131616B060-2013-01787A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 07/17/2013 | \n",
" W | \n",
" 1107 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 6701 | \n",
"
\n",
" \n",
" | 1669230 | \n",
" 20131616B060-2013-01848A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 07/24/2013 | \n",
" W | \n",
" 1840 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 5349 | \n",
"
\n",
" \n",
" | 1669231 | \n",
" 20131616B060-2013-01865A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 07/26/2013 | \n",
" F | \n",
" 2014 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7106 | \n",
"
\n",
" \n",
" | 1669232 | \n",
" 20131616B060-2013-01869A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 07/27/2013 | \n",
" SA | \n",
" 1641 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 6227 | \n",
"
\n",
" \n",
" | 1669233 | \n",
" 20131616B060-2013-01922A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/01/2013 | \n",
" TH | \n",
" 0053 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 1 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE. ... | \n",
" 7238 | \n",
"
\n",
" \n",
" | 1669234 | \n",
" 20131616B060-2013-01923A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/01/2013 | \n",
" TH | \n",
" 1104 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" F | \n",
" JACKSON AVE | \n",
" EB | \n",
" 65 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 6962 | \n",
"
\n",
" \n",
" | 1669235 | \n",
" 20131616B060-2013-01937A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/02/2013 | \n",
" F | \n",
" 1818 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 6185 | \n",
"
\n",
" \n",
" | 1669236 | \n",
" 20131616B060-2013-01963A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/05/2013 | \n",
" M | \n",
" 2119 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 7055 | \n",
"
\n",
" \n",
" | 1669237 | \n",
" 20131616B060-2013-01964A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/05/2013 | \n",
" M | \n",
" 2119 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 65 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" NONE ... | \n",
" 6962 | \n",
"
\n",
" \n",
" | 1669238 | \n",
" 20131616B060-2013-01966A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/06/2013 | \n",
" TU | \n",
" 0005 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" APPROXIMATELY 15 FEET OF GUARDRAIL NJDOT TRE... | \n",
" 6084 | \n",
"
\n",
" \n",
" | 1669239 | \n",
" 20131616B060-2013-02030A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/12/2013 | \n",
" M | \n",
" 1733 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7071 | \n",
"
\n",
" \n",
" | 1669240 | \n",
" 20131616B060-2013-02047A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/14/2013 | \n",
" W | \n",
" 0618 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 6701 | \n",
"
\n",
" \n",
" | 1669241 | \n",
" 20131616B060-2013-02131A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/25/2013 | \n",
" S | \n",
" 2239 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7106 | \n",
"
\n",
" \n",
" | 1669242 | \n",
" 20131616B060-2013-02146A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/27/2013 | \n",
" TU | \n",
" 1016 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7167 | \n",
"
\n",
" \n",
" | 1669243 | \n",
" 20131616B060-2013-02184A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/01/2013 | \n",
" S | \n",
" 1004 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7178 | \n",
"
\n",
" \n",
" | 1669244 | \n",
" 20131616B060-2013-02223A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/06/2013 | \n",
" F | \n",
" 0906 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 6701 | \n",
"
\n",
" \n",
" | 1669245 | \n",
" 20131616B060-2013-02227A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/06/2013 | \n",
" F | \n",
" 1308 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 6660 | \n",
"
\n",
" \n",
" | 1669246 | \n",
" 20131616B060-2013-02283A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/12/2013 | \n",
" TH | \n",
" 2015 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7055 | \n",
"
\n",
" \n",
" | 1669247 | \n",
" 20131616B060-2013-02297A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/13/2013 | \n",
" F | \n",
" 1533 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" T | \n",
" SQUIRRELWOOD ROAD | \n",
" SB | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 6969 | \n",
"
\n",
" \n",
" | 1669248 | \n",
" 20131616B060-2013-02306A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/15/2013 | \n",
" S | \n",
" 1933 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7071 | \n",
"
\n",
" \n",
" | 1669249 | \n",
" 20131616B060-2013-02385A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/22/2013 | \n",
" S | \n",
" 0330 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 6701 | \n",
"
\n",
" \n",
" | 1669250 | \n",
" 20131616B060-2013-02394A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/19/2013 | \n",
" TH | \n",
" 1903 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7167 | \n",
"
\n",
" \n",
" | 1669251 | \n",
" 20131616B060-2013-02415A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/24/2013 | \n",
" TU | \n",
" 1608 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 65 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7319 | \n",
"
\n",
" \n",
" | 1669252 | \n",
" 20131616B060-2013-02426A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/25/2013 | \n",
" W | \n",
" 0720 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7190 | \n",
"
\n",
" \n",
" | 1669253 | \n",
" 20131616B060-2013-02432A | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 09/26/2013 | \n",
" TH | \n",
" 0712 | \n",
" 2 | \n",
" NEW JERSEY STATE POLICE | \n",
" TOTOWA-SUB | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 55 | \n",
" | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 7075 | \n",
"
\n",
" \n",
" | 1669254 | \n",
" 20131616PCSD13-04189 | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 07/09/2013 | \n",
" TU | \n",
" 1155 | \n",
" 3 | \n",
" PASSAIC CO SHERIFFS DEPT | \n",
" SHERIFFS PATROL | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 25 | \n",
" 25 | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" | \n",
"
\n",
" \n",
" | 1669255 | \n",
" 20131616PCSD13-04479 | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 07/21/2013 | \n",
" S | \n",
" 1037 | \n",
" 3 | \n",
" PASSAIC CO SHERIFFS DEPT | \n",
" COUNTY PATROL | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 10 | \n",
" 25 | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 115 | \n",
"
\n",
" \n",
" | 1669256 | \n",
" 20131616PCSD13-05367 | \n",
" PASSAIC | \n",
" WOODLAND PARK BORO | \n",
" 08/27/2013 | \n",
" TU | \n",
" 1950 | \n",
" 3 | \n",
" PASSAIC CO SHERIFFS DEPT | \n",
" COUNTY PATROL | \n",
" 0 | \n",
" ... | \n",
" | \n",
" | \n",
" | \n",
" 25 | \n",
" 25 | \n",
" | \n",
" | \n",
" N | \n",
" ... | \n",
" 949 | \n",
"
\n",
" \n",
"
\n",
"
113217 rows \u00d7 47 columns
\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 13,
"text": [
" case code County Name \\\n",
"242727 2008160108-0002 PASSAIC \n",
"242728 2008160108-0083 PASSAIC \n",
"242729 2008160108-0155 PASSAIC \n",
"242730 2008160108-0159 PASSAIC \n",
"242731 2008160108-0166 PASSAIC \n",
"242732 2008160108-0194 PASSAIC \n",
"242733 2008160108-0273 PASSAIC \n",
"242734 2008160108-0307 PASSAIC \n",
"242735 2008160108-0310 PASSAIC \n",
"242736 2008160108-0330 PASSAIC \n",
"242737 2008160108-0360 PASSAIC \n",
"242738 2008160108-0365 PASSAIC \n",
"242739 2008160108-0369 PASSAIC \n",
"242740 2008160108-0370 PASSAIC \n",
"242741 2008160108-0381 PASSAIC \n",
"242742 2008160108-0393 PASSAIC \n",
"242743 2008160108-0448 PASSAIC \n",
"242744 2008160108-0457 PASSAIC \n",
"242745 2008160108-0476 PASSAIC \n",
"242746 2008160108-0491 PASSAIC \n",
"242747 2008160108-0504 PASSAIC \n",
"242748 2008160108-0538 PASSAIC \n",
"242749 2008160108-0619 PASSAIC \n",
"242750 2008160108-0640 PASSAIC \n",
"242751 2008160108-0687 PASSAIC \n",
"242752 2008160108-0719 PASSAIC \n",
"242753 2008160108-0743 PASSAIC \n",
"242754 2008160108-0762 PASSAIC \n",
"242755 2008160108-0797 PASSAIC \n",
"242756 2008160108-0798 PASSAIC \n",
"... ... ... \n",
"1669227 20131616B060-2013-01720A PASSAIC \n",
"1669228 20131616B060-2013-01772A PASSAIC \n",
"1669229 20131616B060-2013-01787A PASSAIC \n",
"1669230 20131616B060-2013-01848A PASSAIC \n",
"1669231 20131616B060-2013-01865A PASSAIC \n",
"1669232 20131616B060-2013-01869A PASSAIC \n",
"1669233 20131616B060-2013-01922A PASSAIC \n",
"1669234 20131616B060-2013-01923A PASSAIC \n",
"1669235 20131616B060-2013-01937A PASSAIC \n",
"1669236 20131616B060-2013-01963A PASSAIC \n",
"1669237 20131616B060-2013-01964A PASSAIC \n",
"1669238 20131616B060-2013-01966A PASSAIC \n",
"1669239 20131616B060-2013-02030A PASSAIC \n",
"1669240 20131616B060-2013-02047A PASSAIC \n",
"1669241 20131616B060-2013-02131A PASSAIC \n",
"1669242 20131616B060-2013-02146A PASSAIC \n",
"1669243 20131616B060-2013-02184A PASSAIC \n",
"1669244 20131616B060-2013-02223A PASSAIC \n",
"1669245 20131616B060-2013-02227A PASSAIC \n",
"1669246 20131616B060-2013-02283A PASSAIC \n",
"1669247 20131616B060-2013-02297A PASSAIC \n",
"1669248 20131616B060-2013-02306A PASSAIC \n",
"1669249 20131616B060-2013-02385A PASSAIC \n",
"1669250 20131616B060-2013-02394A PASSAIC \n",
"1669251 20131616B060-2013-02415A PASSAIC \n",
"1669252 20131616B060-2013-02426A PASSAIC \n",
"1669253 20131616B060-2013-02432A PASSAIC \n",
"1669254 20131616PCSD13-04189 PASSAIC \n",
"1669255 20131616PCSD13-04479 PASSAIC \n",
"1669256 20131616PCSD13-05367 PASSAIC \n",
"\n",
" Municipality Name Crash Date Crash Day Of Week Crash Time \\\n",
"242727 BLOOMINGDALE BORO 01/01/2008 TU 0052 \n",
"242728 BLOOMINGDALE BORO 01/09/2008 W 0550 \n",
"242729 BLOOMINGDALE BORO 01/17/2008 TH 0127 \n",
"242730 BLOOMINGDALE BORO 01/17/2008 TH 0909 \n",
"242731 BLOOMINGDALE BORO 01/17/2008 TH 1814 \n",
"242732 BLOOMINGDALE BORO 01/21/2008 M 1318 \n",
"242733 BLOOMINGDALE BORO 02/01/2008 F 0905 \n",
"242734 BLOOMINGDALE BORO 02/05/2008 TU 1459 \n",
"242735 BLOOMINGDALE BORO 02/05/2008 TU 1728 \n",
"242736 BLOOMINGDALE BORO 02/08/2008 F 1309 \n",
"242737 BLOOMINGDALE BORO 02/11/2008 M 1835 \n",
"242738 BLOOMINGDALE BORO 02/12/2008 TU 1221 \n",
"242739 BLOOMINGDALE BORO 02/12/2008 TU 1823 \n",
"242740 BLOOMINGDALE BORO 02/12/2008 TU 2217 \n",
"242741 BLOOMINGDALE BORO 02/14/2008 TH 0808 \n",
"242742 BLOOMINGDALE BORO 02/16/2008 SA 0748 \n",
"242743 BLOOMINGDALE BORO 02/21/2008 TH 1122 \n",
"242744 BLOOMINGDALE BORO 02/22/2008 F 1228 \n",
"242745 BLOOMINGDALE BORO 02/25/2008 M 1142 \n",
"242746 BLOOMINGDALE BORO 02/27/2008 W 0133 \n",
"242747 BLOOMINGDALE BORO 02/28/2008 TH 2020 \n",
"242748 BLOOMINGDALE BORO 03/05/2008 W 0806 \n",
"242749 BLOOMINGDALE BORO 03/14/2008 F 0708 \n",
"242750 BLOOMINGDALE BORO 03/15/2008 SA 1537 \n",
"242751 BLOOMINGDALE BORO 03/22/2008 SA 0431 \n",
"242752 BLOOMINGDALE BORO 03/26/2008 W 1340 \n",
"242753 BLOOMINGDALE BORO 03/28/2008 F 0700 \n",
"242754 BLOOMINGDALE BORO 03/29/2008 SA \n",
"242755 BLOOMINGDALE BORO 04/02/2008 W 0814 \n",
"242756 BLOOMINGDALE BORO 04/02/2008 W 0908 \n",
"... ... ... ... ... \n",
"1669227 WOODLAND PARK BORO 07/11/2013 TH 2240 \n",
"1669228 WOODLAND PARK BORO 07/17/2013 W 1827 \n",
"1669229 WOODLAND PARK BORO 07/17/2013 W 1107 \n",
"1669230 WOODLAND PARK BORO 07/24/2013 W 1840 \n",
"1669231 WOODLAND PARK BORO 07/26/2013 F 2014 \n",
"1669232 WOODLAND PARK BORO 07/27/2013 SA 1641 \n",
"1669233 WOODLAND PARK BORO 08/01/2013 TH 0053 \n",
"1669234 WOODLAND PARK BORO 08/01/2013 TH 1104 \n",
"1669235 WOODLAND PARK BORO 08/02/2013 F 1818 \n",
"1669236 WOODLAND PARK BORO 08/05/2013 M 2119 \n",
"1669237 WOODLAND PARK BORO 08/05/2013 M 2119 \n",
"1669238 WOODLAND PARK BORO 08/06/2013 TU 0005 \n",
"1669239 WOODLAND PARK BORO 08/12/2013 M 1733 \n",
"1669240 WOODLAND PARK BORO 08/14/2013 W 0618 \n",
"1669241 WOODLAND PARK BORO 08/25/2013 S 2239 \n",
"1669242 WOODLAND PARK BORO 08/27/2013 TU 1016 \n",
"1669243 WOODLAND PARK BORO 09/01/2013 S 1004 \n",
"1669244 WOODLAND PARK BORO 09/06/2013 F 0906 \n",
"1669245 WOODLAND PARK BORO 09/06/2013 F 1308 \n",
"1669246 WOODLAND PARK BORO 09/12/2013 TH 2015 \n",
"1669247 WOODLAND PARK BORO 09/13/2013 F 1533 \n",
"1669248 WOODLAND PARK BORO 09/15/2013 S 1933 \n",
"1669249 WOODLAND PARK BORO 09/22/2013 S 0330 \n",
"1669250 WOODLAND PARK BORO 09/19/2013 TH 1903 \n",
"1669251 WOODLAND PARK BORO 09/24/2013 TU 1608 \n",
"1669252 WOODLAND PARK BORO 09/25/2013 W 0720 \n",
"1669253 WOODLAND PARK BORO 09/26/2013 TH 0712 \n",
"1669254 WOODLAND PARK BORO 07/09/2013 TU 1155 \n",
"1669255 WOODLAND PARK BORO 07/21/2013 S 1037 \n",
"1669256 WOODLAND PARK BORO 08/27/2013 TU 1950 \n",
"\n",
" Police Dept Code Police Department Police Station \\\n",
"242727 01 BLOOMINGDALE \n",
"242728 01 BLOOMINGDALE \n",
"242729 01 BLOOMINGDALE \n",
"242730 01 BLOOMINGDALE \n",
"242731 01 BLOOMINGDALE \n",
"242732 01 BLOOMINGDALE \n",
"242733 01 BLOOMINGDALE \n",
"242734 01 BLOOMINGDALE \n",
"242735 01 BLOOMINGDALE \n",
"242736 01 BLOOMINGDALE \n",
"242737 01 BLOOMINGDALE \n",
"242738 01 BLOOMINGDALE \n",
"242739 01 BLOOMINGDALE \n",
"242740 01 BLOOMINGDALE \n",
"242741 01 BLOOMINGDALE \n",
"242742 01 BLOOMINGDALE \n",
"242743 01 BLOOMINGDALE \n",
"242744 01 BLOOMINGDALE \n",
"242745 01 BLOOMINGDALE \n",
"242746 01 BLOOMINGDALE \n",
"242747 01 BLOOMINGDALE \n",
"242748 01 BLOOMINGDALE \n",
"242749 01 BLOOMINGDALE \n",
"242750 01 BLOOMINGDALE \n",
"242751 01 BLOOMINGDALE \n",
"242752 01 BLOOMINGDALE \n",
"242753 01 BLOOMINGDALE \n",
"242754 01 BLOOMINGDALE \n",
"242755 01 BLOOMINGDALE \n",
"242756 01 BLOOMINGDALE \n",
"... ... ... ... \n",
"1669227 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669228 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669229 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669230 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669231 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669232 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669233 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669234 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669235 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669236 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669237 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669238 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669239 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669240 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669241 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669242 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669243 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669244 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669245 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669246 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669247 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669248 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669249 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669250 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669251 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669252 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669253 2 NEW JERSEY STATE POLICE TOTOWA-SUB \n",
"1669254 3 PASSAIC CO SHERIFFS DEPT SHERIFFS PATROL \n",
"1669255 3 PASSAIC CO SHERIFFS DEPT COUNTY PATROL \n",
"1669256 3 PASSAIC CO SHERIFFS DEPT COUNTY PATROL \n",
"\n",
" Total Killed ... Is Ramp Ramp To/From Route Name \\\n",
"242727 0 ... \n",
"242728 0 ... \n",
"242729 0 ... \n",
"242730 0 ... \n",
"242731 0 ... \n",
"242732 0 ... \n",
"242733 0 ... \n",
"242734 0 ... \n",
"242735 0 ... \n",
"242736 0 ... \n",
"242737 0 ... \n",
"242738 0 ... \n",
"242739 0 ... \n",
"242740 0 ... \n",
"242741 0 ... \n",
"242742 0 ... \n",
"242743 0 ... \n",
"242744 0 ... \n",
"242745 0 ... \n",
"242746 0 ... \n",
"242747 0 ... \n",
"242748 0 ... \n",
"242749 0 ... \n",
"242750 0 ... \n",
"242751 0 ... \n",
"242752 0 ... \n",
"242753 0 ... \n",
"242754 0 ... \n",
"242755 0 ... \n",
"242756 0 ... \n",
"... ... ... ... ... \n",
"1669227 0 ... \n",
"1669228 0 ... \n",
"1669229 0 ... \n",
"1669230 0 ... \n",
"1669231 0 ... \n",
"1669232 0 ... \n",
"1669233 1 ... \n",
"1669234 0 ... F JACKSON AVE \n",
"1669235 0 ... \n",
"1669236 0 ... \n",
"1669237 0 ... \n",
"1669238 0 ... \n",
"1669239 0 ... \n",
"1669240 0 ... \n",
"1669241 0 ... \n",
"1669242 0 ... \n",
"1669243 0 ... \n",
"1669244 0 ... \n",
"1669245 0 ... \n",
"1669246 0 ... \n",
"1669247 0 ... T SQUIRRELWOOD ROAD \n",
"1669248 0 ... \n",
"1669249 0 ... \n",
"1669250 0 ... \n",
"1669251 0 ... \n",
"1669252 0 ... \n",
"1669253 0 ... \n",
"1669254 0 ... \n",
"1669255 0 ... \n",
"1669256 0 ... \n",
"\n",
" Ramp To/From Route Direction Posted Speed Posted Speed Cross Street \\\n",
"242727 35 35 \n",
"242728 0 \n",
"242729 40 25 \n",
"242730 35 25 \n",
"242731 35 25 \n",
"242732 0 \n",
"242733 35 35 \n",
"242734 0 \n",
"242735 35 25 \n",
"242736 35 25 \n",
"242737 35 25 \n",
"242738 30 35 \n",
"242739 35 15 \n",
"242740 35 30 \n",
"242741 35 25 \n",
"242742 25 25 \n",
"242743 35 \n",
"242744 35 30 \n",
"242745 35 25 \n",
"242746 25 25 \n",
"242747 0 \n",
"242748 30 35 \n",
"242749 35 25 \n",
"242750 25 \n",
"242751 25 35 \n",
"242752 30 25 \n",
"242753 35 35 \n",
"242754 25 35 \n",
"242755 35 15 \n",
"242756 35 35 \n",
"... ... ... ... \n",
"1669227 55 \n",
"1669228 55 \n",
"1669229 55 \n",
"1669230 55 \n",
"1669231 55 \n",
"1669232 55 \n",
"1669233 55 \n",
"1669234 EB 65 \n",
"1669235 55 \n",
"1669236 55 \n",
"1669237 65 \n",
"1669238 55 \n",
"1669239 55 \n",
"1669240 55 \n",
"1669241 55 \n",
"1669242 55 \n",
"1669243 55 \n",
"1669244 55 \n",
"1669245 55 \n",
"1669246 55 \n",
"1669247 SB 55 \n",
"1669248 55 \n",
"1669249 55 \n",
"1669250 55 \n",
"1669251 65 \n",
"1669252 55 \n",
"1669253 55 \n",
"1669254 25 25 \n",
"1669255 10 25 \n",
"1669256 25 25 \n",
"\n",
" Latitude Longitude Cell Phone In Use Flag \\\n",
"242727 N \n",
"242728 N \n",
"242729 41.01790 74.31252 N \n",
"242730 41.01119 74.32027 N \n",
"242731 41.03530 74.34463 N \n",
"242732 N \n",
"242733 N \n",
"242734 N \n",
"242735 41.00775 74.33502 N \n",
"242736 41.00741 74.34208 N \n",
"242737 41.00690 74.34344 N \n",
"242738 N \n",
"242739 41.01493 74.35526 N \n",
"242740 41.00387 74.33420 N \n",
"242741 41.01119 74.32027 N \n",
"242742 N \n",
"242743 41.00673 74.35107 N \n",
"242744 41.00141 74.32169 N \n",
"242745 41.00690 74.34344 N \n",
"242746 N \n",
"242747 N \n",
"242748 41.00384 74.33426 N \n",
"242749 41.03262 74.34254 N \n",
"242750 N \n",
"242751 N \n",
"242752 41.00247 74.32864 N \n",
"242753 N \n",
"242754 N \n",
"242755 N \n",
"242756 N \n",
"... ... ... ... \n",
"1669227 N \n",
"1669228 N \n",
"1669229 N \n",
"1669230 N \n",
"1669231 N \n",
"1669232 N \n",
"1669233 N \n",
"1669234 N \n",
"1669235 N \n",
"1669236 N \n",
"1669237 N \n",
"1669238 N \n",
"1669239 N \n",
"1669240 N \n",
"1669241 N \n",
"1669242 N \n",
"1669243 N \n",
"1669244 N \n",
"1669245 N \n",
"1669246 N \n",
"1669247 N \n",
"1669248 N \n",
"1669249 N \n",
"1669250 N \n",
"1669251 N \n",
"1669252 N \n",
"1669253 N \n",
"1669254 N \n",
"1669255 N \n",
"1669256 N \n",
"\n",
" Other Property Damage Reporting Badge No. \n",
"242727 SOUTHBOUND GUARDRAIL ... 5 \n",
"242728 NONE ... 11 \n",
"242729 UTILITY POLE # BMP560B MAILBOX FENCE CEMENT RE... 11 \n",
"242730 NONE ... 10 \n",
"242731 NONE ... 11 \n",
"242732 NONE ... 11 \n",
"242733 NONE ... 12 \n",
"242734 NONE ... 11 \n",
"242735 NONE ... 8 \n",
"242736 NONE ... 8 \n",
"242737 ? ... 6 \n",
"242738 NONE ... 12 \n",
"242739 ? ... 6 \n",
"242740 NONE ... \n",
"242741 NONE ... 11 \n",
"242742 NONE ... 12 \n",
"242743 NONE ... 9 \n",
"242744 NONE ... 10 \n",
"242745 ? ... 6 \n",
"242746 NONE NOTED ... 5 \n",
"242747 UNKNOWN ... 8 \n",
"242748 NONE ... 9 \n",
"242749 KAMPFE LAKE ASSOCIATION PROPERTY-TREES/LANDSCA... 6 \n",
"242750 NONE ... 9 \n",
"242751 UTILITY POLE# BMP331P WAS STRUCK AND SUSTAINED... 10 \n",
"242752 NONE ... 8 \n",
"242753 DAMAGE TO LANDSCAPING OF 587 GLENWILD AVE. ... \n",
"242754 NONE ... \n",
"242755 NONE ... \n",
"242756 NONE ... 12 \n",
"... ... ... \n",
"1669227 ... 6732 \n",
"1669228 ... 7190 \n",
"1669229 ... 6701 \n",
"1669230 ... 5349 \n",
"1669231 ... 7106 \n",
"1669232 ... 6227 \n",
"1669233 NONE. ... 7238 \n",
"1669234 NONE ... 6962 \n",
"1669235 NONE ... 6185 \n",
"1669236 NONE ... 7055 \n",
"1669237 NONE ... 6962 \n",
"1669238 APPROXIMATELY 15 FEET OF GUARDRAIL NJDOT TRE... 6084 \n",
"1669239 ... 7071 \n",
"1669240 ... 6701 \n",
"1669241 ... 7106 \n",
"1669242 ... 7167 \n",
"1669243 ... 7178 \n",
"1669244 ... 6701 \n",
"1669245 ... 6660 \n",
"1669246 ... 7055 \n",
"1669247 ... 6969 \n",
"1669248 ... 7071 \n",
"1669249 ... 6701 \n",
"1669250 ... 7167 \n",
"1669251 ... 7319 \n",
"1669252 ... 7190 \n",
"1669253 ... 7075 \n",
"1669254 ... \n",
"1669255 ... 115 \n",
"1669256 ... 949 \n",
"\n",
"[113217 rows x 47 columns]"
]
}
],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we're confident the ```'County Name'``` column is as clean as it's going to be, we can turn to others. What do we see when we look at the unique values in the ```'Police Dept Code'``` column with the ```.unique()``` method?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['Police Dept Code'].unique()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 14,
"text": [
"array(['01', '99', ' ', '02', '03', '04', 1, 99, 2, 3, 4], dtype=object)"
]
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we filter the column for the police departments that use '99' as their code, we'll see their names are not unique (of course)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df[['Police Dept Code', 'Police Department']][df['Police Dept Code']==99]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Police Dept Code | \n",
" Police Department | \n",
"
\n",
" \n",
" \n",
" \n",
" | 311564 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311565 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311566 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311567 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311568 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311569 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311570 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311571 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311572 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311573 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311574 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311575 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 311709 | \n",
" 99 | \n",
" NEW JERSEY TRANSIT POLICE | \n",
"
\n",
" \n",
" | 312227 | \n",
" 99 | \n",
" NEW JERSEY TRANSIT POLICE | \n",
"
\n",
" \n",
" | 312415 | \n",
" 99 | \n",
" NEW JERSEY TRANSIT POLICE | \n",
"
\n",
" \n",
" | 312641 | \n",
" 99 | \n",
" NEW JERSEY TRANSIT POLICE | \n",
"
\n",
" \n",
" | 313347 | \n",
" 99 | \n",
" NEW JERSEY TRANSIT POLICE | \n",
"
\n",
" \n",
" | 313348 | \n",
" 99 | \n",
" NEW JERSEY TRANSIT POLICE | \n",
"
\n",
" \n",
" | 316175 | \n",
" 99 | \n",
" NEW JERSEY TRANSIT POLICE | \n",
"
\n",
" \n",
" | 316534 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 316535 | \n",
" 99 | \n",
" PALISADES INTER. PARKWAY | \n",
"
\n",
" \n",
" | 320064 | \n",
" 99 | \n",
" WILLIAM PATERSON UNIVERSI | \n",
"
\n",
" \n",
" | 320067 | \n",
" 99 | \n",
" WILLIAM PATERSON UNIVERSI | \n",
"
\n",
" \n",
" | 320068 | \n",
" 99 | \n",
" WILLIAM PATERSON UNIVERSI | \n",
"
\n",
" \n",
" | 320102 | \n",
" 99 | \n",
" WILLIAM PATERSON UNIVERSI | \n",
"
\n",
" \n",
" | 320103 | \n",
" 99 | \n",
" WILLIAM PATERSON UNIVERSI | \n",
"
\n",
" \n",
" | 320104 | \n",
" 99 | \n",
" WILLIAM PATERSON UNIVERSI | \n",
"
\n",
" \n",
" | 320105 | \n",
" 99 | \n",
" WILLIAM PATERSON UNIVERSI | \n",
"
\n",
" \n",
" | 320106 | \n",
" 99 | \n",
" WILLIAM PATERSON UNIVERSI | \n",
"
\n",
" \n",
" | 320107 | \n",
" 99 | \n",
" WILLIAM PATERSON UNIVERSI | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 1701415 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701416 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701417 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701418 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701419 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701420 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701421 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701422 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701423 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701424 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701425 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701426 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701427 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701428 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701429 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701430 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701431 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701432 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701433 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701434 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701435 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701436 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701437 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701438 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701439 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701440 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701441 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701442 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701443 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
" | 1701444 | \n",
" 99 | \n",
" KEAN UNIVERSITY PD | \n",
"
\n",
" \n",
"
\n",
"
4818 rows \u00d7 2 columns
\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 15,
"text": [
" Police Dept Code Police Department\n",
"311564 99 PALISADES INTER. PARKWAY \n",
"311565 99 PALISADES INTER. PARKWAY \n",
"311566 99 PALISADES INTER. PARKWAY \n",
"311567 99 PALISADES INTER. PARKWAY \n",
"311568 99 PALISADES INTER. PARKWAY \n",
"311569 99 PALISADES INTER. PARKWAY \n",
"311570 99 PALISADES INTER. PARKWAY \n",
"311571 99 PALISADES INTER. PARKWAY \n",
"311572 99 PALISADES INTER. PARKWAY \n",
"311573 99 PALISADES INTER. PARKWAY \n",
"311574 99 PALISADES INTER. PARKWAY \n",
"311575 99 PALISADES INTER. PARKWAY \n",
"311709 99 NEW JERSEY TRANSIT POLICE\n",
"312227 99 NEW JERSEY TRANSIT POLICE\n",
"312415 99 NEW JERSEY TRANSIT POLICE\n",
"312641 99 NEW JERSEY TRANSIT POLICE\n",
"313347 99 NEW JERSEY TRANSIT POLICE\n",
"313348 99 NEW JERSEY TRANSIT POLICE\n",
"316175 99 NEW JERSEY TRANSIT POLICE\n",
"316534 99 PALISADES INTER. PARKWAY \n",
"316535 99 PALISADES INTER. PARKWAY \n",
"320064 99 WILLIAM PATERSON UNIVERSI\n",
"320067 99 WILLIAM PATERSON UNIVERSI\n",
"320068 99 WILLIAM PATERSON UNIVERSI\n",
"320102 99 WILLIAM PATERSON UNIVERSI\n",
"320103 99 WILLIAM PATERSON UNIVERSI\n",
"320104 99 WILLIAM PATERSON UNIVERSI\n",
"320105 99 WILLIAM PATERSON UNIVERSI\n",
"320106 99 WILLIAM PATERSON UNIVERSI\n",
"320107 99 WILLIAM PATERSON UNIVERSI\n",
"... ... ...\n",
"1701415 99 KEAN UNIVERSITY PD \n",
"1701416 99 KEAN UNIVERSITY PD \n",
"1701417 99 KEAN UNIVERSITY PD \n",
"1701418 99 KEAN UNIVERSITY PD \n",
"1701419 99 KEAN UNIVERSITY PD \n",
"1701420 99 KEAN UNIVERSITY PD \n",
"1701421 99 KEAN UNIVERSITY PD \n",
"1701422 99 KEAN UNIVERSITY PD \n",
"1701423 99 KEAN UNIVERSITY PD \n",
"1701424 99 KEAN UNIVERSITY PD \n",
"1701425 99 KEAN UNIVERSITY PD \n",
"1701426 99 KEAN UNIVERSITY PD \n",
"1701427 99 KEAN UNIVERSITY PD \n",
"1701428 99 KEAN UNIVERSITY PD \n",
"1701429 99 KEAN UNIVERSITY PD \n",
"1701430 99 KEAN UNIVERSITY PD \n",
"1701431 99 KEAN UNIVERSITY PD \n",
"1701432 99 KEAN UNIVERSITY PD \n",
"1701433 99 KEAN UNIVERSITY PD \n",
"1701434 99 KEAN UNIVERSITY PD \n",
"1701435 99 KEAN UNIVERSITY PD \n",
"1701436 99 KEAN UNIVERSITY PD \n",
"1701437 99 KEAN UNIVERSITY PD \n",
"1701438 99 KEAN UNIVERSITY PD \n",
"1701439 99 KEAN UNIVERSITY PD \n",
"1701440 99 KEAN UNIVERSITY PD \n",
"1701441 99 KEAN UNIVERSITY PD \n",
"1701442 99 KEAN UNIVERSITY PD \n",
"1701443 99 KEAN UNIVERSITY PD \n",
"1701444 99 KEAN UNIVERSITY PD \n",
"\n",
"[4818 rows x 2 columns]"
]
}
],
"prompt_number": 15
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You also might notice that some of our department codes start with 0, so we have data that is mixed between strings and integers in the same column. We can use pandas' ```.astype()``` method to change all the type of all of the values in that column to strings."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['Police Dept Code']=df['Police Dept Code'].astype(str)\n",
"df['Police Dept Code'].unique()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 16,
"text": [
"array(['01', '99', ' ', '02', '03', '04', '1', '2', '3', '4'], dtype=object)"
]
}
],
"prompt_number": 16
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You should note two things here. To actually change the value of the column in the DataFrame in place, we'll have to assign it back to itself as if we're defining a new variable. Also, if you check the unique values again, we'll see that there are now values for '01' and '1'. You may want to standardize those, but we'll leave that to you as an exercise later.\n",
"\n",
"Even after all that, we still have some empty fields with two spaces in the string, so let's replace those empty values with the word \"Unknown\""
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df['Police Dept Code'][df['Police Dept Code']==' ']='Unknown'\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We've done a bit of cleaning here and may want to start doing some exploratory analysis. To do that, we'll create a smaller DataFrame of just the columns that we plan to examine, and we'll name it myframe."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#Create a smaller frame\n",
"myframe = df[['County Name', 'Municipality Name', 'Crash Date', 'Crash Day Of Week', 'Crash Time', 'Total Killed', 'Total Injured', 'Pedestrians Killed', 'Pedestrians Injured', 'Total Vehicles Involved', 'Crash Type Code', 'Alcohol Involved', 'Environmental Condition', 'Light Condition', 'Cell Phone In Use Flag']]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We'll pass myframe along to the next exercise for aggregating, but we might want to save it for later. While we're thinking about it, let's write it out to a CSV with the shockingly named ```.to_csv()``` method."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"myframe.to_csv('smallertab.csv')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Digging Deeper with Pandas"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We've done a bit of cleaning to our outrageously messy data, and now we want to start to explore what's actually in this data and look for more spots we have to clean.\n",
"\n",
"If you were reporting on car accidents in your state, what would you want to know? Some of the questions you'd ask might include:\n",
"\n",
"* How many deaths happened in each county?\n",
"* How many accidents have happened over time?\n",
"* How many people are involved in car accidents?\n",
"* What counties might be outliers in terms of deaths and injuries?\n",
"\n",
"We'll start by reading our data into our DataFrame. Then we'll filter it and do a few group-bys, which should be familiar if you've ever worked with SQL. Finally, we'll create smaller DataFrames of this aggregated data to visualize.\n",
"\n",
"One of the cleaning tasks we'll have to deal with is the format of the 'Crash Date' field, so we might as well import Python's standard ```datetime``` module and read our csv now."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from datetime import datetime\n",
"\n",
"newframe = pd.read_csv('smallertab.csv')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"/Users/tommeagher/.virtualenvs/pandas/lib/python2.7/site-packages/pandas/io/parsers.py:1139: DtypeWarning: Columns (11) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" data = self._reader.read(nrows)\n"
]
}
],
"prompt_number": 20
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This should all be pretty familiar. Notice that weird warning about mixed types? Although we cleaned the types in some of the columns, others are still mixed. You can solve this by using the ```dtypes``` keyword in the ```read_csv()``` function. It's worth looking [at the docs](http://pandas.pydata.org/pandas-docs/dev/generated/pandas.io.parsers.read_csv.html) to see all the options you can set when you read a CSV.\n",
"\n",
"Now, we want to see our data aggregated by counties, so here's where pandas' ```.groupby()``` function comes in."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"newframe.groupby('County Name')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 21,
"text": [
""
]
}
],
"prompt_number": 21
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, when we run ```.groupby()```, it returns a DataFrameGroupBy object, which is really only good to us if we do something else with it.\n",
"\n",
"So try this:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#What county had the most accident deaths?\n",
"newframe.groupby('County Name').sum()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Unnamed: 0 | \n",
" Total Killed | \n",
" Total Injured | \n",
" Pedestrians Killed | \n",
" Pedestrians Injured | \n",
" Total Vehicles Involved | \n",
"
\n",
" \n",
" | County Name | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | ATLANTIC | \n",
" 40555622700 | \n",
" 187 | \n",
" 20957 | \n",
" 33 | \n",
" 1104 | \n",
" 98713 | \n",
"
\n",
" \n",
" | BERGEN | \n",
" 136762281964 | \n",
" 166 | \n",
" 47575 | \n",
" 70 | \n",
" 2879 | \n",
" 333025 | \n",
"
\n",
" \n",
" | BURLINGTON | \n",
" 56830343320 | \n",
" 249 | \n",
" 23727 | \n",
" 44 | \n",
" 634 | \n",
" 128223 | \n",
"
\n",
" \n",
" | CAMDEN | \n",
" 70636041684 | \n",
" 230 | \n",
" 36056 | \n",
" 62 | \n",
" 1539 | \n",
" 178112 | \n",
"
\n",
" \n",
" | CAPE MAY | \n",
" 15954173080 | \n",
" 48 | \n",
" 6114 | \n",
" 7 | \n",
" 258 | \n",
" 35792 | \n",
"
\n",
" \n",
" | CUMBERLAND | \n",
" 21914587233 | \n",
" 143 | \n",
" 11086 | \n",
" 21 | \n",
" 346 | \n",
" 49772 | \n",
"
\n",
" \n",
" | ESSEX | \n",
" 128406345105 | \n",
" 247 | \n",
" 58229 | \n",
" 95 | \n",
" 5224 | \n",
" 315666 | \n",
"
\n",
" \n",
" | GLOUCESTER | \n",
" 35575203872 | \n",
" 156 | \n",
" 15964 | \n",
" 30 | \n",
" 475 | \n",
" 81242 | \n",
"
\n",
" \n",
" | HUDSON | \n",
" 98932551977 | \n",
" 122 | \n",
" 29470 | \n",
" 44 | \n",
" 4026 | \n",
" 230722 | \n",
"
\n",
" \n",
" | HUNTERDON | \n",
" 19987461551 | \n",
" 55 | \n",
" 5835 | \n",
" 10 | \n",
" 95 | \n",
" 40153 | \n",
"
\n",
" \n",
" | MERCER | \n",
" 70130920959 | \n",
" 141 | \n",
" 22701 | \n",
" 39 | \n",
" 995 | \n",
" 153293 | \n",
"
\n",
" \n",
" | MIDDLESEX | \n",
" 154741088588 | \n",
" 308 | \n",
" 52131 | \n",
" 88 | \n",
" 2055 | \n",
" 336919 | \n",
"
\n",
" \n",
" | MONMOUTH | \n",
" 111922290674 | \n",
" 230 | \n",
" 36027 | \n",
" 52 | \n",
" 1239 | \n",
" 231862 | \n",
"
\n",
" \n",
" | MORRIS | \n",
" 64443161991 | \n",
" 128 | \n",
" 21039 | \n",
" 26 | \n",
" 658 | \n",
" 150796 | \n",
"
\n",
" \n",
" | OCEAN | \n",
" 82316419082 | \n",
" 284 | \n",
" 30520 | \n",
" 65 | \n",
" 1048 | \n",
" 176583 | \n",
"
\n",
" \n",
" | PASSAIC | \n",
" 109027719563 | \n",
" 160 | \n",
" 35694 | \n",
" 50 | \n",
" 2054 | \n",
" 216166 | \n",
"
\n",
" \n",
" | SALEM | \n",
" 9398429064 | \n",
" 72 | \n",
" 3582 | \n",
" 4 | \n",
" 55 | \n",
" 16512 | \n",
"
\n",
" \n",
" | SOMERSET | \n",
" 71108004864 | \n",
" 119 | \n",
" 19076 | \n",
" 17 | \n",
" 630 | \n",
" 133774 | \n",
"
\n",
" \n",
" | SUSSEX | \n",
" 22863294057 | \n",
" 65 | \n",
" 7004 | \n",
" 6 | \n",
" 144 | \n",
" 38997 | \n",
"
\n",
" \n",
" | UNION | \n",
" 116426554015 | \n",
" 182 | \n",
" 37662 | \n",
" 66 | \n",
" 2142 | \n",
" 227130 | \n",
"
\n",
" \n",
" | WARREN | \n",
" 20427091377 | \n",
" 69 | \n",
" 6255 | \n",
" 6 | \n",
" 154 | \n",
" 35105 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 22,
"text": [
" Unnamed: 0 Total Killed Total Injured Pedestrians Killed \\\n",
"County Name \n",
"ATLANTIC 40555622700 187 20957 33 \n",
"BERGEN 136762281964 166 47575 70 \n",
"BURLINGTON 56830343320 249 23727 44 \n",
"CAMDEN 70636041684 230 36056 62 \n",
"CAPE MAY 15954173080 48 6114 7 \n",
"CUMBERLAND 21914587233 143 11086 21 \n",
"ESSEX 128406345105 247 58229 95 \n",
"GLOUCESTER 35575203872 156 15964 30 \n",
"HUDSON 98932551977 122 29470 44 \n",
"HUNTERDON 19987461551 55 5835 10 \n",
"MERCER 70130920959 141 22701 39 \n",
"MIDDLESEX 154741088588 308 52131 88 \n",
"MONMOUTH 111922290674 230 36027 52 \n",
"MORRIS 64443161991 128 21039 26 \n",
"OCEAN 82316419082 284 30520 65 \n",
"PASSAIC 109027719563 160 35694 50 \n",
"SALEM 9398429064 72 3582 4 \n",
"SOMERSET 71108004864 119 19076 17 \n",
"SUSSEX 22863294057 65 7004 6 \n",
"UNION 116426554015 182 37662 66 \n",
"WARREN 20427091377 69 6255 6 \n",
"\n",
" Pedestrians Injured Total Vehicles Involved \n",
"County Name \n",
"ATLANTIC 1104 98713 \n",
"BERGEN 2879 333025 \n",
"BURLINGTON 634 128223 \n",
"CAMDEN 1539 178112 \n",
"CAPE MAY 258 35792 \n",
"CUMBERLAND 346 49772 \n",
"ESSEX 5224 315666 \n",
"GLOUCESTER 475 81242 \n",
"HUDSON 4026 230722 \n",
"HUNTERDON 95 40153 \n",
"MERCER 995 153293 \n",
"MIDDLESEX 2055 336919 \n",
"MONMOUTH 1239 231862 \n",
"MORRIS 658 150796 \n",
"OCEAN 1048 176583 \n",
"PASSAIC 2054 216166 \n",
"SALEM 55 16512 \n",
"SOMERSET 630 133774 \n",
"SUSSEX 144 38997 \n",
"UNION 2142 227130 \n",
"WARREN 154 35105 "
]
}
],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's deconstruct this a bit, because we're chaining a lot together at once here. We start with our DataFrame object, called newframe. We then do ```.groupby()```, passing it the name of the column we're aggregating on. As we said, this is reminiscent of SQL and returns the DataFrameGroupBy object. We can then run ```.sum()``` on the GroupBy object to add up the numeric columns for each county, returning a new DataFrame, which looks like the kind of Pivot Table we'd make in Excel.\n",
"\n",
"Say we want to know which county had the most people killed in accidents over this time period. We can slice out just the 'Total Killed' column and sort it from most to least."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"newframe.groupby('County Name').sum().iloc[:,1].order(ascending=False)\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 23,
"text": [
"County Name\n",
"MIDDLESEX 308\n",
"OCEAN 284\n",
"BURLINGTON 249\n",
"ESSEX 247\n",
"CAMDEN 230\n",
"MONMOUTH 230\n",
"ATLANTIC 187\n",
"UNION 182\n",
"BERGEN 166\n",
"PASSAIC 160\n",
"GLOUCESTER 156\n",
"CUMBERLAND 143\n",
"MERCER 141\n",
"MORRIS 128\n",
"HUDSON 122\n",
"SOMERSET 119\n",
"SALEM 72\n",
"WARREN 69\n",
"SUSSEX 65\n",
"HUNTERDON 55\n",
"CAPE MAY 48\n",
"Name: Total Killed, dtype: int64"
]
}
],
"prompt_number": 23
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We select the ```'Total Killed'``` column here using ```.iloc[]```, which wants a two-item list. The first item is a slice of the rows. Since we want all rows, we'll use the standard Python slicing notation of an empty colon. The second item in the list is the columns we want, which is just column 2, or if you're counting from 0, as Python does, column 1.\n",
"\n",
"Finally, the ```.order()``` function will sort the resulting series and pass it the ascending keyword with a value of False (it defaults to True) to get the largest figures at the top of the list.\n",
"\n",
"We can assign that to a new dataframe variable that we'll use later to make a bar chart and move on for now."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"countydeaths = newframe.groupby('County Name').sum().iloc[:,1].order(ascending=False)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we want to aggregate the accidents by date. But you may have noticed that the dates here are strings and not actual Python date objects. This means when you try to sort them, you get 01/01/2008, 01/01/2009, 01/01/2010, and so on. We need convert the strings to actual Python dates."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#we use lambda, which creates an unnamed, one-line function and applies it to each item in the column\n",
"newframe['Crash Date']=newframe['Crash Date'].apply(lambda x: datetime.strptime(x, \"%m/%d/%Y\").date())"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 25
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What did we do here? We take the 'Crash Date' column and use the ```.apply()``` function to perform some operation across the value in every row in that column. Then we use Python's lambda, a way to write an unnamed, one-line function. If the variable for the date string in each row of the 'Crash Date' column is x, apply and lambda perform the ```.strptime()``` function from Python's datetime module. The part in double quotes \"%m/%d/%Y\" says to take a string that is a two-digit month and a two-digit date and a four-digit year, divided by slashes, and convert it to a datetime object. Finally, ```.date()``` takes just the date part of that object and returns that into the row. That's a mouthful.\n",
"\n",
"Now that we've done that, we can aggregate the crashes by real, sortable dates and count how many accidents happened on each date. Then we'll assign this to a new variable for the resulting DataFrame that we'll use later to make a line chart."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"crashesbydate = newframe.groupby('Crash Date').count().iloc[:,0]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 26
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So far we've just been transforming and tweaking data that already exists in our dataframe. We can also calculate new data and add it as a column. Here we can create a column for the total number of people involved in an accident by adding together the 'Total Killed' and 'Total Injured' columns. This syntax works similarly to creating a new key in a Python dict."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"newframe['Total Involved']=newframe['Total Killed']+newframe['Total Injured']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With this 'Total Involved' value, we can create a histogram later.\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"newframe['Crash Day Of Week']=newframe['Crash Day Of Week'].map(str.strip)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here, we're using ```.map()``` to call the pandas built-in strip method on its string method across the column, which is a Series object\n",
"\n",
"Finally, let's create a DataFrame of all the columns aggregated by county so we can make a scatter plot of the counties by total killed and pedestrians killed.\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"countyframe = newframe.groupby('County Name').sum()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 29
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With these new DataFrames, we have several slices of our data. Let's see what it looks like by visualizing it."
]
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Basic plots with matplotlib"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we need to launch the pylab mode inline to get the plots to render inside our notebook. You can do this at startup by running ```ipython notebook --pylab=inline```, or you can do it like this with the magic ```%```."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab inline"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"WARNING: pylab import has clobbered these variables: ['datetime']\n",
"`%matplotlib` prevents importing * from pylab and numpy\n"
]
}
],
"prompt_number": 30
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we import matplotlib's pyplot class and call it plt."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib.pyplot as plt"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we want to make a bar chart of the number of deaths by county, from the ```countydeaths``` DataFrame we created above, we can use the ```.plot()``` function and pass it the ```kind='bar'``` keyword argument. \n",
"\n",
"These plots are basically pandas' wrapper around the matplotlib library. There are many other things you can do with the wrapper and matplotlib itself, and it's worth giving [the documentation](http://pandas.pydata.org/pandas-docs/version/0.15.1/visualization.html) a read."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"countydeaths.plot(kind='bar')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 32,
"text": [
""
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nEEIIITqD/wdU+sMa74ynbAAAAABJRU5ErkJggg==\n",
"text": [
""
]
}
],
"prompt_number": 32
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we want to do a line graph, we can use the ```.plot()``` function on a DataFrame. The default ```kind``` is a line graph. So here's a graph of crashes by date."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"crashesbydate.plot()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 33,
"text": [
""
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nRJ4PP1TbN9kE7r03byuYgu1Jkuf229X9AnjjjTxNTaXHX7CgvPLk83lbmRTsOQDiy6PXdX0bMgTu\nvbfAiSdCnz55O1+BLbaAjz5S6x06FOx5X5XZ8csvC8ybB6+/Hr/8YeVr1So8/5Qpar11a7Wu6+eG\nDU7+uXMdeR1Fr9YnTy5ehwKffead/ze/gVtuKfD55852d3luvLFA797+2wuFgv21mqd1a3jwwQIn\nnQSbbqq2//SnBe6+Gw4/PM/w4c7+u+2W5+mn4fPPnfJMmlRg1Dc9wE3UipHABShFr9ts3XEU/wgc\n+zzAeMA97MiyLMtatcqyhg2zLHvVsizLWrzYSg1gWSNHOuu77KLSwLJeesnJ09zspGtZL7igNM2y\nLOuhhyxr/frky/q976nzvPmmZd12m0pbuFClffppsUyvv+6U69VXLWvFCmeb/r3zTvJlrDdgWdOm\n+W//xz8c+TdsUP9R6utf/1p8j+MwdKja97HH4h1D10XN228Xl/vjj1W6lufcc9X/ZptZVr9+5Zc3\nDmBZd9wRnu/rr1XeKVOK973uOmd99Oji+mn+tMzm7/bbLes//ylNS4plyyyrVStnffXq4u1gWYce\nWpz26187192tF444Qqf5N6YrMdd0BLRlaWOUt8xsYCxwup1+OqBDfo0FTgXaAb2A3jgeOUXojqgv\nv3TSwvyPG4mlS4vjWfv19m+5Zak3jd+n8oknVmdib/2pu/vuTtS9rW0Dm/k5a1nKHU6P9O3Xr3ho\n9QEHKH/oRoo8WCu8Ptej3Kszzyx/MvNyBwjedJMTJgJKO/XN+jdkCPzud2q5QwflKjhzZnnnjcMX\nX4R33EKpuUbj52Tg7hPK5ZSJ18Syijvc27ZV3j1J0b17sTnJ3Xfxl78U358wopj8KlEbWwOTUN/o\n04AnUC6T1wIDUC6Uh9nrAHOAMfb/OGAYQW+fVsXhYtNEjx7FNtimJl0RHZv8++/DVVcpt8jnn1fu\nZKDcNvv3Vzdv3rzql9Wr86lDB3VuL9dFP2+eTTeFtWsLiZatkbAs05xQjFc9jaLkc7no7qFe+0L8\n4ftHHlnsmqmVRKFQYJttisMu7LijKt/s2eoFvu22pX0Q1aBjx2gvMX2NzbwrVhS7W5o2ebNP4qqr\n1P/RR8PIkU56vWeA+vnPYb/9oueP4l9fiU1+AdDXI30lcITPPtfYvxbFI48oX+2uXZ1Kt912znY9\n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\n",
"text": [
""
]
}
],
"prompt_number": 33
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Say you want to look at the distribution of the number of people injured or killed in accidents. You can run the ```.hist()``` function on a column in the DataFrame and see that in the vast majority of accidents, no one was hurt."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"newframe['Total Involved'].hist(bins=50)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 34,
"text": [
""
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEACAYAAAByG0uxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHERJREFUeJzt3X2QXeV9H/CPbBkSx2Ah6sG8uCxxSAw1cW1KcBqbrrGF\n5UzKy4zDy0wA29PMYNVJGHdcwPkDaZhSSieT4HZiuwUjSGMMMSnGLcgIgzLuuCAse21imUpyLRdh\nkO1igZlOCAzqH8+zu1erXXTuXXHuI/h+Zu6cc55777nfe3a1vz3P79wVERERERERERERERERERER\nERERERERcQD5HHbi4Xnu+1d4AcsHxq7AVjyCMwbGT6772IrrBsYPxq11/AEcO3DfxdhSbxcNjB+H\nB+tzvoDXDPmeIiKiJ+/G2+1dRN6EdfiB2SJyIqaUH+oT2IYl9b6N+I26fhdW1vVV+PO6fp5SFNR9\nfh/L6u37eH297zacW9c/jUtGfG8REdGDCXsXkb/Cr9uziFyBywYesw7vxJH43sD4+fjMwGNOretL\n8ZO6foFSIKZ9pj5vSX3Mq+r4O+s+IiJiDF6174fs5SzswHfmjB9Vx6ftwNHzjD9Wx9Xlo3X9eTyF\nw19kX8uxS5lGm7uviIjo2dIhH/9afBIrBsaWLPDY/W13T68TEREdDVtE3qxMb327bh+DTcqU1GNK\nr8TAfTvq+DHzjKv3/UP8qGZ5Pf5vHZ8ceM6bcB+eVHokr1LORo6pj93LUUcdtftHP/rRkG8vIuIV\n7/v4lf25wwnzX53F/I31g5QrqL5v9izlQaXQLLF3Y32693G+PRvr/1spGIcNrFMa6+fV9c9YuLG+\nuzVXXnnluCPspcVMu3e3mSuZukmm7lrMZchZn331RG7B1/GrSu/iw3N/UA+sb64/4DfjbqVATN+/\nCtcrl+VuM9sMv0HpgWzFpbi8jj+Jq/CQcmXXGqUXQmnef7w+57C6jwPC9u3bxx1hLy1mos1cydRN\nMnXXaq5h7Gs664J93P/Lc7avrre5NuGkecafNXu57lw31ttcPzB7RVdERIzRq8cd4CW0evXq1ePO\nsIdly5aZmJgYd4w9tJiJNnMlUzfJ1F2LudasWUOZ/emkryurxqFO70VERFdLlixhiNowyudEYkQb\nNmwYd4S9tJiJNnMlUzfJ1F2ruYaRIhIRESPLdFZERMzIdFZERPTmZV1EHnjggb1umzdvHlueFuc/\nW8xEm7mSqZtk6q7VXMMY9s+eHFBWrrx0zshuzzzzTc8//9xY8kREvNy8rHsie396fzdeJb2SiIj5\npScSERG9SRHpUYvzny1mos1cydRNMnXXaq5hpIhERMTI0hOJiIgZ6YlERERvUkR61OL8Z4uZaDNX\nMnWTTN21mmsYKSIRETGy9EQiImJGeiIREdGbFJEetTj/2WIm2syVTN0kU3et5hpGikhERIwsPZGI\niJiRnkhERPQmRaRHLc5/tpiJNnMlUzfJ1F2ruYaxryLyOezEwwNj/x7fw7fx13j9wH1XYCsewRkD\n4yfXfWzFdQPjB+PWOv4Ajh2472JsqbeLBsaPw4P1OV/Aa/bxHiIi4iWyr3mvd+MZ3IyT6tgKfBUv\n4Jo6djlOxOdxCo7GvTheaURsxMfq8i58CuuwCm+ty/NwDs7HcjykFB/YhHfgKdyGL9blp5Vi9pl5\nsqcnEhExpP3dE/kafjZnbL1SQChnBMfU9bNwC57DdmzDqTgShygFhFKQzq7rZ+Kmun473lvX3497\nsKve1uMDyht7j1JE1OdO7ysiInq22J7IR5QzCzgKOwbu26Gckcwdf6yOq8tH6/rzypnG4S+yr+VK\nUZkuYoP7al6L858tZqLNXMnUTTJ112quYSzm/1j/Y/y9MoXVhxHmoD6Eibq+DG+buWf6izc5Odnb\n9tTUVK+v12V7Wit5prenpqaaypOv34G93eL306Bx5tmwYYO1a9eCiYkJw+oy7zWBL5vtiVB+Ov++\nMv30d3Xs8rqc7pOsw5X4Ie7HCXX8ApyGj9bHrFaa6kvxON6g9EUmcUl9zmdxn9IH+TGOUM5GfrO+\nxsp5cqcnEhExpD4+J7ISn1B6IH83MH6n8sP/IOUKquOVPsgTeFrpjyzBhfjSwHMurusfVBr2lH7I\nGcrpw2FKM/8rShW4H79bH3cx7hjhPURExH6wryJyC76OX1N6Fx/Bf8DrlGb3t/Dn9bGblTOFzbhb\nueJq+lf+VbheuSx3m3IGAjcoPZCtuNTs2cyTuEq5Qmsj1ii9ELgMH6/POazu44Aw9xS2BS1mos1c\nydRNMnXXaq5h7KsncsE8Y597kcdfXW9zbbLndNi0Z3HuAvu6sd7m+oFyVhMREWOWv50VEREz8rez\nIiKiNykiPWpx/rPFTLSZK5m6SabuWs01jBSRiIgYWXoiERExIz2RiIjoTYpIj1qc/2wxE23mSqZu\nkqm7VnMNI0UkIiJGlp5IRETMSE8kIiJ6kyLSoxbnP1vMRJu5kqmbZOqu1VzDSBGJiIiRpScSEREz\n0hOJiIjepIj0qMX5zxYz0WauZOommbprNdcwUkQiImJk6YlERMSM9EQiIqI3KSI9anH+s8VMtJkr\nmbpJpu5azTWMFJGIiBhZeiIRETEjPZGIiOhNikiPWpz/bDETbeZKpm6SqbtWcw1jX0Xkc9iJhwfG\nlmM9tuAeLBu47wpsxSM4Y2D85LqPrbhuYPxg3FrHH8CxA/ddXF9jCy4aGD8OD9bnfAGv2cd7iIiI\nl8i+5r3ejWdwM06qY9fip3V5GQ7D5TgRn8cpOBr34nilEbERH6vLu/AprMMqvLUuz8M5OF8pVA8p\nxQc24R14Crfhi3X5aXwbn5kne3oiERFD2t89ka/hZ3PGzsRNdf0mnF3Xz8IteA7bsQ2n4kgcohQQ\nSkE6e5593Y731vX3K2c5u+ptPT6gvLH3KEVk7utHRETPRumJHKFMcanLI+r6Udgx8LgdyhnJ3PHH\n6ri6fLSuP6+caRz+IvtarhSVF+bZV/NanP9sMRNt5kqmbpKpu1ZzDWPpIp+/295zRi+VEV7nQ5io\n68vwtpl7pr94k5OTvW1PTU31+npdtqe1kmd6e2pqqqk8+fod2Nstfj8NGmeeDRs2WLt2LZiYmDCs\nLvNeE/iy2Z7II5jEE8pU1f14i9IXgWvqch2uxA/rY06o4xfgNHy0Pma10lRfisfxBqUvMolL6nM+\ni/uUPsiPlbOfF/Cb9TVWzpM7PZGIiCH18TmRO5Urp9TlHQPj5+Mg5Qqq45U+yBN4WumPLMGF+NI8\n+/ogvlrX71Gu7lqmNO5X4CtKFbgfvzvP60dERM/2VURuwdfxa0rv4sPKmcYK5dLb082eeWxWzhQ2\n427liqvpX/lX4XrlstxtyhkI3KD0QLbiUrNnM0/iKuUKrY1Yo/RCKFeEfbw+57C6jwPC3FPYFrSY\niTZzJVM3ydRdq7mGsa+eyAULjL9vgfGr622uTWanwwY9i3MX2NeN9TbXD5SzmoiIGLP87ayIiJiR\nv50VERG9SRHpUYvzny1mos1cydRNMnXXaq5hpIhERMTI0hOJiIgZ6YlERERvUkR61OL8Z4uZaDNX\nMnWTTN21mmsYKSIRETGy9EQiImJGeiIREdGbFJEetTj/2WIm2syVTN0kU3et5hpGikhERIwsPZGI\niJiRnkhERPQmRaRHLc5/tpiJNnMlUzfJ1F2ruYaRIhIRESNLTyQiImakJxIREb1JEelRi/OfLWai\nzVzJ1E0ydddqrmGkiERExMjSE4mIiBnpiURERG9SRHrU4vxni5loM1cydZNM3bWaaxiLKSJX4Lt4\nGJ/HwViO9diCe7BszuO34hGcMTB+ct3HVlw3MH4wbq3jD+DYgfsurq+xBRct4j1ERMQijNoTmcB9\nOAHPKj/s78I/wk9xLS7DYbgcJyqF5hQcjXtxvNKk2IiP1eVd+BTWYRXeWpfn4RycrxSqh5TiA5vq\n+q45GdMTiYgYUl89kafxHF6LpXX5I5yJm+pjbsLZdf0s3FKfsx3bcCqOxCFKAYGbB54zuK/b8d66\n/n7lLGdXva3HyhHfR0RELMKoReRJ/An+j1I8pn+YH4Gd9TE76zYchR0Dz9+hnJHMHX+sjqvLR+v6\n83gKh7/IvprX4vxni5loM1cydZNM3bWaaxhLR3zem3GpMq31FP4KvzfnMbvtPZ/Usw8pESntmbfN\n3DP9xZucnOxte2pqqtfX67I9rZU809tTU1NN5cnX78DebvH7adA482zYsMHatWvBxMSEYY3aEzkP\nK/Av6vaFeCdOx3vwhDJVdT/eovRF4Jq6XIcr8cP6mBPq+AU4DR+tj1mtNNWX4nG8QemLTOKS+pzP\nKv2ZW+dkTE8kImJIffVEHlGKxi/WF3sfNuPLypVT6vKOun6n8sP/IBynNNU3KsXmaaU/skQpRl8a\neM70vj6Ir9b1e5Sru5YpjfsV+MqI7yMiIhZh1CLybaUJ/g18p479J+VMY4Vy6e3pZs88NuO2urxb\nueJq+nRgFa5XLuXdppyBwA1KD2SrMnU2fTbzJK5SrtDaiDX2vjKrSXNPYVvQYibazJVM3SRTd63m\nGsaoPRHKZbzXzhl7Ujkrmc/V9TbXJpw0z/izOHeBfd1YbxERMUb521kRETEjfzsrIiJ6kyLSoxbn\nP1vMRJu5kqmbZOqu1VzDSBGJiIiRpScSEREz0hOJiIjepIj0qMX5zxYz0WauZOommbprNdcwUkQi\nImJk6YlERMSM9EQiIqI3KSI9anH+s8VMtJkrmbpJpu5azTWMFJGIiBhZeiIRETEjPZGIiOhNikiP\nWpz/bDETbeZKpm6SqbtWcw0jRSQiIkaWnkhERMxITyQiInqTItKjFuc/W8xEm7mSqZtk6q7VXMNI\nEYmIiJGlJxIRETPSE4mIiN6kiPSoxfnPFjPRZq5k6iaZums11zAWU0SW4Yv4HjbjVCzHemzBPfUx\n067AVjyCMwbGT8bD9b7rBsYPxq11/AEcO3DfxfU1tuCiRbyHiIhYhMX0RG7C3+BzWIpfwh/jp7gW\nl+EwXI4T8XmcgqNxL45XmhQb8bG6vAufwjqswlvr8jycg/OVQvWQUnxgU13fNSdfeiIREUPqqyfy\nerxbKSDwPJ7CmUpxUZdn1/WzcAuew3ZsU85cjsQhSgGBmweeM7iv2/Heuv5+5SxnV72tx8oR30dE\nRCzCqEXkOPwEN+Kb+M/KmcgR2Fkfs7Nuw1HYMfD8HcoZydzxx+q4uny0rk8XqcNfZF/Na3H+s8VM\ntJkrmbpJpu5azTWMpYt43juUaaiH8GfKtNWg3faeT+rZhzBR15fhbTP3TH/xJicne9uemprq9fW6\nbE9rJc/09tTUVFN58vU7sLdb/H4aNM48GzZssHbtWjAxMWFYo/ZE3oj/qZyRwLuUxvkv4z14Qpmq\nuh9vMVtgrqnLdbgSP6yPOaGOX4DT8NH6mNVKU30pHscblL7IJC6pz/ks7lOa8IPSE4mIGFJfPZEn\nlKmmX63b78N38WXlyil1eUddv1P54X+QUniOV/ogT+BppT+yBBfiSwPPmd7XB/HVun6PcnXXMqVx\nvwJfGfF9RETEIizmEt8/wF/i2/h1/BvlTGOFcunt6WbPPDbjtrq8W7niavp0YBWuVy7l3aacgcAN\nSg9kKy41ezbzJK5SptE2Yo29r8xq0txT2Ba0mIk2cyVTN8nUXau5hjFqT4RSPE6ZZ/x9Czz+6nqb\naxNOmmf8WZy7wL5urLeIiBij/O2siIiYkb+dFRERvUkR6VGL858tZqLNXMnUTTJ112quYaSIRETE\nyNITiYiIGemJREREb1JEetTi/GeLmWgzVzJ1k0zdtZprGCkiERExsvREIiJiRnoiERHRmxSRHrU4\n/9liJtrMlUzdJFN3reYaRopIRESMLD2RiIiYkZ5IRET0JkWkRy3Of7aYiTZzJVM3ydRdq7mGkSIS\nEREjS08kIiJmpCcSERG9SRHpUYvzny1mos1cydRNMnXXaq5hpIhERMTI0hOJiIgZ6YlERERvUkR6\n1OL8Z4uZaDNXMnWTTN21mmsYiy0ir8a38OW6vRzrsQX3YNnAY6/AVjyCMwbGT8bD9b7rBsYPxq11\n/AEcO3DfxfU1tuCiRb6HiIgY0WJ7Ih9XisAhOBPX4qd1eRkOw+U4EZ/HKTga9+J4pUmxER+ry7vw\nKazDKry1Ls/DOThfKVQP1deFTXV915xs6YlERAypz57IMfhtXD/wgmfiprp+E86u62fhFjyH7diG\nU3GkUoA21sfdPPCcwX3djvfW9fcrZzm76m09Vi7ifURExIgWU0T+FJ/ACwNjR2BnXd9Zt+Eo7Bh4\n3A7ljGTu+GN1XF0+Wtefx1M4/EX21bwW5z9bzESbuZKpm2TqrtVcw1g64vN+Bz9W+iGTCzxmt73n\nk3r2IUzU9WV428w901+8ycnJ3ranpqZ6fb0u29NayTO9PTU11VSefP0O7O0Wv58GjTPPhg0brF27\nFkxMTBjWqD2Rq3GhcobwCzgUf630PCbxhDJVdT/eovRF4Jq6XIcr8cP6mBPq+AU4DR+tj1mtNNWX\n4nG8QemLTOKS+pzP4j6lCT8oPZGIiCH11RP5JN6E45Qf6vcpReVO5copdXlHXb+zPu6g+pzjlT7I\nE3ha6Y8sqfv40sBzpvf1QXy1rt+jXN21TGncr8BXRnwfERGxCPvrcyLTv9pfo/xQ34LTzZ55bMZt\ndXm3csXV9HNWKc35rUrDfV0dv0HpgWzFpWbPZp7EVcoVWhuxxt5XZjVp7ilsC1rMRJu5kqmbZOqu\n1VzDGLUnMuhv6o3yA/59Czzu6nqbaxNOmmf8WZy7wL5urLeIiBij/O2siIiYkb+dFRERvUkR6VGL\n858tZqLNXMnUTTJ112quYaSIRETEyNITiYiIGemJREREb1JEetTi/GeLmWgzVzJ1k0zdtZprGCki\nERExsvREIiJiRnoiERHRmxSRHrU4/9liJtrMlUzdJFN3reYaRopIRESMLD2RiIiYkZ5IRET05hVY\nRJZasmTJvLdDD13+kr5yi/OfLWaizVzJ1E0ydddqrmHsj/9P5ADzvIX+6/ef//zlPLsXEbH/vZx/\nai7YE1moiLAk/ZKIeEVLTyQiInqTItKjFuc/W8xEm7mSqZtk6q7VXMNIEYmIiJGlJ7KH9EQi4pUt\nPZGIiOhNikiPWpz/bDETbeZKpm6SqbtWcw1j1CLyJtyP7+Jv8Yd1fDnWYwvuwbKB51yBrXgEZwyM\nn4yH633XDYwfjFvr+AM4duC+i+trbMFFI76HiIhYpFF7Im+stym8DptwNj6Mn+JaXIbDcDlOxOdx\nCo7GvTheaU5sxMfq8i58CuuwCm+ty/NwDs5XCtVDSvFRX/tk7JqTMT2RiIgh9dUTeUIpIPAMvqcU\nhzNxUx2/SSkscBZuwXPYjm04FUfiEKWAwM0Dzxnc1+14b11/v3KWs6ve1mPliO8jIiIWYX/0RCbw\ndjyII7Czju+s23AUdgw8Z4dSdOaOP1bH1eWjdf15PIXDX2RfzWtx/rPFTLSZK5m6SabuWs01jMX+\n7azXKWcJf4Sfz7lvt4XnjXryIaXGUdozbxu4b0NdTs7Zrlv1izs5Obnftqempvbr/vbH9kv5fhez\nPTU11VSefP0O7O0Wv58GjTPPhg0brF27FkxMTBjWYj4n8hr8N9yNP6tjjyg/lZ9Qpqrux1uUvghc\nU5frcCV+WB9zQh2/AKfho/Uxq5Wm+lI8jjcofZFJXFKf81ncpzThB6UnEhExpL56IktwAzabLSBw\np3LllLq8Y2D8fByE45Sm+kal2Dyt9EeW4EJ8aZ59fRBfrev3KFd3LVMa9yvwlRHfR0RELMKoReS3\n8Ht4D75VbyuVM40VyqW3p5s989iM2+rybuWKq+lf+VfheuVS3m3KGQilSB1exy81ezbzJK5SrtDa\niDX2vjKrSXNPYVvQYibazJVM3SRTd63mGsaoPZH/YeEC9L4Fxq+ut7k24aR5xp/FuQvs68Z6i4iI\nMcrfztpDeiIR8cqWv50VERG9SRHpUYvzny1mos1cydRNMnXXaq5hpIhERMTI0hPZQ3oiEfHKlp5I\nRET0JkWkRy3Of7aYiTZzJVM3ydRdq7mGkSISEREjS09kD+mJRMQrW3oiERHRmxSRHrU4/9liJtrM\nlUzdJFN3reYaRopIRESMLD2RPaQnEhGvbOmJREREb1JEetTi/GeLmWgzVzJ1k0zdtZprGCkie1hq\nyZIl894OPXT5uMNFRDQnPZE9LHnR+9IviYiXu/REIiKiNykiPWpx/rPFTLSZK5m6SabuWs01jBSR\niIgYWXoie0hPJCJe2dITiYiI3hzIRWQlHsFWXDbmLJ20OP/ZYibazJVM3SRTd63mGsaBWkRejf+o\nFJITcQFOGGuiDqampsYdYS8tZqLNXMnUTTJ112quYRyoReQ3sA3b8Ry+gLNe2pec/4OIw3wIcdeu\nXS9hvtG0mIk2cyVTN8nUXau5hnGgFpGj8ejA9o469hJ6Xmm673n7+c9/9tK+bEREw5aOO8CIOl0m\ndeih/3yvpz399P6OsnT6aoZ5vEY5UZq1Zs0ahxxymKeffnJ/BxnJ9u3bxx1hXi3mSqZukqm7VnMN\n40C9xPedWK30ROAKvIB/N/CYbXhzv7EiIg5438evjDvES22p8kYncBCmHACN9YiIaMcH8L+UM44r\nxpwlIiIiIiJe6Vr9EOJ2fAffwsYxZfgcduLhgbHlWI8tuAfLGsi0Wrni7lv1tnLvp72k3oT78V38\nLf6wjo/zWC2UabXxHqtfwIPKlPJm/Ns6Ps5jtVCm1cZ7rCifcfsWvly3x/3vb75Mq43/OI3Nq5Xp\nrQnl0qiWeiU/UL5hxundeLs9f2Bfi39d1y/DNQ1kuhIf7znHoDfiH9f11ynTpicY77FaKNO4jxW8\nti6X4gG8y/i/r+bL1MKx+jj+EnfW7XEfp/kyDXWcDtTPiSxkDB9CHMq4r4b7GuZ+sOVM3FTXb8LZ\nvSaaPxPjPVZPKL+AwDP4nvI5pHEeq4UyMf7vq/9Xlwcpv8j9zPi/r+bLxHiP1TH4bVw/kGPcx2m+\nTEu8gv8A4xg+hNjZbtyLb+D3x5xl0BHKdJK6PGKMWQb9Ab6NG4znFH/ahHKm9KB2jtV0pgfq9riP\n1auUArfT7JTbuI/VfJkY77H6U3xC+TjCtHEfp/ky7TbEcXq5FZGW/1b7byn/8D+Af6lM47Rm+qP4\n4/ZpHKdM3zyOPxlTjtfhdvwRfj7nvnEdq9fhi0qmZ7RxrF6or38MTsN75tw/jmM1N9Ok8R6r38GP\nlR7DQr/l932cFso01HF6uRWRx5QG5LQ3KWcjLXi8Ln+C/6pMvbVgpzLfDkcq31Tj9mOz/6CuN55j\n9RqlgPwF7qhj4z5W05n+y0CmFo7VtKfw33Gy8R+ruZn+ifEeq3+qTF39ALfgdOV7a5zHab5MNxvy\nOL3cisg3cLzZDyGeZ7ZZNE6vxSF1/Zdwhj0byeN0Jy6u6xeb/eE0TkcOrJ+j/2O1RDmN34w/Gxgf\n57FaKNO4j9U/MDvd8YtYofxmO85jtVCmNw48pu9j9Unll9rjcD7uw4XGe5zmy3SR8X9PjV2LH0I8\nTpmfnVIuzxxXrlvwI/y90jv6sHLF2L3Gd4nh3EwfUX4b+o4yJ3uH/ueJ36VMh0zZ8zLHcR6r+TJ9\nwPiP1Un4Zs31HWV+nfEeq4UyjftYTftnZn+5Hfe/v2mTA5n+QhvHKSIiIiIiIiIiIiIiIiIiIiIi\nIiIiIiIiIiIiIg4E/x8sa0FQV2DKVgAAAABJRU5ErkJggg==\n",
"text": [
""
]
}
],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, for now, we can scatter plot our county data by the total number of people killed versus the number of pedestrians killed."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#let's scatter plot county name by total killed and pedestrians killed.\n",
"countyframe.plot(kind='scatter', x='Total Killed', y='Pedestrians Killed')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 35,
"text": [
""
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nRERERFz2/wFWpr9l9d0eQQAAAABJRU5ErkJggg==\n",
"text": [
""
]
}
],
"prompt_number": 35
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I hope this was helpful. If you have questions or spot bugs, you can find me [on Github](https://github.com/tommeagher), via [email](http://www.tommeagher.com/about.html) or [on Twitter](https://twitter.com/ultracasual)."
]
}
],
"metadata": {}
}
]
}