Lookup#
Generate new columns by mapping existing data to common lookup tables.
CPI deflation#
The agate-lookup extension adds a lookup
method to agate’s Table class.
Starting with a table that looks like this:
year |
cost |
---|---|
1995 |
2.0 |
1997 |
2.2 |
1996 |
2.3 |
2003 |
4.0 |
2007 |
5.0 |
2005 |
6.0 |
We can map the year
column to its annual CPI index in one lookup call.
import agatelookup
join_year_cpi = table.lookup('year', 'cpi')
The return table will have now have a new column:
year |
cost |
cpi |
---|---|---|
1995 |
2.0 |
152.383 |
1997 |
2.2 |
160.525 |
1996 |
2.3 |
156.858 |
2003 |
4.0 |
184.000 |
2007 |
5.0 |
207.344 |
2005 |
6.0 |
195.267 |
A simple computation tacked on to this lookup can then get the 2015 equivalent values of each cost:
cpi_2015 = Decimal(216.909)
def cpi_adjust_2015(row):
return (row['cost'] * (cpi_2015 / row['cpi'])).quantize(Decimal('0.01'))
cost_2015 = join_year_cpi.compute([
('cost_2015', agate.Formula(agate.Number(), cpi_adjust_2015))
])
And the final table will look like this:
year |
cost |
cpi |
cost_2015 |
---|---|---|---|
1995 |
2.0 |
152.383 |
2.85 |
1997 |
2.2 |
160.525 |
2.97 |
1996 |
2.3 |
156.858 |
3.18 |
2003 |
4.0 |
184.000 |
4.72 |
2007 |
5.0 |
207.344 |
5.23 |
2005 |
6.0 |
195.267 |
6.66 |