Repository navigation
Expand file tree
/
Copy pathscript.py
More file actions
191 lines (157 loc) · 10.2 KB
/
Copy pathscript.py
File metadata and controls
191 lines (157 loc) · 10.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# names of hurricanes
names = ['Cuba I', 'San Felipe II Okeechobee', 'Bahamas', 'Cuba II', 'CubaBrownsville', 'Tampico', 'Labor Day', 'New England', 'Carol', 'Janet', 'Carla', 'Hattie', 'Beulah', 'Camille', 'Edith', 'Anita', 'David', 'Allen', 'Gilbert', 'Hugo', 'Andrew', 'Mitch', 'Isabel', 'Ivan', 'Emily', 'Katrina', 'Rita', 'Wilma', 'Dean', 'Felix', 'Matthew', 'Irma', 'Maria', 'Michael']
# months of hurricanes
months = ['October', 'September', 'September', 'November', 'August', 'September', 'September', 'September', 'September', 'September', 'September', 'October', 'September', 'August', 'September', 'September', 'August', 'August', 'September', 'September', 'August', 'October', 'September', 'September', 'July', 'August', 'September', 'October', 'August', 'September', 'October', 'September', 'September', 'October']
# years of hurricanes
years = [1924, 1928, 1932, 1932, 1933, 1933, 1935, 1938, 1953, 1955, 1961, 1961, 1967, 1969, 1971, 1977, 1979, 1980, 1988, 1989, 1992, 1998, 2003, 2004, 2005, 2005, 2005, 2005, 2007, 2007, 2016, 2017, 2017, 2018]
# maximum sustained winds (mph) of hurricanes
max_sustained_winds = [165, 160, 160, 175, 160, 160, 185, 160, 160, 175, 175, 160, 160, 175, 160, 175, 175, 190, 185, 160, 175, 180, 165, 165, 160, 175, 180, 185, 175, 175, 165, 180, 175, 160]
# areas affected by each hurricane
areas_affected = [['Central America', 'Mexico', 'Cuba', 'Florida', 'The Bahamas'], ['Lesser Antilles', 'The Bahamas', 'United States East Coast', 'Atlantic Canada'], ['The Bahamas', 'Northeastern United States'], ['Lesser Antilles', 'Jamaica', 'Cayman Islands', 'Cuba', 'The Bahamas', 'Bermuda'], ['The Bahamas', 'Cuba', 'Florida', 'Texas', 'Tamaulipas'], ['Jamaica', 'Yucatn Peninsula'], ['The Bahamas', 'Florida', 'Georgia', 'The Carolinas', 'Virginia'], ['Southeastern United States', 'Northeastern United States', 'Southwestern Quebec'], ['Bermuda', 'New England', 'Atlantic Canada'], ['Lesser Antilles', 'Central America'], ['Texas', 'Louisiana', 'Midwestern United States'], ['Central America'], ['The Caribbean', 'Mexico', 'Texas'], ['Cuba', 'United States Gulf Coast'], ['The Caribbean', 'Central America', 'Mexico', 'United States Gulf Coast'], ['Mexico'], ['The Caribbean', 'United States East coast'], ['The Caribbean', 'Yucatn Peninsula', 'Mexico', 'South Texas'], ['Jamaica', 'Venezuela', 'Central America', 'Hispaniola', 'Mexico'], ['The Caribbean', 'United States East Coast'], ['The Bahamas', 'Florida', 'United States Gulf Coast'], ['Central America', 'Yucatn Peninsula', 'South Florida'], ['Greater Antilles', 'Bahamas', 'Eastern United States', 'Ontario'], ['The Caribbean', 'Venezuela', 'United States Gulf Coast'], ['Windward Islands', 'Jamaica', 'Mexico', 'Texas'], ['Bahamas', 'United States Gulf Coast'], ['Cuba', 'United States Gulf Coast'], ['Greater Antilles', 'Central America', 'Florida'], ['The Caribbean', 'Central America'], ['Nicaragua', 'Honduras'], ['Antilles', 'Venezuela', 'Colombia', 'United States East Coast', 'Atlantic Canada'], ['Cape Verde', 'The Caribbean', 'British Virgin Islands', 'U.S. Virgin Islands', 'Cuba', 'Florida'], ['Lesser Antilles', 'Virgin Islands', 'Puerto Rico', 'Dominican Republic', 'Turks and Caicos Islands'], ['Central America', 'United States Gulf Coast (especially Florida Panhandle)']]
# damages (USD($)) of hurricanes
damages = ['Damages not recorded', '100M', 'Damages not recorded', '40M', '27.9M', '5M', 'Damages not recorded', '306M', '2M', '65.8M', '326M', '60.3M', '208M', '1.42B', '25.4M', 'Damages not recorded', '1.54B', '1.24B', '7.1B', '10B', '26.5B', '6.2B', '5.37B', '23.3B', '1.01B', '125B', '12B', '29.4B', '1.76B', '720M', '15.1B', '64.8B', '91.6B', '25.1B']
# deaths for each hurricane
deaths = [90,4000,16,3103,179,184,408,682,5,1023,43,319,688,259,37,11,2068,269,318,107,65,19325,51,124,17,1836,125,87,45,133,603,138,3057,74]
# write your update damages function here:
def convert_damages_to_float(damages):
"""Convert damages data from string to float and return converted data as a list."""
conversion = {"M": 1000000, "B": 1000000000}
damages_float=[]
for damage in damages:
if damage == "Damages not recorded":
damages_float.append("Damages not recorded")
if "M" in damage:
damages_float.append( float(damage.strip("M")) * conversion["M"] )
if "B" in damage:
damages_float.append( float(damage.strip("B")) * conversion["B"] )
return damages_float
# convert_damages_to_float(damages)
damages_float = convert_damages_to_float(damages)
# create hurricanes dictionary
def construct_hurricane_dictionary(names, months, years, max_sustained_winds, areas_affected, damages_float, deaths):
"""Create dictionary of hurricanes with hurricane name as the key and a dictionary of hurricane data as the value."""
hurricane_dictionary={}
i = 0
for name in names:
hurricane_dictionary[name] = {"Name": names[i],
"Month": months[i],
"Year": years[i],
"Max Sustained Wind": max_sustained_winds[i],
"Areas Affected": areas_affected[i],
"Damage": damages_float[i],
"Deaths": deaths[i]}
i += 1
return hurricane_dictionary
hurricane_dictionary = construct_hurricane_dictionary(names, months, years, max_sustained_winds, areas_affected, damages_float, deaths)
# create new dictionary of hurricanes with year as key
def hurricane_dictionary_by_year(hurricane_dictionary):
"""Convert dictionary with hurricane name as key to a new dictionary with hurricane year as the key and return new dictionary."""
hurricanes_by_year = {}
for cane in hurricane_dictionary:
current_year = hurricane_dictionary[cane]['Year']
current_cane = hurricane_dictionary[cane]
if current_year not in hurricanes_by_year:
hurricanes_by_year[current_year] = [current_cane]
else:
hurricanes_by_year[current_year].append(current_cane)
return hurricanes_by_year
hurricanes_by_year = hurricane_dictionary_by_year(hurricane_dictionary)
print(hurricanes_by_year)
print("----------\n")
# create dictionary of areas to store the number of hurricanes involved in:
def count_affected_areas(hurricane_dictionary):
"""Count how often eash area is affected, and store in dictionary with area as key and counts how many time affected as values."""
areas_count = dict()
for cane in hurricane_dictionary:
for area in hurricane_dictionary[cane]["Areas Affected"]:
if area not in areas_count:
areas_count[area] = 1
else:
areas_count[area] += 1
return areas_count
areas_count = count_affected_areas(hurricane_dictionary)
print(areas_count)
print("----------\n")
# find most frequently affected area and the number of hurricanes involved in
def most_affected_area(areas_count):
"""Find the area affected by the most hurricanes and how often it was hit."""
max_value = max(areas_count.values())
max_key = max(areas_count, key=areas_count.get)
print("{} was affected the most at {} times.".format(max_key, max_value))
most_affected_area = most_affected_area(areas_count)
print("----------\n")
# find highest mortality hurricane and the number of deaths
def most_deaths(hurricanes):
"""find the hurricane that cause the greatest number of deaths and how many deaths it caused."""
max_deaths = 0
for cane in hurricanes:
deaths = hurricanes[cane]["Deaths"]
if deaths > max_deaths:
max_deaths = deaths
max_key = cane
print("{} was the hurricane with the most deaths at {}.".format(max_key, max_deaths))
most_deaths(hurricane_dictionary)
print("----------\n")
# catgeorize hurricanes by mortality
def rate_mortality(hurricanes):
"""rate hurricanes on mortality scale and store results in dictionary with scale as key and list of dictionaries as values."""
hurricane_mortalities=dict()
# initialize dictionary with list as values
for i in range(5):
hurricane_mortalities[i]=[]
# define mortality scale
mortality_scale = {0: 0,
1: 100,
2: 500,
3: 1000,
4: 10000}
for cane in hurricanes:
deaths = hurricanes[cane]["Deaths"]
for i in mortality_scale:
if deaths <= mortality_scale[i]:
values = hurricane_mortalities[i]
values.append(hurricanes[cane])
hurricane_mortalities[i] = values
break
print(hurricane_mortalities)
rate_mortality(hurricane_dictionary)
print("----------\n")
# find hurricane with greatest damage
def greatest_damage(hurricanes):
"""Find the hurricane that caused the greatest damage, and how costly it was."""
greatest_damage = int(0)
for cane in hurricanes:
damage = hurricanes[cane]["Damage"]
# deal with non-numeric damages
if type(damage) == str: damage=int(0)
if damage > greatest_damage:
greatest_damage = damage
max_cane = cane
print("The hurricane that caused the most damage was {} and cost {} dollars.".format(max_cane, greatest_damage))
greatest_damage(hurricane_dictionary)
print("----------\n")
# categorize hurricanes in new dictionary with damage severity as key
def rate_by_damage(hurricanes):
"""rate hurricanes on damage scale, and store in dictionary with ratings as keys and list of dictionaries as values."""
hurricane_damages=dict()
# initialize dictionary with lists as values
for i in range(5):
hurricane_damages[i]=[]
# define damage scale
damage_scale = {0: 0,
1: 100000000,
2: 1000000000,
3: 10000000000,
4: 50000000000}
for cane in hurricanes:
damage = hurricanes[cane]["Damage"]
# deal with non-numeric damages
if type(damage) == str: damage=int(0)
for i in damage_scale:
if damage <= damage_scale[i]:
values = hurricane_damages[i]
values.append(hurricanes[cane])
hurricane_damages[i] = values
break
print(hurricane_damages)
rate_by_damage(hurricane_dictionary)