Oak Park, IL Tax Data and Analysis
The file "oak park tax history.csv" contains historical tax levy data for Oak park taxing agencies.
- Year The tax year
- Agency The Taxing agency rollup
- Detail The specific tax agency if rolled up
- Levy The total levy in dollars
- Rate The tax rate
- EAV Total equalized assessed value of the properties subject to the tax rate
In all cases Levy = Rate / EAV
The file "oak park tax history summary.csv" contains the totals by year in a pivoted format.
- Year The tax year
- D200 The Oak park portion of the OPRF levy for that year, this is calculated by taking the (Village of OP EAV / D200 Eav) * D200 Levy
- D97 The Oak Park Elementary/Middle school levy
- Oak Park Township The township levy, including general assistance and mental health
- Park District The Oak Park park district
- Village of Oak Park The Village levy with the library levy added in
- All The total levy for that year
- CPI The CPI-U for that year from the BLS https://www.bls.gov/cpi/tables/supplemental-files/historical-cpi-u-201804.pdf
- AWI The Average Wage Index from the Social Security Administration https://www.ssa.gov/oact/cola/AWI.html
The file 'projections.csv' contains an exponential best fit to the existing data.
- Year The Levy year
- Levy The Levy in that year
- Fit The best exponential fit for the year, fit to the existing data and projected out 20 years.
The source of this data is the Cook County Clerk, using their online tool for 2006-2016, and a historical records request for previous years.
https://www.cookcountyclerk.com/service/tax-agency-reports
These files are available in the "data" directory.
cpi.csv is derived from the CPI-U found at https://www.bls.gov/regions/midwest/data/consumerpriceindexhistorical_us_table.pdf https://data.bls.gov/timeseries/CUUR0000SA0?amp%253bdata_tool=XGtable&output_view=data&include_graphs=true
awi.csv is derived from https://www.ssa.gov/oact/cola/AWI.html
d97demographics.csv is derived from https://www.op97.org/teach-learn/state-report-cards
characteristics.csv is from https://datacatalog.cookcountyil.gov/resource/bcnq-qi2z.csv?Town%20Code=27&$limit=20000
- For simplicity, the "Agency" column rolls up the Library into the Village of Oak Park, and the mental health and general assistance funds into the Township, the 'Detail' column breaks those out if you want to do summaries that perserve this detail.
- The 'D200' Agency is the Oak Park only portion of OPRF's levy. The 'D200 Total' agency is the full OPRF levy. If you are making summary rollups of this data, only include one or the other.
##Local
- Install python v3
- pip install pandas
- pip install numpy
- pip install matplotlib
- Install Firefox
- Install gecko-driver
- pip install selenium
##Docker
- Install Docker desktop
- docker build -t oakparktaxdata -f ..devcontainer\Dockerfile .
- docker build -f ..devcontainer\Dockerfile -t oakparktaxdata .
- Run the docker image:
powershell: docker run -v ${pwd}:/workspaces/oakparktaxdata -w /workspaces/oakparktaxdata -it oakparktaxdata /bin/bash
cmd.exe docker run -v %cd%:/workspaces/oakparktaxdata -w /workspaces/oakparktaxdata -it oakparktaxdata /bin/bash
YYYY is the current tax year, for example, in 2019, the current tax year was 2018.
Run the scrapers, these will take quite a bit of time, perhaps 24-48 hours, and might need to be restarted:
python scripts/scrapecookcounty.py YYYY python scripts/scrapeassessments.py YYYY
This creates YYYY/assessments.csv and YYYY/cookcountyassessments.csv
Then run:
python scripts/assessments.py YYYY
python scripts/assessmentcalcs.py YYYY
python scripts/pivot.py YYYY
python scripts/barchart.py YYYY
python scripts/barchartpercentage.py YYYY
python scripts/taxincreasedistribution.py YYYY
python scripts/projection.py YYYY
python scripts/projectionchart.py YYYY
python scripts/personalprojectionchart.py YYYY
python scripts/d97enrollmentcomparison.py YYYY 2002
python scripts/d97perstudent.py YYYY 2002
python scripts/twelvekcomparison.py YYYY
python scripts/growthcomparison.py YYYY 2006
python scripts/barchartpercentagechange.py YYYY 2000
python scripts/wagepricecomparison.py YYYY 1999