You are on page 1of 49

911 Calls Capstone Project

2018/11/23

I will be looking at the Emergency 911 Calls Montegomery County Data set as part of one of the capstone
projects for the Udemy course "Python for data science and machine learning bootcamp"
I will be making visualizations of this data set in order to analyze and extract insights. This is my first kernel
using Kaggle.
Start by importing the relevant libraries I plan on using as well as the dataset
In [1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
In [2]:
#Import the data into a dataframe
df = pd.read_csv('../input/911.csv')

Dataset
Let's get some info on this dataset
In [3]:
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 423909 entries, 0 to 423908
Data columns (total 9 columns):
lat 423909 non-null float64
lng 423909 non-null float64
desc 423909 non-null object
zip 371780 non-null float64
title 423909 non-null object
timeStamp 423909 non-null object
twp 423750 non-null object
addr 423909 non-null object
e 423909 non-null int64
dtypes: float64(3), int64(1), object(5)
memory usage: 29.1+ MB
In [4]:
df.head()
Out[4]:
timeSta
lat lng desc zip title twp addr e
mp

REINDEER
- CT & DEAD EMS: BACK 2015-12- REINDEER
40.2978 19525. NEW
0 75.5812 END; NEW PAINS/INJU 10 CT & DEAD 1
76 0 HANOVER
94 HANOVER; RY 17:10:52 END
Station ...

BRIAR PATH
& EMS: BRIAR PATH
- 2015-12-
40.2580 WHITEMARS 19446. DIABETIC HATFIELD &
1 75.2646 10 1
61 H LN; 0 EMERGENC TOWNSHIP WHITEMARS
80 17:29:21
HATFIELD Y H LN
TOWNSHIP...

HAWS AVE;
- NORRISTOW Fire: GAS- 2015-12-
40.1211 19401. NORRISTO
2 75.3519 N; 2015-12-10 ODOR/LEA 10 HAWS AVE 1
82 0 WN
75 @ 14:39:21- K 14:39:21
St...

AIRY ST &
EMS:
- SWEDE ST; 2015-12-
40.1161 19401. CARDIAC NORRISTO AIRY ST &
3 75.3435 NORRISTOW 10 1
53 0 EMERGENC WN SWEDE ST
13 N; Station 16:47:36
Y
308A;...

CHERRYWO
OD CT &
- 2015-12- LOWER CHERRYWO
40.2514 DEAD END; EMS:
4 75.6033 NaN 10 POTTSGRO OD CT & 1
92 LOWER DIZZINESS
50 16:56:52 VE DEAD END
POTTSGROV
E; S...

First, let's explore the data a little.


In [46]:
#check for any missing data
df.isnull().sum()
Out[46]:
lat 0
lng 0
desc 0
zip 52129
title 0
timeStamp 0
twp 159
addr 0
e 0
Reason 0
Hour 0
Month 0
Day of Week 0
Date 0
dtype: int64
We see that there are many missing data points for zip code and some for the township. Therefore, if we look
at the top values in zip codes and townships, we have to keep in mind that much of the zip code data and some
of the township data is missing.
In [5]:
#The top 5 zip codes for 911 calls with the data we have
df['zip'].value_counts().head()
Out[5]:
19401.0 28656
19464.0 27948
19403.0 21631
19446.0 20496
19406.0 14097
Name: zip, dtype: int64
In [6]:
#The top 5 townships for 911 calls with the data we have
df['twp'].value_counts().head()
Out[6]:
LOWER MERION 36441
ABINGTON 25835
NORRISTOWN 23883
UPPER MERION 22694
CHELTENHAM 19629
Name: twp, dtype: int64

Extracting 911 Call Reasons


There seems to be a variety of, what seems like, the reason/results of the 911 call under the title column. I
assume that this is what they use to quickly describe what kind of incident occured.
In [7]:
#Let's see how many unique title codes there are.
df['title'].nunique()
Out[7]:
141
It appears that the values in the title column are preceded with a category. Let's split this into another column
to make it easier to understand what is going on.
In [8]:
df['Reason'] = df['title'].apply(lambda st: st.split(':')[0])
In [9]:
df.head()
Out[9]:
timeSta Reas
lat lng desc zip title twp addr e
mp on

REINDEER
EMS:
- CT & DEAD 2015- REINDEER
40.2978 19525 BACK NEW
0 75.5812 END; NEW 12-10 CT & DEAD 1 EMS
76 .0 PAINS/INJ HANOVER
94 HANOVER; 17:10:52 END
URY
Station ...

BRIAR
PATH &
EMS: BRIAR
- WHITEMAR 2015- HATFIELD
40.2580 19446 DIABETIC PATH &
1 75.2646 SH LN; 12-10 TOWNSHI 1 EMS
61 .0 EMERGEN WHITEMAR
80 HATFIELD 17:29:21 P
CY SH LN
TOWNSHIP.
..

HAWS AVE;
- NORRISTO Fire: GAS- 2015-
40.1211 19401 NORRISTO
2 75.3519 WN; 2015- ODOR/LEA 12-10 HAWS AVE 1 Fire
82 .0 WN
75 12-10 @ K 14:39:21
14:39:21-St...

AIRY ST &
EMS:
- SWEDE ST; 2015-
40.1161 19401 CARDIAC NORRISTO AIRY ST &
3 75.3435 NORRISTO 12-10 1 EMS
53 .0 EMERGEN WN SWEDE ST
13 WN; Station 16:47:36
CY
308A;...

CHERRYW
OOD CT &
- 2015- LOWER CHERRYW
40.2514 DEAD END; EMS:
4 75.6033 NaN 12-10 POTTSGR OOD CT & 1 EMS
92 LOWER DIZZINESS
50 16:56:52 OVE DEAD END
POTTSGRO
VE; S...

Now that we have this new column, let's look at what is happening a little closer
In [10]:
df['Reason'].value_counts()
Out[10]:
EMS 208676
Traffic 151458
Fire 63775
Name: Reason, dtype: int64
In [11]:
#let's visualize the above result to visually compare these numbers
sns.countplot(x='Reason',data=df)
Out[11]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7c015297f0>
We can quickly note, from the above graph, that fires are less represented in our data set.

Extracting Time Data


Let's look into what time frame this dataset covers
In [12]:
#checking the timestamp column datatype
type(df['timeStamp'].iloc[0])
Out[12]:
str
In [13]:
#convert them to DateTime objects
df['timeStamp'] = pd.to_datetime(df['timeStamp'])
In [14]:
type(df['timeStamp'].iloc[0])
Out[14]:
pandas._libs.tslibs.timestamps.Timestamp
Now that the time stamps have been converted, we can begin adding new columns based on the time
information.
In [15]:
df['Hour'] = df['timeStamp'].apply(lambda time: time.hour)
In [16]:
df['Month'] = df['timeStamp'].apply(lambda time: time.month)
In [17]:
dmap = {0:'Mon',1:'Tue',2:'Wed',3:'Thu',4:'Fri',5:'Sat',6:'Sun'}
df['Day of Week'] = df['timeStamp'].apply(lambda time:
time.dayofweek).map(dmap)
#There is a time.weekday_name attribute that could have produced an
equivalent solution, but I wanted to practice mapping a dictionary
In [18]:
#check to see our new dataframe
df.head()
Out[18]:
Da
y
timeSt Rea Ho Mo
lat lng desc zip title twp addr e of
amp son ur nth
We
ek

REINDE
ER CT &
DEAD EMS: 2015- REINDE
- NEW
40.29 END; 195 BACK 12-10 ER CT & EM Th
0 75.58 HANOV 1 17 12
7876 NEW 25.0 PAINS/I 17:10: DEAD S u
1294 ER
HANOVE NJURY 52 END
R; Station
...

BRIAR
PATH &
WHITEM EMS:
2015- HATFIE BRIAR
- ARSH DIABETI
40.25 194 12-10 LD PATH & EM Th
1 75.26 LN; C 1 17 12
8061 46.0 17:29: TOWNS WHITEM S u
4680 HATFIEL EMERG
21 HIP ARSH LN
D ENCY
TOWNS
HIP...

HAWS
AVE;
NORRIS Fire: 2015-
-
40.12 TOWN; 194 GAS- 12-10 NORRIS HAWS Th
2 75.35 1 Fire 14 12
1182 2015-12- 01.0 ODOR/L 14:39: TOWN AVE u
1975
10 @ EAK 21
14:39:21-
St...

AIRY ST
&
EMS:
SWEDE 2015- AIRY ST
- CARDIA
40.11 ST; 194 12-10 NORRIS & EM Th
3 75.34 C 1 16 12
6153 NORRIS 01.0 16:47: TOWN SWEDE S u
3513 EMERG
TOWN; 36 ST
ENCY
Station
308A;...

4 40.25 - CHERRY NaN EMS: 2015- LOWER CHERRY 1 EM 16 12 Th


Da
y
timeSt Rea Ho Mo
lat lng desc zip title twp addr e of
amp son ur nth
We
ek

WOOD
CT &
DEAD WOOD
12-10
75.60 END; DIZZINE POTTSG CT &
1492 16:56: S u
3350 LOWER SS ROVE DEAD
52
POTTSG END
ROVE;
S...

Graphing Reason and Time Data


Now, let's look at this time data with our Reason column.
In [19]:
sns.countplot(x='Day of Week', data = df, hue = 'Reason', palette = 'Set2')
plt.legend(loc='lower left',bbox_to_anchor=(1.0,0.5))
Out[19]:
<matplotlib.legend.Legend at 0x7f7c00c4f860>

In [20]:
sns.countplot(x='Month', data = df, hue = 'Reason', palette = 'Set2')
plt.legend(loc='lower left',bbox_to_anchor=(1.0,0.5))
Out[20]:
<matplotlib.legend.Legend at 0x7f7c00c1a128>

It seems that, at a quick glance at these two graphs, we see that Traffic calls are generally reduced on the
weekends, and that calls because of fire are much lower in number per month than EMS and Traffic.
Let's get a better understanding of the total number of calls per month.
In [21]:
df.groupby('Month').count()
Out[21]:
Day
timeStam Reaso of
lat lng desc zip title twp addr e Hour
p n Wee
k

Mont
h

3782 3782 3782 3348 3782 3781 3782 3782 3782 3782
1 37824 37824
4 4 4 0 4 2 4 4 4 4

3282 3282 3282 2896 3282 3281 3282 3282 3282 3282
2 32828 32828
8 8 8 3 8 7 8 8 8 8

3766 3766 3766 3341 3766 3765 3766 3766 3766 3766
3 37666 37666
6 6 6 6 6 1 6 6 6 6
Day
timeStam Reaso of
lat lng desc zip title twp addr e Hour
p n Wee
k

Mont
h

3358 3358 3358 2948 3358 3357 3358 3358 3358 3358
4 33583 33583
3 3 3 8 3 5 3 3 3 3

3564 3564 3564 3111 3564 3562 3564 3564 3564 3564
5 35644 35644
4 4 4 4 4 8 4 4 4 4

3617 3617 3617 3150 3617 3615 3617 3617 3617 3617
6 36171 36171
1 1 1 1 1 2 1 1 1 1

3640 3640 3640 3186 3640 3639 3640 3640 3640 3640
7 36405 36405
5 5 5 3 5 1 5 5 5 5

3597 3597 3597 3151 3597 3595 3597 3597 3597 3597
8 35972 35972
2 2 2 2 2 7 2 2 2 2

3533 3533 3533 3077 3533 3532 3533 3533 3533 3533
9 35339 35339
9 9 9 2 9 5 9 9 9 9

3781 3781 3781 3291 3781 3780 3781 3781 3781 3781
10 37815 37815
5 5 5 9 5 9 5 5 5 5

3164 3164 3164 2777 3164 3162 3164 3164 3164 3164
11 31643 31643
3 3 3 6 3 8 3 3 3 3

3301 3301 3301 2897 3301 3300 3301 3301 3301 3301
12 33019 33019
9 9 9 6 9 5 9 9 9 9

In [58]:
#let's turn this into a graph to better understand calling trends per month
df.groupby('Month').count().plot.line(use_index = True,y = 'title',legend =
None)
plt.ylabel('count')
Out[58]:
Text(0,0.5,'count')
There's a lot of spikes in the above graph, so let's do a linear regression to see the general trendline and
understand our data better.
In [59]:
sns.lmplot(x='Month',y = 'title', data =
df.groupby('Month').count().reset_index())
plt.ylabel('count')
/opt/conda/lib/python3.6/site-packages/scipy/stats/stats.py:1713:
FutureWarning: Using a non-tuple sequence for multidimensional indexing is
deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this
will be interpreted as an array index, `arr[np.array(seq)]`, which will result
either in an error or a different result.
return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval
Out[59]:
Text(-8.7,0.5,'count')
We see from above that the trendline is slightly negative with large variance towards the beginning and ending
months of the data set.

Graphing Timelines
To continue exploring, let's find out what the actual data looks like for each reason given the date.
In [24]:
#let's use the timestamp information to create a new column
df['Date'] = df['timeStamp'].apply(lambda ts: ts.date())
In [25]:
df.head()
Out[25]:
Da
y
H
timeS Rea Mo of Da
lat lng desc zip title twp addr e ou
tamp son nth W te
r
ee
k

0 40.29 - REINDE 195 EMS: 2015- NEW REINDE 1 EM 17 12 Th 20


Da
y
H
timeS Rea Mo of Da
lat lng desc zip title twp addr e ou
tamp son nth W te
r
ee
k

ER CT &
DEAD 15
END; BACK 12-10 ER CT & -
75.58 HANOV
7876 NEW 25.0 PAINS/I 17:10: DEAD S u 12
1294 ER
HANOV NJURY 52 END -
ER; 10
Station ...

BRIAR
PATH &
20
WHITE EMS: BRIAR
2015- HATFIE 15
- MARSH DIABET PATH &
40.25 194 12-10 LD EM Th -
1 75.26 LN; IC WHITE 1 17 12
8061 46.0 17:29: TOWNS S u 12
4680 HATFIE EMERG MARSH
21 HIP -
LD ENCY LN
10
TOWNS
HIP...

HAWS
AVE; 20
NORRIS Fire: 2015- 15
-
40.12 TOWN; 194 GAS- 12-10 NORRIS HAWS Th -
2 75.35 1 Fire 14 12
1182 2015-12- 01.0 ODOR/ 14:39: TOWN AVE u 12
1975
10 @ LEAK 21 -
14:39:21- 10
St...

AIRY ST
& 20
EMS:
SWEDE 2015- AIRY ST 15
- CARDI
40.11 ST; 194 12-10 NORRIS & EM Th -
3 75.34 AC 1 16 12
6153 NORRIS 01.0 16:47: TOWN SWEDE S u 12
3513 EMERG
TOWN; 36 ST -
ENCY
Station 10
308A;...

CHERR
YWOOD
20
CT & CHERR
2015- 15
- DEAD EMS: LOWER YWOOD
40.25 Na 12-10 EM Th -
4 75.60 END; DIZZIN POTTS CT & 1 16 12
1492 N 16:56: S u 12
3350 LOWER ESS GROVE DEAD
52 -
POTTSG END
10
ROVE;
S...

Now let's plot the total 911 calls by date.


In [60]:
df.groupby('Date').count().plot.line(use_index = True, y = 'title', figsize=
(15,2), legend = None)
plt.ylabel('count')
Out[60]:
Text(0,0.5,'count')

We notice giant outliers in March of 2018 and in November of 2018.

Investigating Outliers
Let's investigate these two major outliers.
In [27]:
df['Date'] = pd.to_datetime(df['Date'])
In [61]:
df.groupby(df[df['Date'].dt.year>=2018]['Date']).count().plot.line(use_index =
True, y = 'title', legend = None)
plt.ylabel('count')
Out[61]:
Text(0,0.5,'count')
We see the first one in March. Let's track it down to what day.
In [29]:
df.groupby(df[(df['Date'].dt.year>= 2018) & (df['Date'].dt.month==3)]
['Date']).count()
Out[29]:
Day
des timeStam add Reaso Hou Mont of Dat
lat lng zip title twp e
c p r n r h Wee e
k

Date

2018
-03- 396 396 396 354 396 396 396 396 396 396 396 396 396 396
01

2018
218 218 218 198 218 218 218 218 218
-03- 2187 2187 2187 2187 2187
7 7 7 6 7 7 7 7 7
02

2018
-03- 917 917 917 836 917 917 917 917 917 917 917 917 917 917
03

2018 412 412 412 369 412 412 412 412 412 412 412 412 412 412
Day
des timeStam add Reaso Hou Mont of Dat
lat lng zip title twp e
c p r n r h Wee e
k

Date

-03-
04

2018
-03- 484 484 484 439 484 484 484 484 484 484 484 484 484 484
05

2018
-03- 456 456 456 397 456 456 455 456 456 456 456 456 456 456
06

2018
-03- 920 920 920 824 920 920 920 920 920 920 920 920 920 920
07

2018
-03- 499 499 499 449 499 499 499 499 499 499 499 499 499 499
08

2018
-03- 439 439 439 396 439 439 439 439 439 439 439 439 439 439
09

2018
-03- 395 395 395 353 395 395 395 395 395 395 395 395 395 395
10

2018
-03- 309 309 309 266 309 309 309 309 309 309 309 309 309 309
11

2018
-03- 340 340 340 293 340 340 340 340 340 340 340 340 340 340
12

2018
-03- 370 370 370 319 370 370 370 370 370 370 370 370 370 370
13
Day
des timeStam add Reaso Hou Mont of Dat
lat lng zip title twp e
c p r n r h Wee e
k

Date

2018
-03- 387 387 387 343 387 387 387 387 387 387 387 387 387 387
14

2018
-03- 377 377 377 340 377 377 377 377 377 377 377 377 377 377
15

2018
-03- 433 433 433 380 433 433 433 433 433 433 433 433 433 433
16

2018
-03- 322 322 322 291 322 322 322 322 322 322 322 322 322 322
17

2018
-03- 318 318 318 277 318 318 318 318 318 318 318 318 318 318
18

2018
-03- 386 386 386 341 386 386 386 386 386 386 386 386 386 386
19

2018
-03- 397 397 397 322 397 397 397 397 397 397 397 397 397 397
20

2018
-03- 484 484 484 427 484 484 484 484 484 484 484 484 484 484
21

2018
-03- 420 420 420 370 420 420 420 420 420 420 420 420 420 420
22
Day
des timeStam add Reaso Hou Mont of Dat
lat lng zip title twp e
c p r n r h Wee e
k

Date

2018
-03- 414 414 414 373 414 414 412 414 414 414 414 414 414 414
23

2018
-03- 387 387 387 347 387 387 387 387 387 387 387 387 387 387
24

2018
-03- 301 301 301 259 301 301 301 301 301 301 301 301 301 301
25

2018
-03- 350 350 350 310 350 350 350 350 350 350 350 350 350 350
26

2018
-03- 338 338 338 292 338 338 338 338 338 338 338 338 338 338
27

2018
-03- 383 383 383 327 383 383 383 383 383 383 383 383 383 383
28

2018
-03- 409 409 409 364 409 409 409 409 409 409 409 409 409 409
29

2018
-03- 339 339 339 302 339 339 339 339 339 339 339 339 339 339
30

2018
-03- 354 354 354 310 354 354 353 354 354 354 354 354 354 354
31

We see that, scanning the above table, that on the 2nd there were about 4-5 times the normal amount of calls
for the rest of the month. Let's see if we can understand what might have happened on that day from the data
we have.
In [30]:
#Checking the reasons to see if it's distributed according to the entire
dataset.
df[df['Date']=='2018-03-02']['Reason'].value_counts()
Out[30]:
Traffic 1328
Fire 568
EMS 291
Name: Reason, dtype: int64
In [31]:
sns.countplot(x='Reason',data=df[df['Date']=='2018-03-02'])
Out[31]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7bf236a898>

We see that this count distribution looks very different than our original total count distribution for the entire
dataset. We can draw from this that there was most likely an event that caused more traffic calls to happen,
maybe a big sports game, weather issue, or something else.
After some quick research, it does appear that Montgomery county was experiencing extreme weather and
power outages on this day. It is very likely that this was the cause of the anomoly from March 2, 2018.
(Source:https://www.pema.pa.gov/about/publicinformation/Daily%20Incident%20Reports/
20180303%20Daily%20Report.pdf)
Now, let's check the other anomoly from November of 2018.
In [32]:
#reusing the same code from before
df.groupby(df[(df['Date'].dt.year>= 2018) & (df['Date'].dt.month==11)]
['Date']).count()
Out[32]:
Day
des timeStam add Reaso Hou Mont of Dat
lat lng zip title twp e
c p r n r h Wee e
k

Date

2018
-11- 374 374 374 325 374 374 374 374 374 374 374 374 374 374
01

2018
-11- 534 534 534 482 534 534 534 534 534 534 534 534 534 534
02

2018
-11- 651 651 651 562 651 651 650 651 651 651 651 651 651 651
03

2018
-11- 323 323 323 281 323 323 323 323 323 323 323 323 323 323
04

2018
-11- 457 457 457 401 457 457 456 457 457 457 457 457 457 457
05

2018
-11- 495 495 495 441 495 495 495 495 495 495 495 495 495 495
06

2018
-11- 439 439 439 389 439 439 439 439 439 439 439 439 439 439
07

2018
-11- 464 464 464 399 464 464 464 464 464 464 464 464 464 464
08

2018
-11- 458 458 458 418 458 458 458 458 458 458 458 458 458 458
09
Day
des timeStam add Reaso Hou Mont of Dat
lat lng zip title twp e
c p r n r h Wee e
k

Date

2018
-11- 420 420 420 379 420 420 420 420 420 420 420 420 420 420
10

2018
-11- 295 295 295 269 295 295 294 295 295 295 295 295 295 295
11

2018
-11- 438 438 438 389 438 438 438 438 438 438 438 438 438 438
12

2018
-11- 437 437 437 371 437 437 436 437 437 437 437 437 437 437
13

2018
-11- 401 401 401 350 401 401 400 401 401 401 401 401 401 401
14

2018
166 166 166 145 166 166 166 166 166
-11- 1662 1662 1662 1662 1662
2 2 2 8 2 2 2 2 2
15

2018
-11- 156 156 156 135 156 156 156 156 156 156 156 156 156 156
16

In [33]:
sns.countplot(x='Reason',data=df[df['Date']=='2018-11-15'])
Out[33]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7bf0a96c18>
Again, we see that something happened on November 15th. Because the November 15th graph also shows a
high count of traffic calls, we have a sense that it could be similar to the March 2nd incident where the cause
was extreme weather.
After quickly researching the date again, we see that it was most likely due to extreme weather, just as it was
March 2nd, 2018. (Source:https://patch.com/pennsylvania/norristown/more-1-200-montgomery-co-peco-
customers-without-power)
It's interesting to note that, of the 3 years of data, both of the anomolies caused by extreme weather were in
2018. Further investigation beyond the scope of this analysis could be done to see if the weather in 2018 for
montegomery county was significantly greater than the previous two years. It would be interesting to see what
specifically caused the comparively large increase in 911 calls for those weather events and not, presumably,
for any in 2016 and 2017. There could be a number of factors (power outages, awareness of incoming
conditions, severity of the weather, etc.) that could be further investigated to try to find the source of what
caused the increase in 911 calls. Again, this is not within the scope of this analysis, but it is worth mentioning
where this could lead and the potential benefit of knowing the cause(s) to gain insight on how to better
prepare for extreme weather conditions in the future..
Out of curiosity, let's continue exploring the number of calls by date, but, this time, let's break it down by
reason.
In [34]:
#unstacking and viewing the groupby table so we can find out how to select
our data.
df.groupby(['Date','Reason']).count().unstack()
Out[34]:
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

2
0
1
5
- 5 1 4 5 1 4 5 1 4 5 1 3 5 1 4 5 1 4 5 1 4 5 1 4 5 1 4 5 1 4 5 1 4 5 1 4
1 8 5 1 8 5 1 8 5 1 3 3 4 8 5 1 8 5 1 8 5 1 8 5 1 8 5 1 8 5 1 8 5 1 8 5 1
2
-
1
0

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 6 6 6 5 6 6 6 6 6 6 6 6
8 3 8 3 8 3 6 0 8 3 8 3 8 3 8 3 8 3 8 3 8 3 8 3
1 8 8 8 9 8 8 8 8 8 8 8 8
6 7 6 7 6 7 6 7 6 7 6 7 6 7 6 7 6 7 6 7 6 7 6 7
2
-
1
1

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 6 6 6 5 6 6 6 6 6 6 6 6
8 4 8 4 8 4 7 1 8 4 8 4 8 4 8 4 8 4 8 4 8 4 8 4
1 9 9 9 4 9 9 9 9 9 9 9 9
8 5 8 5 8 5 0 0 8 5 8 5 8 5 8 5 8 5 8 5 8 5 8 5
2
-
1
2

2 1 5 7 1 5 7 1 5 7 1 4 5 1 5 7 1 5 7 1 5 7 1 5 7 1 5 7 1 5 7 1 5 7 1 5 7
0 9 0 5 9 0 5 9 0 5 7 7 3 9 0 5 9 0 5 9 0 5 9 0 5 9 0 5 9 0 5 9 0 5 9 0 5
1 1 1 1 9 1 1 1 1 1 1 1 1
5
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

-
1
2
-
1
3

2
0
1
5
2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 3 3 3 3 3 3 3 3 3 3 3 3
2 8 2 8 2 8 0 5 2 8 2 8 2 8 2 8 2 8 2 8 2 8 2 8
1 9 9 9 6 9 9 8 9 9 9 9 9
1 4 1 4 1 4 0 0 1 4 1 4 1 4 1 4 1 4 1 4 1 4 1 4
2
-
1
4

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 4 4 4 4 4 4 4 4 4 4 4 4
9 8 9 8 9 8 8 6 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8
1 3 3 3 0 3 3 3 3 3 3 3 3
5 1 5 1 5 1 0 0 5 1 5 1 4 1 5 1 5 1 5 1 5 1 5 1
2
-
1
5

2 1 5 1 1 5 1 1 5 1 1 4 1 1 5 1 1 5 1 1 5 1 1 5 1 1 5 1 1 5 1 1 5 1 1 5 1
0 9 3 3 9 3 3 9 3 3 8 7 1 9 3 3 9 3 3 9 3 3 9 3 3 9 3 3 9 3 3 9 3 3 9 3 3
1 2 1 2 1 2 1 5 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
5
-
1
2
-
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

1
6

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 5 5 5 4 5 5 5 5 5 5 5 5
6 6 6 6 6 6 5 4 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
1 5 5 5 5 5 5 5 5 5 5 5 5
6 6 6 6 6 6 1 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
2
-
1
7

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 3 3 3 3 3 3 3 3 3 3 3 3
6 4 6 4 6 4 5 2 6 4 6 4 6 4 6 4 6 4 6 4 6 4 6 4
1 4 4 4 2 4 4 4 4 4 4 4 4
4 8 4 8 4 8 1 3 4 8 4 8 4 8 4 8 4 8 4 8 4 8 4 8
2
-
1
8

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 4 4 4 4 8 4 4 4 4 4 4 4 4
2 0 2 0 2 0 1 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0
1 8 8 8 4 1 8 8 8 8 8 8 8 8
3 1 3 1 3 1 4 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1
2
-
1
9
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1
- 4 7 4 7 4 7 3 6 4 7 4 7 4 7 4 7 4 7 4 7 4 7 4 7
4 4 4 3 4 4 4 4 4 4 4 4
1 5 7 5 7 5 7 5 5 5 7 5 7 5 7 5 7 5 7 5 7 5 7 5 7
9 9 9 6 9 9 9 9 9 9 9 9
2
-
2
0

2
0
1
5
2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 5 5 5 5 5 5 5 5 5 5 5 5
2 4 2 4 2 4 9 2 2 4 2 4 2 4 2 4 2 4 2 4 2 4 2 4
1 5 5 5 1 5 5 5 5 5 5 5 5
4 8 4 8 4 8 9 6 4 8 4 8 4 8 4 8 4 8 4 8 4 8 4 8
2
-
2
1

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 5 5 5 5 5 5 5 5 5 5 5 5
9 9 9 9 9 9 7 7 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
1 7 7 7 1 7 7 7 7 7 7 7 7
5 6 5 6 5 6 8 0 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6
2
-
2
2

2 1 7 2 1 7 2 1 7 2 1 5 2 1 7 2 1 7 2 1 7 2 1 7 2 1 7 2 1 7 2 1 7 2 1 7 2
0 7 0 7 7 0 7 7 0 7 5 7 1 7 0 7 7 0 7 7 0 7 7 0 7 7 0 7 7 0 7 7 0 7 7 0 7
1 7 2 7 2 7 2 6 7 7 2 7 2 7 2 7 2 7 2 7 2 7 2 7 2
5
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

-
1
2
-
2
3

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 8 8 8 7 8 8 8 8 8 8 8 8
8 7 8 7 8 7 5 5 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7
1 5 5 5 8 5 5 4 5 5 5 5 5
6 6 6 6 6 6 8 1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
2
-
2
4

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1
- 6 7 6 7 6 7 5 5 6 7 6 7 6 7 6 7 6 7 6 7 6 7 6 7
8 8 8 5 8 8 8 8 8 8 8 8
1 7 4 7 4 7 4 5 2 7 4 7 4 7 4 7 4 7 4 7 4 7 4 7 4
0 0 0 9 0 0 0 0 0 0 0 0
2
-
2
5

2 1 3 8 1 3 8 1 3 8 1 3 6 1 3 8 1 3 8 1 3 8 1 3 8 1 3 8 1 3 8 1 3 8 1 3 8
0 6 6 3 6 6 3 6 6 3 5 4 7 6 6 3 6 6 3 6 6 3 6 6 3 6 6 3 6 6 3 6 6 3 6 6 3
1 7 7 7 7 7 7 7 7 7 7 7 7
5
-
1
2
-
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

2
6

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1
- 3 9 3 9 3 9 3 8 3 9 3 9 3 9 3 9 3 9 3 9 3 9 3 9
8 8 8 7 8 8 8 8 8 8 8 8
1 8 0 8 0 8 0 5 0 8 0 8 0 8 0 8 0 8 0 8 0 8 0 8 0
9 9 9 5 9 9 9 9 9 9 9 9
2
-
2
7

2
0
1
5
2 1 2 1 2 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 4 4 4 4 9 4 4 4 4 4 4 4 4
1 1 1 1 1 1 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 9 9 9 3 7 9 9 9 9 9 9 9 9
6 5 6 5 6 5 7 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5
2
-
2
8

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 4 4 4 4 4 4 4 4 4 4 4 4
8 3 8 3 8 3 6 0 8 3 8 3 8 3 8 3 8 3 8 3 8 3 8 3
1 8 8 8 4 8 8 8 8 8 8 8 8
3 6 3 6 3 6 2 9 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6
2
-
2
9
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 3 3 3 2 3 3 3 3 3 3 3 3
8 3 8 3 8 3 6 1 8 3 8 3 8 3 8 3 8 3 8 3 8 3 8 3
1 2 2 2 8 2 2 1 2 2 2 2 2
1 9 1 9 1 9 2 5 1 9 1 9 0 9 1 9 1 9 1 9 1 9 1 9
2
-
3
0

2
0
1
5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 3 3 3 3 8 3 3 3 3 3 3 3 3
6 0 6 0 6 0 5 6 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0
1 9 9 9 2 6 9 9 9 9 9 9 9 9
7 8 7 8 7 8 0 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8
2
-
3
1

2
0
1
6
1 1 1 1 1 1 1 1 1 1 1 1
- 3 5 3 5 3 5 3 4 3 5 3 5 3 5 3 5 3 5 3 5 3 5 3 5
7 7 7 5 7 7 7 7 7 7 7 7
0 4 6 4 6 4 6 1 8 4 6 4 6 4 6 4 6 4 6 4 6 4 6 4 6
2 2 2 7 2 2 2 2 2 2 2 2
1
-
0
1

2 1 3 1 1 3 1 1 3 1 1 3 8 1 3 1 1 3 1 1 3 1 1 3 1 1 3 1 1 3 1 1 3 1 1 3 1
0 9 6 0 9 6 0 9 6 0 7 4 8 9 6 0 9 6 0 9 6 0 9 6 0 9 6 0 9 6 0 9 6 0 9 6 0
1 5 3 5 3 5 3 8 5 3 5 3 4 3 5 3 5 3 5 3 5 3 5 3
6
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

-
0
1
-
0
2

2
0
1
6
1 1 1 1 1 1 1 1 1 1 1 1
- 4 9 4 9 4 9 3 7 4 9 4 9 4 9 4 9 4 9 4 9 4 9 4 9
8 8 8 6 8 8 8 8 8 8 8 8
0 3 6 3 6 3 6 6 9 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6
3 3 3 9 3 3 3 3 3 3 3 3
1
-
0
3

2
0
1
6
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 6 6 6 5 6 6 6 6 6 6 6 6
9 3 9 3 9 3 8 0 9 3 9 3 9 3 9 3 9 3 9 3 9 3 9 3
0 5 5 5 6 5 5 5 5 5 5 5 5
8 8 8 8 8 8 3 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1
-
0
4

2 1 7 1 1 7 1 1 7 1 1 6 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1
0 9 7 7 9 7 7 9 7 7 7 2 4 9 7 7 9 7 7 9 7 7 9 7 7 9 7 7 9 7 7 9 7 7 9 7 7
1 7 1 7 1 7 1 0 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1
6
-
0
1
-
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

0
5

2
0
1
6
2 1 2 1 2 1 1 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1
- 7 7 7 6 7 7 7 7 7 7 7 7
0 5 0 5 0 5 7 3 0 5 0 5 9 5 0 5 0 5 0 5 0 5 0 5
0 7 7 7 9 7 7 7 7 7 7 7 7
0 3 0 3 0 3 3 3 0 3 0 3 9 3 0 3 0 3 0 3 0 3 0 3
1
-
0
6

2
0
1
6
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 7 7 7 5 9 7 7 7 7 7 7 7 7
9 1 9 1 9 1 8 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1
0 1 1 1 8 2 1 1 1 1 1 1 1 1
9 5 9 5 9 5 4 9 5 9 5 9 5 9 5 9 5 9 5 9 5 9 5
1
-
0
7

2
0
1
6
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 5 5 5 5 9 5 5 5 5 5 5 5 5
9 1 9 1 9 1 8 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1
0 5 5 5 0 5 5 5 5 5 5 5 5 5
3 1 3 1 3 1 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1
1
-
0
8
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 6 6 6 6 6 6 6 6 6 6 6 6
8 5 8 5 8 5 7 2 8 5 8 5 8 5 8 5 8 5 8 5 8 5 8 5
1 4 4 4 2 4 4 4 4 4 4 4 4
9 5 9 5 9 5 8 7 9 5 9 5 9 5 9 5 9 5 9 5 9 5 9 5
0
-
1
8

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 6 6 6 5 6 6 6 6 6 6 6 6
7 5 7 5 7 5 5 3 7 5 7 5 7 5 7 5 7 5 7 5 7 5 7 5
1 0 0 0 4 0 0 0 0 0 0 0 0
4 3 4 3 4 3 5 2 4 3 4 3 4 3 4 3 4 3 4 3 4 3 4 3
0
-
1
9

2
0
1
8
2 1 2 1 2 1 2 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 7 7 7 5 9 7 7 7 7 7 7 7 7
2 3 2 3 2 3 0 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
1 1 1 1 7 8 1 1 1 1 1 1 1 1
9 4 9 4 9 4 5 9 4 9 4 9 4 9 4 9 4 9 4 9 4 9 4
0
-
2
0
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1
- 5 9 5 9 5 9 4 7 5 9 5 9 5 9 5 9 5 9 5 9 5 9 5 9
8 8 8 6 8 8 8 8 8 8 8 8
1 0 2 0 2 0 2 6 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2
6 6 6 5 6 6 6 6 6 6 6 6
0
-
2
1

2
0
1
8
2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 5 5 5 5 5 5 5 5 5 5 5 5
0 5 0 5 0 5 9 2 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5
1 7 7 7 3 7 7 7 7 7 7 7 7
7 3 7 3 7 3 7 7 7 3 7 3 7 3 7 3 7 3 7 3 7 3 7 3
0
-
2
2

2
0
1
8
2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 5 5 5 5 5 5 5 5 5 5 5 5
1 6 1 6 1 6 9 3 1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 6
1 5 5 5 1 5 5 5 5 5 5 5 5
4 0 4 0 4 0 7 7 4 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0
0
-
2
3

2 1 4 1 1 4 1 1 4 1 1 3 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4 1
0 7 2 8 7 2 8 7 2 8 6 8 5 7 2 8 7 2 8 7 2 8 7 2 8 7 2 8 7 2 8 7 2 8 7 2 8
1 8 6 8 6 8 6 1 5 8 6 8 6 8 6 8 6 8 6 8 6 8 6 8 6
8
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

-
1
0
-
2
4

2
0
1
8
2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 6 6 6 5 6 6 6 6 6 6 6 6
0 6 0 6 0 6 8 3 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 6
1 1 1 1 4 1 1 1 1 1 1 1 1
4 9 4 9 4 9 6 0 4 9 4 9 4 9 4 9 4 9 4 9 4 9 4 9
0
-
2
5

2
0
1
8
2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 6 6 6 5 6 6 6 6 6 6 6 6
2 6 2 6 2 6 0 3 2 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6
1 1 1 1 6 1 1 1 1 1 1 1 1
2 3 2 3 2 3 1 4 2 3 2 3 1 3 2 3 2 3 2 3 2 3 2 3
0
-
2
6

2 1 7 1 1 7 1 1 7 1 1 6 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1 1 7 1
0 9 2 9 9 2 9 9 2 9 7 1 6 9 2 9 9 2 9 9 2 9 9 2 9 9 2 9 9 2 9 9 2 9 9 2 9
1 4 8 4 8 4 8 5 1 4 8 4 8 4 8 4 8 4 8 4 8 4 8 4 8
8
-
1
0
-
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

2
7

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1
- 4 9 4 9 4 9 3 7 4 9 4 9 4 9 4 9 4 9 4 9 4 9 4 9
8 8 8 6 8 8 8 8 8 8 8 8
1 7 2 7 2 7 2 8 1 7 2 7 2 7 2 7 2 7 2 7 2 7 2 7 2
2 2 2 0 2 2 2 2 2 2 2 2
0
-
2
8

2
0
1
8
2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 2 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
1 8 8 8 4 8 8 8 8 8 8 8 8
0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9
0
-
2
9

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 5 5 5 4 5 5 5 5 5 5 5 5
9 8 9 8 9 8 8 5 9 8 9 8 9 8 9 8 9 8 9 8 9 8 9 8
1 3 3 3 8 3 3 3 3 3 3 3 3
8 7 8 7 8 7 2 4 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7
0
-
3
0
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

2
0
1
8
2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 7 7 7 6 7 7 7 7 7 7 7 7
3 7 3 7 3 7 2 5 3 7 3 7 3 7 3 7 3 7 3 7 3 7 3 7
1 4 4 4 8 4 4 4 4 4 4 4 4
5 2 5 2 5 2 0 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2
0
-
3
1

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 6 6 6 5 6 6 6 6 6 6 6 6
7 3 7 3 7 3 5 0 7 3 7 3 7 3 7 3 7 3 7 3 7 3 7 3
1 6 6 6 9 6 6 6 6 6 6 6 6
2 6 2 6 2 6 8 8 2 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6
1
-
0
1

2
0
1
8
2 1 2 2 1 2 2 1 2 2 1 1 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2
-
2 0 0 2 0 0 2 0 0 0 0 7 2 0 0 2 0 0 2 0 0 2 0 0 2 0 0 2 0 0 2 0 0 2 0 0
1
0 9 5 0 9 5 0 9 5 8 1 3 0 9 5 0 9 5 0 9 5 0 9 5 0 9 5 0 9 5 0 9 5 0 9 5
1
-
0
2

2 2 1 2 2 1 2 2 1 2 2 9 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2
0 4 0 9 4 0 9 4 0 9 1 0 5 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9 4 0 9
1 7 7 7 7 7 7 7 7 7 5 7 7 7 7 7 7 7 7 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
8
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

-
1
1
-
0
3

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 4 4 4 3 8 4 4 4 4 4 4 4 4
7 0 7 0 7 0 6 7 0 7 0 7 0 7 0 7 0 7 0 7 0 7 0
1 2 2 2 5 3 2 2 2 2 2 2 2 2
3 8 3 8 3 8 3 3 8 3 8 3 8 3 8 3 8 3 8 3 8 3 8
1
-
0
4

2
0
1
8
2 2 2 2 2 2 1 1 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2
- 4 4 4 4 4 4 4 4 4 4 4 4
0 0 0 0 0 0 8 7 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0
1 9 9 9 4 9 9 9 9 9 9 9 9
0 8 0 8 0 8 0 7 0 8 0 8 9 8 0 8 0 8 0 8 0 8 0 8
1
-
0
5

2 2 7 2 2 7 2 2 7 2 1 5 1 2 7 2 2 7 2 2 7 2 2 7 2 2 7 2 2 7 2 2 7 2 2 7 2
0 0 0 2 0 0 2 0 0 2 9 9 8 0 0 2 0 0 2 0 0 2 0 0 2 0 0 2 0 0 2 0 0 2 0 0 2
1 5 0 5 0 5 0 5 7 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0
8
-
1
1
-
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

0
6

2
0
1
8
2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 5 5 5 4 5 5 5 5 5 5 5 5
1 7 1 7 1 7 9 4 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7
1 6 6 6 9 6 6 6 6 6 6 6 6
3 0 3 0 3 0 6 4 3 0 3 0 3 0 3 0 3 0 3 0 3 0 3 0
1
-
0
7

2
0
1
8
2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 6 6 6 5 6 6 6 6 6 6 6 6
1 8 1 8 1 8 9 4 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8
1 6 6 6 6 6 6 6 6 6 6 6 6
3 5 3 5 3 5 5 8 3 5 3 5 3 5 3 5 3 5 3 5 3 5 3 5
1
-
0
8

2
0
1
8
2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 6 6 6 5 6 6 6 6 6 6 6 6
0 9 0 9 0 9 8 7 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9
1 1 1 1 7 1 1 1 1 1 1 1 1
3 4 3 4 3 4 6 5 3 4 3 4 3 4 3 4 3 4 3 4 3 4 3 4
1
-
0
9
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 6 6 6 6 6 6 6 6 6 6 6 6
8 6 8 6 8 6 7 4 8 6 8 6 8 6 8 6 8 6 8 6 8 6 8 6
1 8 8 8 5 8 8 8 8 8 8 8 8
4 8 4 8 4 8 2 2 4 8 4 8 4 8 4 8 4 8 4 8 4 8 4 8
1
-
1
0

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1
- 5 8 5 8 5 8 5 6 5 8 5 8 5 8 5 8 5 8 5 8 5 8 5 8
6 6 6 5 6 6 5 6 6 6 6 6
1 3 2 3 2 3 2 1 8 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2
0 0 0 0 0 0 9 0 0 0 0 0
1
-
1
1

2
0
1
8
2 1 2 1 2 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 8 8 8 7 8 8 8 8 8 8 8 8
1 4 1 4 1 4 9 2 1 4 1 4 1 4 1 4 1 4 1 4 1 4 1 4
1 3 3 3 4 3 3 3 3 3 3 3 3
1 4 1 4 1 4 2 3 1 4 1 4 1 4 1 4 1 4 1 4 1 4 1 4
1
-
1
2

2 1 6 1 1 6 1 1 6 1 1 6 1 1 6 1 1 6 1 1 6 1 1 6 1 1 6 1 1 6 1 1 6 1 1 6 1
0 8 8 8 8 8 8 8 8 8 6 1 4 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 7 2 7 2 7 2 8 2 7 2 7 2 6 2 7 2 7 2 7 2 7 2 7 2
8
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

-
1
1
-
1
3

2
0
1
8
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 5 5 5 5 5 5 5 5 5 5 5 5
8 6 8 6 8 6 7 2 8 6 8 6 8 6 8 6 8 6 8 6 8 6 8 6
1 4 4 4 1 4 4 4 4 4 4 4 4
7 0 7 0 7 0 7 2 7 0 7 0 6 0 7 0 7 0 7 0 7 0 7 0
1
-
1
4

2
0
1
8 1 1 1 1 1 1 1 1 1 1 1 1
2 1 2 1 2 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
- 3 3 3 9 1 3 3 3 3 3 3 3 3
2 1 2 1 2 1 9 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
1 2 2 2 8 6 2 2 2 2 2 2 2 2
0 8 0 8 0 8 1 0 8 0 8 0 8 0 8 0 8 0 8 0 8 0 8
1 4 4 4 9 4 4 4 4 4 4 4 4
-
1
5

2 4 2 9 4 2 9 4 2 9 4 1 7 4 2 9 4 2 9 4 2 9 4 2 9 4 2 9 4 2 9 4 2 9 4 2 9
0 5 0 1 5 0 1 5 0 1 2 9 4 5 0 1 5 0 1 5 0 1 5 0 1 5 0 1 5 0 1 5 0 1 5 0 1
1
8
-
1
1
-
timeSt Mont Day of
lat lng desc zip title twp addr e Hour
amp h Week

T T T T T T T T T T T T
R
r r r r r r r r r r r r
e F F F F F F F F F F F F
E a E a E a E a E a E a E a E a E a E a E a E a
a i i i i i i i i i i i i
M f M f M f M f M f M f M f M f M f M f M f M f
s r r r r r r r r r r r r
S f S f S f S f S f S f S f S f S f S f S f S f
o e e e e e e e e e e e e
i i i i i i i i i i i i
n
c c c c c c c c c c c c

D
a
t
e

1
6

1073 rows × 36 columns

In [64]:
#Traffic
df.groupby(['Date','Reason']).count()['title'].unstack().plot.line(use_index =
True, y = 'Traffic', figsize= (15,2), legend = None)
plt.title('Traffic')
plt.ylabel('count')
Out[64]:
Text(0,0.5,'count')

In [65]:
#EMS
df.groupby(['Date','Reason']).count()['title'].unstack().plot.line(use_index =
True, y = 'EMS', figsize= (15,2), legend = None)
plt.title('EMS')
plt.ylabel('count')
Out[65]:
Text(0,0.5,'count')

In [66]:
#Fire
df.groupby(['Date','Reason']).count()['title'].unstack().plot.line(use_index =
True, y = 'Fire', figsize= (15,2), legend = None)
plt.title('Fire')
plt.ylabel('count')
Out[66]:
Text(0,0.5,'count')

We see that the first two graphs show us roughly what we expected - the traffic graph having two large outliers
that we investigated earlier, and the EMS graph being about average, with the exception of a few datapoints
having less than average (because these are not zero, indicating something wrong with the data, and seem like
reasonable decreases, we're going to assume that they are part of the natural outliers that you would see in any
dataset).
What we didn't notice until now, though, was that, along with the number of traffic calls being high on March
2, 2018, we also see that the number of calls for fire were abnormally high as well. With the count plot earlier,
we were simply looking for a difference in distribution, not necessarily in quantity, over each category to
denote it being abnormal. Now, however, going back to the count plot for March 2, 2018, we see that the fire
count is around 600, much larger than the percieved average in the fire calls graph above. This shows the
importance of checking each of the major categories in your data, especially ones that could lead you to
conclusions, so that you can more accurately see what is going on. In this case, it wasn't just that severe
weather most likely attributed to a higher traffic call count, it also attributed to higher fire count for March 2,
2018.
From here, another place you could explore, is the question following question: "Why were there more fire
calls in the March 2,2018 weather incident but not the November 11th, 2018 weather incident?". This question
is beyond the scope of this analysis but it's also worth mentioning where you could go because of this data,
potentially leading to more information on how to specifically prevent more fire accidents by studying these
two dates and analyzing what occured and why.

Heat Maps
Finally, let's move to looking at how the time of day and day of week interact with the number of 911 calls.
For this, we'll be creating a heat map using seaborn.
In [38]:
#First need to change the dataframe to a pivot table with days of week and
hours in day
dfht = df.groupby(['Day of Week','Hour']).count().unstack()['title']
dfht
Out[38]:
H
o 1 1 1 1 1 1 1 1 1 1 2 2 2 2
0 1 2 3 4 5 6 7 8 9
u 0 1 2 3 4 5 6 7 8 9 0 1 2 3
r

D
a
y
of
W
ee
k

1 1 1 1 2 3 3 3 3 3 4 4 4 4 4 3 3 2 2 2 1
9 8 8
F 1 0 0 6 6 1 2 4 6 8 0 1 5 7 4 6 2 7 4 2 8
3 3 2
ri 8 0 5 7 8 8 9 9 6 7 0 5 1 1 8 1 5 8 4 1 6
0 2 1
5 1 1 6 9 5 5 4 7 9 2 0 4 1 9 6 4 9 5 0 6

1 1 1 2 3 3 3 3 3 3 3 3 4 4 3 2 2 2 1 1
M 9 8 7 8
2 1 7 8 5 6 4 6 7 5 5 9 0 0 5 8 4 0 6 2
o 7 5 8 7
0 2 2 2 8 8 2 0 5 7 4 7 6 0 1 2 1 0 9 8
n 4 7 4 1
7 4 9 9 8 5 2 0 2 1 7 5 3 3 2 1 8 5 8 3

1 1 1 1 1 1 2 2 3 3 3 3 3 3 3 3 3 3 2 2 2 1
9 9
S 5 3 2 0 2 6 2 7 1 4 5 5 4 2 3 2 1 0 6 4 0 9
3 8
at 1 3 0 1 3 4 1 6 1 2 4 2 7 8 4 7 7 3 3 3 7 1
6 5
5 2 6 2 0 0 1 6 9 8 4 4 9 4 8 4 4 6 2 2 3 3

S 1 1 1 1 9 9 1 1 1 2 2 2 3 2 2 2 2 2 2 2 2 1 1 1
H
o 1 1 1 1 1 1 1 1 1 1 2 2 2 2
0 1 2 3 4 5 6 7 8 9
u 0 1 2 3 4 5 6 7 8 9 0 1 2 3
r

D
a
y
of
W
ee
k

5 3 2 0 1 5 9 4 7 7 0 8 9 8 8 8 8 6 3 9 6 4
u 5 4
2 3 6 3 1 6 3 2 7 8 7 8 9 2 5 7 2 7 6 9 3 7
n 4 1
0 1 3 3 9 8 3 1 6 7 8 7 2 8 5 2 9 9 2 4 2 0

1 1 1 2 3 3 3 3 3 4 3 4 4 4 3 2 2 2 1 1
T 8 9 7 7
1 0 8 9 4 4 5 5 7 0 9 1 0 4 5 9 5 2 7 4
h 7 2 7 8
1 9 0 1 6 5 3 1 9 3 0 3 5 1 7 2 7 3 8 8
u 3 0 5 4
5 1 1 3 8 7 3 4 6 1 4 9 3 2 8 3 9 0 4 6

1 1 1 2 3 3 3 3 3 3 3 4 4 4 3 2 2 2 1 1
T 9 8 7 8
0 0 8 9 6 5 5 6 6 7 8 0 2 3 7 9 5 1 7 3
u 1 1 8 2
8 7 0 1 5 6 1 3 8 4 3 8 6 9 5 6 3 4 0 5
e 8 2 3 4
6 5 6 2 0 3 7 6 1 9 1 7 5 6 3 0 5 7 5 0

1 1 1 3 3 3 3 3 3 3 3 4 4 4 3 2 2 2 1 1
W 9 8 7 7
0 0 7 0 5 5 4 6 7 6 9 1 4 4 6 9 6 2 7 3
e 5 0 9 1
2 4 6 6 6 2 7 3 5 9 3 4 4 8 0 2 4 3 9 9
d 2 8 5 1
2 0 3 0 6 8 3 1 6 6 3 9 3 7 9 7 5 6 4 9

In [39]:
fig, ax = plt.subplots(figsize=(12,6))
sns.heatmap(dfht, cmap='coolwarm',ax = ax)
Out[39]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7bf092c748>
We see that most of the call density comes during the day and most prevelent on business days, which are both
expected. Let's look at a cluster map of this data to better understand the similarities.
In [67]:
sns.clustermap(dfht, cmap = 'coolwarm', figsize = (12,10))
Out[67]:
<seaborn.matrix.ClusterGrid at 0x7f7bf1c18a90>
This cluster map more clearly shows that the hours and days of the week that have the most density are the
weekdays during conventional working hours of 9 am to 6 pm.
Let's find out what the heatmap of the month and the day of the week looks like.
In [41]:
#Creating the dataframe we'll use
dfmt = df.groupby(['Day of Week','Month']).count().unstack()['title']
dfmt
Out[41]:
Month 1 2 3 4 5 6 7 8 9 10 11 12

Day of
Week

734 538 452


Fri 5532 4848 5195 4989 5867 5312 6010 5179 5570
4 0 5

466 579 415


Mon 5716 5214 5154 5019 5045 5212 4675 6385 4286
3 2 7

491 488 404


Sat 5103 4431 4947 4275 4868 4355 5023 5051 5200
4 3 3

356 511 321


Sun 4882 3806 4628 3940 4019 3963 4245 4852 3896
9 4 0

601 495 597


Thu 4985 4708 4637 5469 5951 5328 5300 4940 4899
0 4 8

509 548 482


Tue 6118 4755 4413 6203 5013 5690 4930 5827 4691
0 8 3

607 479 490


Wed 5488 5066 4609 5749 5408 6112 5156 5581 4477
6 4 7

In [42]:
#Heatmap
fig, ax = plt.subplots(figsize=(12,6))
sns.heatmap(dfmt, cmap='coolwarm', ax = ax)
Out[42]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f7bf07511d0>
We see that the biggest density is on Friday in March. This is surely influenced by the weather incident that we
looked at earlier that fell on Friday, March 2, 2018. It's important to note that, although we expected to see a
heavier density in November due to the other incident, at the time of this analysis, our data stops mid-
November, making the months of November and December less valuable to look at due to the lower amount of
data in the dataset.
In [43]:
#let's make a cluster map of the same information
sns.clustermap(dfmt, cmap = 'coolwarm', figsize = (12,10))
Out[43]:
<seaborn.matrix.ClusterGrid at 0x7f7bf0716d68>
The most clear observation we can make from the clustermap is that sunday is generally the lowest day of the
week for 911 calls.
Conclusion
In this visual analysis we were able to practice many different visualization techniques while exploring this
dataset. We used pandas to create dataframes and sift through our data, reorganizing, extracting, and graphing
important data categories that we want to visualize. For the dataset, we found the EMS-related calls
represented the most 911 calls, followed by traffic and then fire. We found 2 outliers that occured on March
2nd, 2018 and November 15th, 2018, both likely due to sever weather conditions, and mentioned how, with
more research, you could draw insights from the investigation of these two dates and the data behind it.
I enjoyed learning utilizing my first kaggle kernel and getting to practice data visualization with this dataset. I
would be grateful for any constructive feedback you may have for me!
In [ ]:

You might also like