An explorable budget visualization for the state of New York

This is based on Look at Cook by Derek Eder and Nick Rougeux at Open City, and can be easily re-deployed to visualize other budgets.
The csv inputs that may need to be updated going forward are:
data/budget_raw.csv)data/descriptions.csv)A csv and xlsx file are typically shared with the same data. I've found that the csv file sometimes has formatting issues, so I export the xlsx file as a new budget_raw.csv
cleanup.py is a python script that requires pandas and xlrd. You can install them by running:
pip install -r requirements.txt
When updating either of the above csvs, run the cleanup.py script to generate the finished budget, budget_finished.csv:
python cleanup.py
The settings in js/settings.js that may need to be updated going forward are:
- endYear (for example, if the last year in the budget is '2023-24', set the end year to 2024)
- activeYear (typically set to the same as endYear)
- projectionStartYear (for example, if the first year of estimates is '2023-24', set this to 2023)
- plotBandBuffer (this determines the # months of padding for the beginning of the estimates plot band. if there are multiple years of estimates, set a small buffer like -1, otherwise set it to a larger negative number, e.g. -7, for more space)
- inflation_idx (array of years and CPI values. typically we update the most recent years to track accurate inflation)
- benchmark (set to the current year)
To preview changes locally:
python -m SimpleHTTPServer
Open a pull requst with the latest changes. This will create a deploy preview in netlify that you can share with the client for review.
The site is hosted on Netlify, so deploy previews are available if you make a pull request.
To deploy to production, push the changes into the deploy branch:
git push origin main
git push origin main:deploy
Live changes will be seen at https://ny-budget.datamade.us
This code can be customized to visualize another data set.
The budget data must be a csv that adheres to a fixed format in order for the app to process it properly. Budget column headers include: Fund ID, Fund, Department ID, Department, Short Title, Link to Website, Department Description, and Control Officer. Values for estimates and actuals must be broken down into a separate column for each year.
See examples of prepped data: - New Orleans - Cook County - Macoupin County - A blank template to populate
If you need to do any preparation on your raw data to get it into the finished format (e.g. formatting dollar amounts, removing whitespace, adding descriptions), do it in a script so that it will be repeatable in the future. See an example script in data/cleanup.py.
Put your finished budget csv file in the data/ folder
Next, set the configuration variables in js/settings.js
If something is not behaving intuitively, it is a bug, and should be reported as an issue
You can also email info@datamade.us or tweet @DataMadeCo.
Copyright (c) 2016 DataMade. Released under the MIT License.
$ claude mcp add ny-budget \
-- python -m otcore.mcp_server <graph>