Reduce inconsistencies between 1996 and 2001 objects

finchie
Sep 7, 2023, 2:35 PM
4YKXEBAVKKIWUC6EIG4MGSTZOHD7XJSO5O4YNU3OK5SPKMIWX7YQC

Dependencies

  • [2] 2AE4VE7U Add support for 2001 census
  • [3] 7ZN6HHL2 Extract relevant census data
  • [4] FCHAPZLD Implement simpler file merging function
  • [5] QU7MDQED Add basic support for 1996 census data

Change contents

  • edit in project.py at line 70
    [2.468][2.468:496]()
    # TODO: use this everywhere
  • replacement in project.py at line 83
    [2.786][2.786:827]()
    def parse_financial_bracket(start, end):
    [2.786]
    [2.827]
    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)
    [3.2879]
    [3.2921]
    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()
    [3.3471]
    [3.3536]
    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]
    [3.3615]
    [3.3760]
    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]
    [3.3761]
    [2.1886]
    # 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)
    [2.1887]
    [3.3873]
    rents[median_rent] = total_population
  • replacement in project.py at line 176
    [3.3934][3.3934:3988]()
    rows = self.POPULATION_BY_INCOME.splitlines()
    [3.3934]
    [3.3988]
    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)")
    [3.4038]
    [3.4321]
    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]()
    rows = rows[2:-3]
    [3.4322]
    [3.4348]
    return rows[2:-3]
  • edit in project.py at line 187
    [3.4349][3.4349:4369](),[3.4577][3.4577:4578]()
    return rows
  • replacement in project.py at line 188
    [3.4608][3.4608:4629]()
    incomes = []
    [3.4608]
    [3.4629]
    incomes = {}
  • 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("-")
    [2.2001]
    [3.4895]
    (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)
    [3.4896]
    [3.5316]
    # 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
    [2.2668]
    [2.2775]
    return rows
  • edit in project.py at line 238
    [2.2850]
    [2.2850]
    median_rents = {}
  • replacement in project.py at line 243
    [2.3024][2.3024:3137]()
    [start, end] = rents[rent].split("-")
    (start, end) = parse_financial_bracket(start, end)
    [2.3024]
    [2.3137]
    (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
    [2.3138]
    [2.3187]
    median_rent = (start + end + 1) // 2
    total_population = int(rents[rent][-1])
  • replacement in project.py at line 248
    [2.3188][2.3188:3209]()
    return rents
    [2.3188]
    [3.5782]
    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])
    [2.3532]
    [2.3613]
    return rows
  • edit in project.py at line 263
    [2.3614][2.3614:3638]()
    return incomes
  • edit in project.py at line 265
    [2.3718]
    [2.3718]
    median_incomes = {}
  • replacement in project.py at line 268
    [2.3762][2.3762:3879]()
    [start, end] = incomes[income].split("-")
    (start, end) = parse_financial_bracket(start, end)
    [2.3762]
    [2.3879]
    (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
    [2.3880]
    [2.3933]
    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]()
    return incomes
    [2.3934]
    [2.3957]
    return median_incomes
  • edit in project.py at line 506
    [3.6014][2.3960:3982]()
    # data = Census1996()
  • replacement in project.py at line 507
    [2.3983][2.3983:4020]()
    data = Census2001().median_incomes()
    [2.3983]
    [3.7984]
    print(Census1996().median_incomes())
    print(Census1996().median_rents())
    print(Census2001().median_incomes())
    print(Census2001().median_rents())