In [1]:
import pandas as pd
#import pandas as pd
In [2]:
import datetime
import datetime as dt
# import datetime
# import datetime as dt
In [3]:
dt.datetime.strptime('08/04/2013', '%m/%d/%Y')
datetime.datetime(2013, 8, 4, 0, 0)
parser = lambda date: pd.datetime.strptime(date, '%m/%d/%Y')
In [4]:
!head -n 10000 violations.csv > small-violations.csv
In [5]:
df = pd.read_csv("small-violations.csv", na_values= {'Vehicle Year': ['0']}, parse_dates=[4], date_parser=parser, dtype=str)
In [6]:
df.tail(20)
Out[6]:
Summons Number
Plate ID
Registration State
Plate Type
Issue Date
Violation Code
Vehicle Body Type
Vehicle Make
Issuing Agency
Street Code1
...
Vehicle Color
Unregistered Vehicle?
Vehicle Year
Meter Number
Feet From Curb
Violation Post Code
Violation Description
No Standing or Stopping Violation
Hydrant Violation
Double Parking Violation
9979
1349994406
GEF7027
NY
PAS
2013-07-15
52
SDN
NISSA
X
0
...
GRY
0
2003
-
0
NaN
NaN
NaN
NaN
NaN
9980
1349994571
EUX4225
NY
PAS
2013-07-21
40
SDN
NISSA
P
0
...
BLUE
0
2003
-
0
NaN
NaN
NaN
NaN
NaN
9981
1349994716
GHF9746
NY
PAS
2013-08-10
40
SDN
HONDA
P
0
...
BLACK
0
2013
-
2
NaN
NaN
NaN
NaN
NaN
9982
1349994741
HX55885
NY
PAS
2013-08-09
70
SDN
VOLKS
P
21290
...
GOLD
0
1974
-
0
NaN
NaN
NaN
NaN
NaN
9983
1349994753
HX55885
NY
PAS
2013-08-09
71
SDN
VOLKS
P
21290
...
GOLD
0
1974
-
0
NaN
NaN
NaN
NaN
NaN
9984
1349994807
TME33R
NJ
PAS
2013-08-09
78
TRLR
NaN
P
0
...
WHITE
0
NaN
-
0
NaN
NaN
NaN
NaN
NaN
9985
1349994819
98166JT
99
COM
2013-08-09
78
VAN
FORD
P
0
...
WHITE
0
2008
-
0
NaN
NaN
NaN
NaN
NaN
9986
1349995514
EUE8098
99
PAS
2013-07-23
27
SUBN
MERCU
P
0
...
GRN
0
1999
-
0
NaN
NaN
NaN
NaN
NaN
9987
1349995526
54726MC
NY
COM
2013-07-23
78
VAN
CHEVR
P
0
...
WH
0
2008
-
0
NaN
NaN
NaN
NaN
NaN
9988
1349995538
7AB6161
MD
PAS
2013-07-23
78
SUBN
GMC
P
0
...
GRY
0
NaN
-
0
NaN
NaN
NaN
NaN
NaN
9989
1349995551
66247MC
NY
COM
2013-07-25
78
DUMP
MACK
P
44690
...
RD
0
2001
-
0
NaN
NaN
NaN
NaN
NaN
9990
1349995654
GBZ2160
NY
PAS
2013-08-14
71
SDN
NISSA
P
24490
...
BLACK
0
1999
-
0
NaN
NaN
NaN
NaN
NaN
9991
1349995666
HST2419
PA
PAS
2013-08-14
40
SDN
BMW
P
24490
...
BLK
0
NaN
-
10
NaN
NaN
NaN
NaN
NaN
9992
1349995678
GHL3189
NY
PAS
2013-08-04
71
SUBN
CHRYS
P
23090
...
BLUE
0
2009
-
0
NaN
NaN
NaN
NaN
NaN
9993
1349995691
GAX3159
NY
PAS
2013-08-04
71
SDN
NISSA
P
23090
...
GY
0
2006
-
0
NaN
NaN
NaN
NaN
NaN
9994
1349995721
GBJ4159
NY
PAS
2013-07-27
71
SDN
TOYOT
P
25935
...
BLUE
0
2004
-
0
NaN
NaN
NaN
NaN
NaN
9995
1349995733
JDD3205
PA
PAS
2013-07-13
40
SDN
NISSA
P
24740
...
GY
0
NaN
-
1
NaN
NaN
NaN
NaN
NaN
9996
1349995745
GFD4344
NY
PAS
2013-07-13
40
SDN
CHRYS
P
29090
...
GY
0
2013
-
5
NaN
NaN
NaN
NaN
NaN
9997
1349995836
GCG2966
NY
PAS
2013-08-07
74
SDN
NISSA
P
24090
...
BLACK
0
2005
-
0
NaN
NaN
NaN
NaN
NaN
9998
1349995850
GGH5393
NY
PAS
2013-08-04
74
SDN
HYUND
P
0
...
RED
0
1998
-
0
NaN
NaN
NaN
NaN
NaN
20 rows × 43 columns
In [7]:
df['Date First Observed'].value_counts()
Out[7]:
0 9573
20130722 24
20130731 23
20130802 21
20130730 19
20130812 18
20130809 16
20130724 14
20130720 13
20130718 13
20130805 12
20130813 12
20130814 11
20130811 11
20130801 11
20130810 11
20130807 10
20130725 10
20130803 10
20130726 10
20130729 9
20130806 9
20130723 9
20130717 9
20130719 9
20130721 8
20130712 8
20130804 8
20130727 7
20130808 6
...
20130820 4
20130822 2
20130709 2
20130825 2
20130816 2
20130715 2
20130624 1
20130708 1
20130629 1
20130713 1
20130824 1
20140512 1
20130610 1
20130609 1
20130622 1
20130628 1
20150711 1
20310801 1
20130819 1
20130714 1
20130818 1
20140812 1
20130604 1
20130823 1
20130701 1
20130630 1
20270727 1
20310803 1
20130703 1
20130826 1
Name: Date First Observed, dtype: int64
In [8]:
import dateutil.parser
In [9]:
def first_observed_function(x):
try:
x= str(x)
print("NaN")
if x == '0':
return np.nan
else:
print("transforming...")
date_clean = dateutil.parser.parse(x)
return date_clean.strftime("%Y-%d-%m")
except:
return None
In [10]:
first_observed_function('20130731')
NaN
transforming...
Out[10]:
'2013-31-07'
In [11]:
df['Clean Date First Observed']= df['Date First Observed'].apply(first_observed_function)
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
transforming...
NaN
transforming...
NaN
NaN
NaN
transforming...
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
transforming...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
In [12]:
df['Clean Date First Observed'].value_counts()
Out[12]:
2013-22-07 24
2013-31-07 23
2013-02-08 21
2013-30-07 19
2013-12-08 18
2013-09-08 16
2013-24-07 14
2013-18-07 13
2013-20-07 13
2013-05-08 12
2013-13-08 12
2013-01-08 11
2013-10-08 11
2013-14-08 11
2013-11-08 11
2013-26-07 10
2013-07-08 10
2013-03-08 10
2013-25-07 10
2013-06-08 9
2013-23-07 9
2013-17-07 9
2013-29-07 9
2013-19-07 9
2013-21-07 8
2013-04-08 8
2013-12-07 8
2013-27-07 7
2013-11-07 6
2013-28-07 6
..
2013-10-07 4
2013-22-08 2
2013-15-07 2
2013-09-07 2
2013-25-08 2
2013-16-08 2
2013-29-06 1
2013-18-08 1
2013-01-07 1
2013-24-06 1
2031-03-08 1
2013-23-08 1
2015-11-07 1
2013-14-07 1
2013-26-08 1
2013-09-06 1
2013-13-07 1
2014-12-08 1
2014-12-05 1
2013-24-08 1
2013-08-07 1
2013-22-06 1
2013-03-07 1
2013-19-08 1
2013-10-06 1
2013-28-06 1
2013-04-06 1
2027-27-07 1
2031-01-08 1
2013-30-06 1
Name: Clean Date First Observed, dtype: int64
In [13]:
df['Violation Time']
Out[13]:
0 0752A
1 1240P
2 1243P
3 0232P
4 1239P
5 0617P
6 0741P
7 0425A
8 0437A
9 0839A
10 0845A
11 0907A
12 0514P
13 0656P
14 1145P
15 0546P
16 1142A
17 0724A
18 0758A
19 0736A
20 0847A
21 1120A
22 1020A
23 0324P
24 1018A
25 0743A
26 0850A
27 0915A
28 1023A
29 1120A
...
9969 1251P
9970 0645P
9971 0230A
9972 0315A
9973 0230A
9974 1213P
9975 0830A
9976 0305A
9977 0855A
9978 1021A
9979 0330A
9980 0524P
9981 0505P
9982 1018P
9983 1018P
9984 0215A
9985 0130A
9986 1020P
9987 1000P
9988 1000P
9989 1030P
9990 1115A
9991 0842A
9992 1150A
9993 1141A
9994 1140A
9995 0315P
9996 0310P
9997 1026A
9998 0148P
Name: Violation Time, dtype: object
In [14]:
def violation_time_transformed(x):
try:
hour = x[0:2]
minutes = x[2:4]
pam= x[4]
time= hour + ":" + minutes + " " + pam + 'm'
changed_time = dateutil.parser.parse(time)
return changed_time.strftime("%H:%M%p")
except:
return None
In [15]:
df['New Violation Time']= df['Violation Time'].apply(violation_time_transformed)
In [16]:
df['New Violation Time'].head(20)
Out[16]:
0 07:52AM
1 12:40PM
2 12:43PM
3 14:32PM
4 12:39PM
5 18:17PM
6 19:41PM
7 04:25AM
8 04:37AM
9 08:39AM
10 08:45AM
11 09:07AM
12 17:14PM
13 18:56PM
14 23:45PM
15 17:46PM
16 11:42AM
17 07:24AM
18 07:58AM
19 07:36AM
Name: New Violation Time, dtype: object
In [17]:
df['Vehicle Color'].value_counts()
Out[17]:
WHITE 1753
BLACK 896
GY 637
BLUE 607
GRAY 553
RED 525
WH 513
BLK 487
BK 450
SILVE 392
GREY 363
BROWN 305
WHT 299
GREEN 268
BL 192
TAN 173
GRY 167
GOLD 116
BR 116
YELLO 114
RD 104
SILVR 83
WT 62
GR 57
GRN 51
TN 45
ORANG 41
BRN 34
SILV 34
SIL 29
...
Y 1
SLIVE 1
TEAL 1
BIRG 1
NAVY/ 1
VAN 1
BWN 1
IL 1
CHAMP 1
RUST 1
MAR 1
BT 1
YW/BL 1
OTHER 1
D.BLU 1
BG 1
METBL 1
WWHIT 1
BLE 1
MARON 1
WOOD 1
WYH 1
BLACL 1
PINK 1
VLACK 1
BLCK 1
PEARL 1
GR/YE 1
BKE 1
BUR 1
Name: Vehicle Color, dtype: int64
In [18]:
def color(color):
if (color == "BK") or (color == "BL"):
return 'BLACK'
if (color == "WHT") or (color == "WT") or (color == 'WH'):
return 'WHITE'
else:
return color
#example
color('BK'), color('WHT'), color('BL'), color('WT'), color('WH')
Out[18]:
('BLACK', 'WHITE', 'BLACK', 'WHITE', 'WHITE')
In [19]:
df['B&W Clean Vehicle Color'] = df['Vehicle Color'].apply(color)
In [20]:
df['B&W Clean Vehicle Color'].value_counts()
Out[20]:
WHITE 2627
BLACK 1538
GY 637
BLUE 607
GRAY 553
RED 525
BLK 487
SILVE 392
GREY 363
BROWN 305
GREEN 268
TAN 173
GRY 167
BR 116
GOLD 116
YELLO 114
RD 104
SILVR 83
GR 57
GRN 51
TN 45
ORANG 41
BRN 34
SILV 34
SIL 29
BLU 25
GN 23
MAROO 20
SL 18
PURPL 15
...
PEARL 1
SLIVE 1
SW 1
B 1
BEGE 1
YLW 1
LIGHT 1
B;L 1
BU 1
SROWN 1
NLACK 1
D.BLU 1
YW/BL 1
MAR 1
RUST 1
BLE 1
WWHIT 1
METBL 1
BG 1
OTHER 1
BT 1
CHAMP 1
IL 1
BWN 1
VAN 1
BIRG 1
BKE 1
PUR 1
TEAL 1
BUR 1
Name: B&W Clean Vehicle Color, dtype: int64
In [21]:
!head -n 10000 DOF_Parking_Violation_Codes.csv > small_DOF_Parking_Violation_Codes.csv
In [22]:
violations_data = pd.read_csv("small_DOF_Parking_Violation_Codes.csv")
In [23]:
violations_data.head(2)
Out[23]:
CODE
DEFINITION
Manhattan 96th St. & below
All Other Areas
0
10
Stopping, standing or parking where a sign, st...
$115
$115
1
11
Hotel Loading/Unloading: Standing or parking w...
$115
$115
In [24]:
type(violations_data['CODE'])
Out[24]:
pandas.core.series.Series
In [25]:
violations_data['CODE'].value_counts()
Out[25]:
63 1
39 1
11 1
05 1
83 1
37-38 1
67 1
10 1
48 1
25 1
50 1
32 1
19 1
47 1
65 1
42 1
07 1
99 1
20 1
85 1
12 1
82 1
94 1
06 1
89 1
18 1
61 1
66 1
96 1
04 1
..
78 1
26 1
84 1
64 1
57 1
55 1
16 1
77 1
23 1
58 1
34 1
08 1
79 1
98 1
24 1
52 1
35 1
13 1
40 1
53 1
86 1
73 1
27 1
62 1
69 1
33 1
43 1
59 1
97 1
56 1
Name: CODE, dtype: int64
In [26]:
def transform_code(x):
try:
new_code = x[0:2]
return new_code
except:
return None
In [27]:
single_code = violations_data['CODE'].apply(transform_code)
In [28]:
violations_data['int CODE'] = single_code.astype(int)
In [29]:
violations_data['int CODE'].dtype #now is an integer
Out[29]:
dtype('int64')
In [146]:
violations_data.head(129)
Out[146]:
CODE
DEFINITION
Manhattan 96th St. & below
All Other Areas
int CODE
0
10
Stopping, standing or parking where a sign, st...
$115
$115
10
1
11
Hotel Loading/Unloading: Standing or parking w...
$115
$115
11
2
12
Snow Emergency: Standing or parking where stan...
$95
$95
12
3
13
Taxi Stand: Standing or parking where standing...
$115
$115
13
4
14
General No Standing: Standing or parking where...
$115
$115
14
5
16
Truck Loading/Unloading: Standing or parking w...
$95
$95
16
6
17
Authorized Vehicles Only: Standing or parking ...
$95
$95
17
7
18
Bus Lane: Standing or parking where standing i...
$115
$115
18
8
19
Bus Stop: Standing or parking where standing i...
$115
$115
19
9
20
General No Parking: No parking where parking i...
$65
$60
20
10
21
Street Cleaning: No parking where parking is n...
$65
$45
21
11
22
Hotel Loading/Unloading: No parking where park...
$60
$60
22
12
23
Taxi Stand: No parking where parking is not al...
$65
$60
23
13
24
Authorized Vehicles Only: No parking where par...
$65
$60
24
14
25
Standing at a commuter van stop, other than te...
$115
$115
25
15
26
Standing at a for-hire vehicle stop, other tha...
$115
$115
26
16
27
No parking in a handicapped zone (off-street o...
$180
$180
27
17
28
Overtime standing (diplomat)
$95
$95
28
18
31
Standing of a non-commercial vehicle in a comm...
$115
$115
31
19
32
Parking at a broken or missing meter for longe...
$65
$35
32
20
33
"Feeding Meter" -- parking in a metered space ...
$65
$35
33
21
34
Expired Meter -- parking in a metered space wh...
$65
$35
34
22
35
Parking in a meter space for the purpose of di...
$65
$35
35
23
37-38
Muni Meter --\n(37) Parking in excess of the a...
$65
$35
37
24
39
Parking for longer than the maximum time permi...
$65
$60
39
25
69
Failing to show a muni-meter receipt, commerci...
$65
$65
69
26
40
Stopping, standing or parking closer than 15 f...
$115
$115
40
27
42
Parking in a Muni Metered space in a commercia...
$65
$35
42
28
43
Parking in a commercial metered zone in which ...
$65
$35
43
29
44
Parking in a commercial metered zone for longe...
$65
$35
44
...
...
...
...
...
...
54
71
Standing or parking a vehicle without showing ...
$65
$65
71
55
72
Standing or parking a vehicle with NY Plates a...
$65
$65
72
56
73
Standing or parking a vehicle showing an expir...
$65
$65
73
57
74
Standing or parking a vehicle without properly...
$65
$65
74
58
75
Standing or parking a vehicle in which the Lic...
$65
$65
75
59
77
Parking a bus, unless allowed by signs. A char...
$65
$45
77
60
78
Parking a Commercial Vehicle on a residential ...
$65
$65
78
61
79
For a bus without passengers, waiting at a cur...
$115
$115
79
62
80
Standing or parking a vehicle without head lam...
$60
$45
80
63
81
No standing except diplomat
$95
$95
81
64
82
Standing or parking a Commercial Vehicle unles...
$115
$115
82
65
83
Standing or parking a vehicle which is not pro...
$65
$65
83
66
84
Parking a Commercial Vehicle on any city stree...
$65
$45
84
67
85
Parking a Commercial Vehicle more than 3 hours...
$65
$65
85
68
86
Standing or parking a vehicle to make pickups,...
$115
$115
86
69
89
Standing or parking a vehicle in the Garment D...
$115
$115
89
70
91
Parking in order to sell a vehicle by a person...
$65
$45
91
71
92
Parking in order to wash, grease, or repair a ...
$65
$45
92
72
93
Stopping, standing or parking on paved roadway...
$65
$65
93
73
94
Vehicle Release Agreement code associated with...
100\n(Regular Tow, plus violation fine)
$200 (Heavy Tow, plus violation fine)
94
74
96
Standing or parking within 50 feet of the near...
$95
$95
96
75
97
Parking in a vacant lot. A vehicle may be park...
$65
$45
97
76
98
Standing or parking in front of a public or pr...
$95
$95
98
77
99
All other parking, standing or stopping violat...
vary
vary
99
78
04
Vehicles parked illegally south of Houston Str...
$115
NaN
4
79
05
Failure to make a right turn from a bus lane.
$115
$115
5
80
06
Parking a tractor-trailer on a residential str...
1st Offense - $265\n2nd Offense - $515
2nd Offense - $265\n2nd Offense - $515
6
81
07
Vehicles photographed going through a red ligh...
$50
$50
7
82
08
Vehicle idling in a restricted area.
$115
$115
8
83
09
Blocking an Intersection: Obstructing traffic ...
$115
$115
9
84 rows × 5 columns
In [39]:
#I need to do this same process to the df['Violation Code'] because to transform it to a INT
old_df = df["Violation Code"].apply(transform_code)
In [151]:
df.head(10)
Out[151]:
0 46
1 46
2 46
3 46
4 41
5 14
6 14
7 24
8 24
9 24
Name: Violation Code, dtype: object
In [152]:
df['Violation Code 2'] = old_df.astype(int)
In [155]:
#Merging the two data sets
new_df= df.merge(violations_data, left_on="Violation Code 2", right_on="int CODE")
In [200]:
new_df.head(40)
Out[200]:
Summons Number
Plate ID
Registration State
Plate Type
Issue Date
Violation Code
Vehicle Body Type
Vehicle Make
Issuing Agency
Street Code1
...
New Violation Time
B&W Clean Vehicle Color
Violation Code 2
CODE
DEFINITION
Manhattan 96th St. & below
All Other Areas
int CODE
All Other Areas 2
Manhattan 96th St. & below 2
0
1283294138
GBB9093
NY
PAS
2013-08-04
46
SUBN
AUDI
P
37250
...
07:52AM
GY
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
1
1283294151
62416MB
NY
COM
2013-08-04
46
VAN
FORD
P
37290
...
12:40PM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
2
1283294163
78755JZ
NY
COM
2013-08-05
46
P-U
CHEVR
P
37030
...
12:43PM
NaN
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
3
1283294175
63009MA
NY
COM
2013-08-05
46
VAN
FORD
P
37270
...
14:32PM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
4
1290834349
429J6JM
NY
COM
2013-07-23
46
DELV
INTER
P
0
...
10:37AM
BR
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
5
1290834374
42587JW
NY
COM
2013-07-30
46
DELV
FORD
P
65590
...
11:19AM
YELL
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
6
1291521665
YANKYJAM
NY
PAS
2013-07-02
46
SDN
BMW
F
5430
...
19:42PM
BLK
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
7
1293030739
GHG2484
NY
PAS
2013-08-11
46
NaN
FORD
P
26440
...
01:30AM
BLACK
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
8
1293100924
64195MC
NY
COM
2013-06-20
46
VAN
WHITE
F
81330
...
15:44PM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
9
1293101151
54100JA
NY
COM
2013-07-05
46
P-U
FORD
F
21140
...
13:15PM
NaN
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
10
1293525625
GGP1847
NY
PAS
2013-07-29
46
SUBN
HONDA
P
0
...
21:45PM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
11
1294202492
XD377T
NJ
PAS
2013-07-25
46
TRLR
MITSU
X
0
...
09:53AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
12
1302446484
452WW4
MA
PAS
2013-06-24
46
SDN
CHEVR
C
75530
...
10:25AM
YELLO
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
13
1302446538
4274WY
CT
PAS
2013-07-10
46
SDN
NISSA
C
75530
...
10:15AM
GOLD
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
14
1306112679
97732JZ
NY
COM
2013-08-15
46
REFG
HINO
X
36490
...
23:50PM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
15
1306114172
91628MC
NY
COM
2013-08-02
46
REFG
HINO
P
36490
...
04:48AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
16
1306114184
84614JR
NY
COM
2013-08-23
46
REFE
ISUZU
P
36490
...
04:42AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
17
1306114196
62092JL
NY
COM
2013-08-23
46
REFG
ISUZU
P
0
...
02:46AM
OR
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
18
1306116235
GGU4798
NY
PAS
2013-07-27
46
NaN
VOLKS
P
18240
...
16:52PM
BLACK
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
19
1306206844
55197JJ
NY
COM
2013-08-06
46
DELV
NaN
P
13110
...
16:10PM
W
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
20
1307452577
55003JG
NY
COM
2013-08-12
46
DELV
WORKV
P
10010
...
09:40AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
21
1307452590
40470JU
99
COM
2013-08-12
46
DELV
MERCU
P
10110
...
09:20AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
22
1321774722
61944JY
NY
COM
2013-07-17
46
P-U
CHEVR
P
19430
...
10:05AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
23
1321774771
35210MB
NY
COM
2013-07-17
46
DELV
FORD
P
19270
...
12:14PM
BRW
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
24
1321965783
GBN4223
NY
PAS
2013-08-05
46
SDN
ME/BE
S
69630
...
07:47AM
GREY
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
25
1325733878
T635444C
NY
SRF
2013-08-13
46
SUBN
TOYOT
P
0
...
19:37PM
BLACK
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
26
1325972393
GBX9511
NY
PAS
2013-07-14
46
SDN
BMW
P
0
...
02:38AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
27
1326475710
WZF5882
NY
999
2013-08-11
46
SUBN
CHEVR
P
0
...
19:25PM
BLACK
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
28
1295546516
GCY5976
NY
PAS
2013-07-25
46
SUBN
FORD
P
51090
...
15:13PM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
29
1295547089
62516JM
NY
COM
2013-07-19
46
DELV
INTR
P
24440
...
14:30PM
BROWN
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
30
1295548562
87832KA
NY
COM
2013-07-29
46
DELV
INTER
P
51090
...
11:37AM
GREEN
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
31
1295548574
55518JZ
NY
COM
2013-07-29
46
VAN
FORD
P
0
...
10:14AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
32
1295549232
GEB1073
NY
PAS
2013-08-06
46
SDN
NISSA
P
55590
...
17:45PM
GREY
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
33
1295550374
966J4MA
NY
COM
2013-07-22
46
VAN
CHEVR
P
24290
...
18:26PM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
34
1295551019
41873JM
NY
999
2013-07-29
46
DELV
NaN
P
0
...
10:15AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
35
1295551020
75656MB
NY
COM
2013-07-29
46
DELV
NaN
P
24240
...
10:45AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
36
1295551032
YZR9642
PA
PAS
2013-07-29
46
DELV
FREIT
P
28265
...
11:50AM
WHITE
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
37
1295551070
GCU8414
NY
PAS
2013-08-05
46
SDN
HONDA
P
0
...
17:30PM
RED
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
38
1295571900
42909JM
NY
COM
2013-08-01
46
DELV
INTER
P
58590
...
13:53PM
BROWN
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
39
1295572102
SHAZUBD
NY
PAS
2013-08-11
46
SUBN
NISSA
P
49690
...
15:06PM
BLACK
46
46
Standing or parking on the roadway side of a v...
$115
$115
46
115.0
115.0
40 rows × 54 columns
In [157]:
new_df['All Other Areas'].value_counts()
Out[157]:
$115 4015
$45 2414
$65 1333
$60 1078
$95 650
$165 138
$180 82
vary 74
$35 50
$200 (Heavy Tow, plus violation fine) 6
2nd Offense - $265\n2nd Offense - $515 5
Name: All Other Areas, dtype: int64
In [158]:
new_df[ 'Manhattan\xa0 96th St. & below'].value_counts()
Out[158]:
$65 4746
$115 4015
$95 650
$165 138
$60 129
$180 82
vary 74
100\n(Regular Tow, plus violation fine) 6
1st Offense - $265\n2nd Offense - $515 5
$115 1
Name: Manhattan 96th St. & below, dtype: int64
In [159]:
#First, I will transfrom all values into integers
def money_transformer(money_string):
if money_string == '200 (Heavy Tow plus violation fine)':
string_only = money_string[:3]
return int(string_only)
if money_string == '100\n(Regular Tow, plus violation fine)':
string_only = money_string[:3]
return int(string_only)
try:
return int(money_string.replace("$","").replace(",",""))
except:
return None
In [188]:
new_df['All Other Areas 2'] = new_df['All Other Areas'].apply(money_transformer)
In [161]:
new_df['Manhattan\xa0 96th St. & below 2'] = new_df['Manhattan\xa0 96th St. & below'].apply(money_transformer)
In [189]:
outcome1 = new_df['All Other Areas 2'].sum()
outcome2 = new_df['Manhattan\xa0 96th St. & below 2'].sum()
In [190]:
print("NYC makes between","$", outcome1, "US dollars and","$", outcome2, "US dollars of parking violations")
#PS. Data set has been cut to 10000 rows for memory saving reasons. Output would be considerably higher with the complete DF.
NYC makes between $ 822710.0 US dollars and $ 877950.0 US dollars of parking violations
In [169]:
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
In [218]:
new_df['Violation Code 2'].value_counts().head(10).plot.bar()
print("The most frequent is the infraction 21, followed by infraction 46 and 14")
The most frequent is the infraction 21, followed by infraction 46 and 14
In [219]:
print("this is how the top 3 are defined:")
new_df.groupby('CODE')['DEFINITION'].value_counts().sort_values(ascending=False).head(3)
this is how the top 3 are defined
Out[219]:
CODE DEFINITION
21 Street Cleaning: No parking where parking is not allowed by sign, street marking or traffic control device. 1894
46 Standing or parking on the roadway side of a vehicle stopped, standing or parked at the curb; in other words also known as "double parking". However, a person may stand a Commercial Vehicle alongside a vehicle parked at the curb at such locations and during such hours that stopping, standing and parking is allowed when quickly making pickups, deliveries or service calls. This is allowed if there is no parking space or marked loading zone on either side of the street within 100 feet. "Double parking" any type of vehicle is not allowed in Midtown Manhattan (the area from 14th Street to 60th Street, between First Avenue and Eighth Avenue inclusive). Midtown double parking is not allowed between 7:00am – 7:00pm daily except Sundays. (See Code 47.) 1366
14 General No Standing: Standing or parking where standing is not allowed by sign, street marking or; traffic control device. 987
Name: DEFINITION, dtype: int64
In [221]:
#Looking for the most lucrative
violations_data.sort_values(by='CODE').head(46)
Out[221]:
CODE
DEFINITION
Manhattan 96th St. & below
All Other Areas
int CODE
78
04
Vehicles parked illegally south of Houston Str...
$115
NaN
4
79
05
Failure to make a right turn from a bus lane.
$115
$115
5
80
06
Parking a tractor-trailer on a residential str...
1st Offense - $265\n2nd Offense - $515
2nd Offense - $265\n2nd Offense - $515
6
81
07
Vehicles photographed going through a red ligh...
$50
$50
7
82
08
Vehicle idling in a restricted area.
$115
$115
8
83
09
Blocking an Intersection: Obstructing traffic ...
$115
$115
9
0
10
Stopping, standing or parking where a sign, st...
$115
$115
10
1
11
Hotel Loading/Unloading: Standing or parking w...
$115
$115
11
2
12
Snow Emergency: Standing or parking where stan...
$95
$95
12
3
13
Taxi Stand: Standing or parking where standing...
$115
$115
13
4
14
General No Standing: Standing or parking where...
$115
$115
14
5
16
Truck Loading/Unloading: Standing or parking w...
$95
$95
16
6
17
Authorized Vehicles Only: Standing or parking ...
$95
$95
17
7
18
Bus Lane: Standing or parking where standing i...
$115
$115
18
8
19
Bus Stop: Standing or parking where standing i...
$115
$115
19
9
20
General No Parking: No parking where parking i...
$65
$60
20
10
21
Street Cleaning: No parking where parking is n...
$65
$45
21
11
22
Hotel Loading/Unloading: No parking where park...
$60
$60
22
12
23
Taxi Stand: No parking where parking is not al...
$65
$60
23
13
24
Authorized Vehicles Only: No parking where par...
$65
$60
24
14
25
Standing at a commuter van stop, other than te...
$115
$115
25
15
26
Standing at a for-hire vehicle stop, other tha...
$115
$115
26
16
27
No parking in a handicapped zone (off-street o...
$180
$180
27
17
28
Overtime standing (diplomat)
$95
$95
28
18
31
Standing of a non-commercial vehicle in a comm...
$115
$115
31
19
32
Parking at a broken or missing meter for longe...
$65
$35
32
20
33
"Feeding Meter" -- parking in a metered space ...
$65
$35
33
21
34
Expired Meter -- parking in a metered space wh...
$65
$35
34
22
35
Parking in a meter space for the purpose of di...
$65
$35
35
23
37-38
Muni Meter --\n(37) Parking in excess of the a...
$65
$35
37
24
39
Parking for longer than the maximum time permi...
$65
$60
39
26
40
Stopping, standing or parking closer than 15 f...
$115
$115
40
27
42
Parking in a Muni Metered space in a commercia...
$65
$35
42
28
43
Parking in a commercial metered zone in which ...
$65
$35
43
29
44
Parking in a commercial metered zone for longe...
$65
$35
44
30
45
Stopping, standing or parking in a traffic lan...
$115
$115
45
31
46
Standing or parking on the roadway side of a v...
$115
$115
46
32
47
Stopping, standing or parking a vehicle in Mid...
$115
$115
47
33
48
Stopping, standing or parking within a marked ...
$115
$115
48
34
49
Stopping, standing or parking alongside or opp...
$95
$95
49
35
50
Stopping, standing or parking in a crosswalk. ...
$115
$115
50
36
51
Stopping, standing or parking on a sidewalk.
$115
$115
51
37
52
Stopping, standing or parking within an inters...
$115
$115
52
38
53
Standing or parking in a safety zone, between ...
$115
$115
53
39
55
Stopping, standing or parking within a highway...
$115
$115
55
40
56
Stopping, standing or parking alongside a barr...
$115
$115
56
In [238]:
new_df['Violation Code 2'].value_counts().head(3)
Out[238]:
21 1894
46 1366
14 987
Name: Violation Code 2, dtype: int64
In [243]:
#21 cost $65, 46 cost $115, 14 cost $115
def money_new(money_str):
if money_str == 1894:
return money_str * 65
if money_str == 1366:
return money_str * 115
if money_str == 987:
return money_str * 115
In [242]:
print("For al the 21 infractions the city has made", money_new(1894))
print("For al the 46 infractions the city has made", money_new(1366))
print("For al the 14 infractions the city has made", money_new(987))
print("Seems that infraction 46 is the most lucrative")
For al the 21 infractions the city has made 123110
For al the 46 infractions the city has made 157090
For al the 14 infractions the city has made 113505
Seems that infraction 46 is the most lucrative
In [277]:
new_df.groupby('Registration State')['All Other Areas 2'].sum().sort_values(ascending=False).head(10)
Out[277]:
Registration State
NY 547900.0
NJ 76780.0
PA 47880.0
99 19850.0
CT 15870.0
VA 14955.0
FL 14315.0
MA 9705.0
IL 9405.0
TN 7380.0
Name: All Other Areas 2, dtype: float64
In [285]:
print('The city has made $274810 of the non newyorkers')
NY_fines= new_df.groupby('Registration State')['All Other Areas 2'].sum().sort_values(ascending=False).head(1)
outcome1 - NY_fines
The city has made $274810 of the non newyorkers
Out[285]:
Registration State
NY 274810.0
Name: All Other Areas 2, dtype: float64
In [289]:
new_df['Registration State'].value_counts().sort_values().tail(10).plot.barh(color= 'Blue')
Out[289]:
<matplotlib.axes._subplots.AxesSubplot at 0x165e004e0>
In [292]:
new_df['New Violation Time'].head(10)
Out[292]:
0 07:52AM
1 12:40PM
2 12:43PM
3 14:32PM
4 10:37AM
5 11:19AM
6 19:42PM
7 01:30AM
8 15:44PM
9 13:15PM
Name: New Violation Time, dtype: object
In [304]:
def hour_transformer(x):
try:
time = int(x[:2])
if time <= 6:
return '12am-6am'
elif time <= 12:
return '6am-12pm'
elif time <= 18:
return '12pm-6pm'
elif time <= 24:
return '6pm-12am'
else:
pass
except:
pass
In [305]:
day_time = new_df['New Violation Time'].apply(hour_transformer)
In [310]:
day_time.value_counts().plot.pie(title='Ticket time!')
Out[310]:
<matplotlib.axes._subplots.AxesSubplot at 0x15a1ee630>
In [314]:
new_df['All Other Areas 2'].mean()
Out[314]:
84.294057377049185
In [319]:
new_df['Issue Date'].describe()
Out[319]:
count 9846
unique 141
top 2013-07-30 00:00:00
freq 433
first 2000-03-14 00:00:00
last 2053-08-02 00:00:00
Name: Issue Date, dtype: object
In [394]:
new_df.groupby('Issue Date')['Issue Date'].value_counts(sort=False).plot.bar(figsize=(15, 6))
plt.ylabel('Number of tickets')
plt.xlabel('Days')
#it seems like all the data is concentrated
#only in a few years
Out[394]:
<matplotlib.text.Text at 0x1813b58d0>
In [395]:
new_df.groupby('Issue Date')['All Other Areas 2'].sum().plot(kind="bar", figsize=(15, 6))
plt.ylabel('Amount in $')
plt.xlabel('Days')
Out[395]:
<matplotlib.text.Text at 0x1814edeb8>
In [396]:
#Still havent figure out how :(
In [ ]:
Content source: paolorivas/homeworkfoundations
Similar notebooks: