edit in project.py at line 70
− # TODO: use this everywhere
replacement in project.py at line 83
− def parse_financial_bracket(start, end):
+ def parse_financial_bracket(text):
+ [start, end] = text.split("-")
edit in project.py at line 120
[2.1483]→[3.1306:1717](∅→∅),
[3.1306]→[3.1306:1717](∅→∅) −
− # Extract the median rent (midpoint between range) for each column
− median_rents = self.median_rents()
− # Extract the median household income (midpoint between each range) for each bracket
− median_incomes = self.median_incomes()
− # Extract the actual table
− population_data = self.population_data()
−
− from pprint import pprint
−
− pprint(population_data)
replacement in project.py at line 149
[3.2879]→[3.2879:2921](∅→∅) − return (start_ranges, end_ranges)
+ brackets = []
+
+ for bracket in range(len(start_ranges)):
+ brackets.append(start_ranges[bracket] + end_ranges[bracket])
+
+ return brackets
replacement in project.py at line 157
[3.3471]→[3.3471:3536](∅→∅) − (start_ranges, end_ranges) = self.filter_rent_brackets()
+ brackets = self.filter_rent_brackets()
replacement in project.py at line 159
[3.3615]→[3.3615:3760](∅→∅) − rents = []
− for column in range(len(start_ranges)):
− start = start_ranges[column]
− end = end_ranges[column]
+ rents = {}
+
+ for bracket in range(len(brackets)):
+ (start, end) = parse_financial_bracket(brackets[bracket])
+
+ median_rent = (start + end + 1) // 2
replacement in project.py at line 166
[3.3761]→[2.1809:1886](∅→∅) − # Strip hypen suffix from `start`
− start = start[:-1]
+ # Total population is sum of column
+ total_population = 0
+ for row in self.filter_income_brackets():
+ total_population += int(row[bracket + 1])
replacement in project.py at line 171
[2.1887]→[2.1887:1950](∅→∅),
[2.1950]→[3.3824:3873](∅→∅),
[3.3824]→[3.3824:3873](∅→∅) − (start, end) = parse_financial_bracket(start, end)
− rents.append((start + end + 1) // 2)
+ rents[median_rent] = total_population
replacement in project.py at line 176
[3.3934]→[3.3934:3988](∅→∅) − rows = self.POPULATION_BY_INCOME.splitlines()
+ rows = tabulate(self.POPULATION_BY_INCOME)
replacement in project.py at line 179
[3.4038]→[3.4038:4321](∅→∅) − assert rows[0].startswith("Negative income")
− assert rows[1].startswith("Nil income")
− assert rows[-3].startswith('"$2,000 or more"')
− assert rows[-2].startswith("Partial income stated(a)")
− assert rows[-1].startswith("All incomes not stated(b)")
+ assert rows[0][0] == "Negative income"
+ assert rows[1][0] == "Nil income"
+ assert rows[-3][0] == "$2000 or more"
+ assert rows[-2][0] == "Partial income stated(a)"
+ assert rows[-1][0] == "All incomes not stated(b)"
replacement in project.py at line 185
[3.4322]→[3.4322:4348](∅→∅) edit in project.py at line 187
[3.4349]→[3.4349:4369](∅→∅),
[3.4577]→[3.4577:4578](∅→∅) replacement in project.py at line 188
[3.4608]→[3.4608:4629](∅→∅) replacement in project.py at line 191
[2.2001]→[3.4734:4849](∅→∅),
[3.4734]→[3.4734:4849](∅→∅),
[3.4849]→[2.2002:2047](∅→∅) − # Two dollar amounts separated by a hyphen ('-')
− # row[0] will be values such as: '$1-$39'
− [start, end] = row[0].split("-")
+ (start, end) = parse_financial_bracket(row[0])
+ median_rent = (start + end + 1) // 2
replacement in project.py at line 194
[3.4896]→[3.4896:5034](∅→∅),
[3.5034]→[2.2048:2087](∅→∅),
[2.2087]→[3.5074:5316](∅→∅),
[3.5074]→[3.5074:5316](∅→∅) − # Make sure we've got data in the right shape
− assert start.startswith("$")
− assert end.startswith("$")
− assert should_keep(row[0])
−
− # Strip prefixes
− start = start[1:]
− end = end[1:]
−
− # Downcast and calculate midpoint
− start = int(start)
− end = int(end)
− incomes.append((start + end + 1) // 2)
+ # The last column is a 'total' amount
+ population = int(row[-1])
+ incomes[median_rent] = population
replacement in project.py at line 234
[2.2668]→[2.2668:2775](∅→∅) − brackets = []
− for row in rows:
− brackets.append(row[0])
− return brackets
edit in project.py at line 238
replacement in project.py at line 243
[2.3024]→[2.3024:3137](∅→∅) − [start, end] = rents[rent].split("-")
− (start, end) = parse_financial_bracket(start, end)
+ (start, end) = parse_financial_bracket(rents[rent][0])
replacement in project.py at line 245
[2.3138]→[2.3138:3187](∅→∅) − rents[rent] = (start + end + 1) // 2
+ median_rent = (start + end + 1) // 2
+ total_population = int(rents[rent][-1])
replacement in project.py at line 248
[2.3188]→[2.3188:3209](∅→∅) + median_rents[median_rent] = total_population
+
+ return median_rents
replacement in project.py at line 261
[2.3532]→[2.3532:3613](∅→∅) − incomes = []
− for row in rows:
− incomes.append(row[0])
edit in project.py at line 263
[2.3614]→[2.3614:3638](∅→∅) edit in project.py at line 265
replacement in project.py at line 268
[2.3762]→[2.3762:3879](∅→∅) − [start, end] = incomes[income].split("-")
− (start, end) = parse_financial_bracket(start, end)
+ (start, end) = parse_financial_bracket(incomes[income][0])
replacement in project.py at line 270
[2.3880]→[2.3880:3933](∅→∅) − incomes[income] = (start + end + 1) // 2
+ median_income = (start + end + 1) // 2
+ total_population = int(incomes[income][-1])
+
+ median_incomes[median_income] = total_population
replacement in project.py at line 275
[2.3934]→[2.3934:3957](∅→∅) edit in project.py at line 506
[3.6014]→[2.3960:3982](∅→∅) replacement in project.py at line 507
[2.3983]→[2.3983:4020](∅→∅) − data = Census2001().median_incomes()
+ print(Census1996().median_incomes())
+ print(Census1996().median_rents())
+ print(Census2001().median_incomes())
+ print(Census2001().median_rents())