7
7
8
8
9
9
class TestGeoMapper :
10
+ # For complex FIPS <-> ZIP transfers, use
11
+ # zip 45147, 45140 -> fips 39025; fips 39025, 30961 -> 45147
12
+ # For a non-FIPS, use 10999
13
+ # For a non-ZIP, use 00500
10
14
fips_data = pd .DataFrame (
11
15
{
12
- "fips" : ["01123" , "02340" , "98633" , "18181" ],
13
- "num" : [2 , 0 , 20 , 10021 ],
14
- "den" : [4 , 0 , 400 , 100001 ],
15
- }
16
- )
17
- fips_data_2 = pd .DataFrame (
18
- {
19
- "fips" : ["01123" , "02340" , "02002" , "18633" , "18181" ],
20
- "date" : [pd .Timestamp ("2018-01-01" )] * 5 ,
21
- "num" : [2 , 1 , 20 , np .nan , 10021 ],
22
- "den" : [4 , 1 , 400 , np .nan , 100001 ],
16
+ "fips" : [
17
+ "39025" ,
18
+ "30961" ,
19
+ "02002" ,
20
+ "10999" ,
21
+ ],
22
+ "date" : pd .date_range ("2018-01-01" , periods = 4 ),
23
+ "num" : [2 , np .nan , 20 , 10021 ],
24
+ "den" : [2 , 20 , 40 , np .nan ]
23
25
}
24
26
)
25
- fips_data_3 = pd .DataFrame (
27
+ zip_data = pd .DataFrame (
26
28
{
27
- "fips " : ["48059 " , "48253 " , "48441 " , "72003 " , "72005" , "10999 " ],
28
- "date" : [ pd .Timestamp ("2018-01-01" )] * 3 + [ pd . Timestamp ( "2018-01-03" )] * 3 ,
29
- "num " : [1 , 2 , 3 , 4 , 8 , 5 ],
30
- "den " : [2 , 4 , 7 , 11 , 100 , 10 ],
29
+ "zip " : ["45140 " , "45147 " , "00500 " , "95616 " , "95618 " ],
30
+ "date" : pd .date_range ("2018-01-01" , periods = 5 ) ,
31
+ "count " : [2 , np . nan , 20 , 10021 ],
32
+ "total " : [2 , 20 , 40 , np . nan ]
31
33
}
32
34
)
33
- zip_data = pd .DataFrame (
34
- {
35
- "zip" : ["45140" , "95616" , "95618" , "00500" ] * 2 ,
36
- "date" : [pd .Timestamp ("2018-01-01" )] * 3 + [pd .Timestamp ("2018-01-03" )] * 5 ,
37
- "count" : [99 , 345 , 456 , 100 , 344 , 442 , 450 , 470 ],
38
- }
39
- )
40
- zip_data ["total" ] = zip_data ["count" ] * 2
41
35
jan_month = pd .bdate_range ("2018-01-01" , "2018-02-01" )
42
36
mega_data = pd .concat (
43
37
(
@@ -59,14 +53,6 @@ class TestGeoMapper:
59
53
),
60
54
)
61
55
)
62
- jhu_data = pd .DataFrame (
63
- {
64
- "fips_jhu" : ["48059" , "48253" , "72005" , "10999" , "90010" , "70002" ],
65
- "date" : [pd .Timestamp ("2018-01-01" )] * 3 + [pd .Timestamp ("2018-01-03" )] * 3 ,
66
- "num" : [1 , 2 , 3 , 4 , 8 , 5 ],
67
- "den" : [2 , 4 , 7 , 11 , 100 , 10 ],
68
- }
69
- )
70
56
jhu_uid_data = pd .DataFrame (
71
57
{
72
58
"jhu_uid" : [
@@ -76,10 +62,11 @@ class TestGeoMapper:
76
62
"84013299" ,
77
63
"84070002" ,
78
64
"84000013" ,
79
- "84090002"
65
+ "84090002" ,
80
66
],
81
67
"date" : [pd .Timestamp ("2018-01-01" )] * 3
82
- + [pd .Timestamp ("2018-01-03" )] * 3 + [pd .Timestamp ('2018-01-01' )],
68
+ + [pd .Timestamp ("2018-01-03" )] * 3
69
+ + [pd .Timestamp ("2018-01-01" )],
83
70
"num" : [1 , 2 , 3 , 4 , 8 , 5 , 20 ],
84
71
"den" : [2 , 4 , 7 , 11 , 100 , 10 , 40 ],
85
72
}
@@ -116,6 +103,24 @@ def test_load_zip_hrr_table(self):
116
103
assert pd .api .types .is_string_dtype (zip_data ["zip" ])
117
104
assert pd .api .types .is_string_dtype (zip_data ["hrr" ])
118
105
106
+ def test_add_new_code (self ):
107
+ gmpr = GeoMapper ()
108
+
109
+ # fips -> zip
110
+ new_data = gmpr .convert_fips_to_zip (self .fips_data )
111
+ new_data2 = gmpr .add_new_code (self .fips_data , "fips" , "zip" )
112
+ assert new_data .equals (new_data2 )
113
+
114
+ # zip -> hrr
115
+ new_data = gmpr .convert_to_new_code (self .fips_data , "fips" , "zip" )
116
+ new_data2 = gmpr .add_new_code (new_data , "zip" , "hrr" )
117
+ assert new_data .equals (new_data )
118
+
119
+ # fips -> hrr
120
+ new_data = gmpr .convert_to_new_code (self .fips_data , "fips" , "hrr" )
121
+ new_data2 = gmpr .add_new_code (self .fips_data , "fips" , "hrr" )
122
+ assert new_data .shape == (2 , 4 )
123
+
119
124
def test_convert_fips_to_state_code (self ):
120
125
gmpr = GeoMapper ()
121
126
new_data = gmpr .convert_fips_to_state_code (self .fips_data )
@@ -137,22 +142,22 @@ def test_convert_fips_to_state_id(self):
137
142
138
143
def test_fips_to_state_id (self ):
139
144
gmpr = GeoMapper ()
140
- new_data = gmpr .fips_to_state_id (self .fips_data_2 )
145
+ new_data = gmpr .fips_to_state_id (self .fips_data )
141
146
assert new_data .shape [0 ] == 3
142
147
143
148
def test_convert_fips_to_msa (self ):
144
149
gmpr = GeoMapper ()
145
- new_data = gmpr .convert_fips_to_msa (self .fips_data_3 )
146
- assert new_data [' msa' ][2 ] == "10180"
147
- new_data = gmpr .convert_fips_to_msa (self .fips_data_3 , create_mega = True )
148
- assert new_data [' den' ].sum () == self .fips_data_3 [ ' den' ].sum ()
150
+ new_data = gmpr .convert_fips_to_msa (self .fips_data )
151
+ assert new_data [" msa" ][2 ] == "10180"
152
+ new_data = gmpr .convert_fips_to_msa (self .fips_data , create_mega = True )
153
+ assert new_data [" den" ].sum () == self .fips_data [ " den" ].sum ()
149
154
150
155
def test_fips_to_msa (self ):
151
156
gmpr = GeoMapper ()
152
- new_data = gmpr .fips_to_msa (self .fips_data_3 )
157
+ new_data = gmpr .fips_to_msa (self .fips_data )
153
158
assert new_data .shape [0 ] == 2
154
- new_data = gmpr .fips_to_msa (self .fips_data_3 , create_mega = True )
155
- assert new_data [["num" ]].sum ()[0 ] == self .fips_data_3 ["num" ].sum ()
159
+ new_data = gmpr .fips_to_msa (self .fips_data , create_mega = True )
160
+ assert new_data [["num" ]].sum ()[0 ] == self .fips_data ["num" ].sum ()
156
161
157
162
def test_convert_zip_to_fips (self ):
158
163
gmpr = GeoMapper ()
@@ -224,16 +229,5 @@ def test_jhu_uid_to_fips(self):
224
229
assert not (new_data ["fips" ].astype (int ) > 90000 ).any ()
225
230
assert new_data ["den" ].sum () == self .jhu_uid_data ["den" ].sum ()
226
231
227
- def test_convert_fips_to_zip (self ):
228
- gmpr = GeoMapper ()
229
- new_data = gmpr .convert_fips_to_zip (self .fips_data_3 )
230
- # assert new_data.eval('weight * den').sum() == self.fips_data_3['den'].sum()
231
-
232
- def test_fips_to_zip (self ):
233
- gmpr = GeoMapper ()
234
- new_data = gmpr .fips_to_zip (self .fips_data_3 )
235
232
236
- def test_fips_to_hrr (self ):
237
- gmpr = GeoMapper ()
238
- new_data = gmpr .fips_to_hrr (self .fips_data_3 )
239
- assert new_data .shape == (2 , 4 )
233
+ TestGeoMapper ().test_add_new_code ()
0 commit comments