Clippings: Data Visualization
Goal:
Scrape every zoning variance request from the city of Buffalo's public meetings website and create an
interactive visual allowing readers to explore the data themselves, as it is data that hasn't been
captured
before.
Features:
- Linking - Clicking on any of the neighborhoods in the choropleth map filters the other
map and
the bar chart to just cover that area. This allows readers to see a breakdown for each
neighborhood and
to look at each request individually if they so wish.
- Filtering – I created five categories and placed each request in the appropriate one.
Readers can
choose a category from the drop-down menu on the top right or flip through them with the arrow
buttons,
filtering the other three maps.
- Details on Demand – Hovering over a neighborhood on the choropleth map gives a breakdown
of how
the zoning board ruled on variance requests from that area. Hovering over a dot on the other map
shows
details for each request including the address it took place at, what it was for, and when a
ruling was
issued.
Tools used:
-
- Python – Used to scrape, clean, and sort the data.
- Requests – Used along with BeautifulSoup to scrape data from Buffalo's public meetings
website.
- BeautifulSoup – Indexes HTML to allow for easy extraction.
- Pandas – Used to clean, filter, sort, and export data.
- Numpy – Used to filter datetimes.
- FuzzyMatcher – Used to match addresses in the public meetings dataset with their
counterparts in
the
city's property assessment database, which includes coordinates for each address, thus
allowing
them to
be mapped.
-
- Tableau – Used to generate a dashboard featuring a choropleth map showing the frequency
of
variance
requests by neighborhood, a map showing every variance request in the city and how the
zoning
board
ruled on it, a bar chart showing the frequency of each ruling, and a dropdown menu
allowing
filtering by
category.
-
- OpenRefine – Used to consolidate zoning variances into arbitrary categories to clean up
the
visualization.
Limitations and Lessons Learned:
- Tableau – Tableau is poorly optimized and doesn't translate well to mobile (or to small
browser
windows) and can only be customized up to a point. I chose it because I wasn't sure what form
the final
visualization would take or even if I could embed a visualization at all, but if I knew this was
the
product I would create from the beginning I would make it with D3.
Goal:
Using aggregated data from AirDNA, create an interactive choropleth map to show where in the city Airbnb
listings cluster.
Features:
- History - A slider linked to the map allows readers to see data from different years.
- Details on Demand – Hovering over an area on the map reveals the zipcode and average monthly
listings for that area.
Tools used:
-
- Python – Used to clean and sort the data.
- Pandas – Used to clean, filter, sort, and export data.
-
- ObserableHQ (JavaScript) – Used to generate an interactive choropleth map showing where Airbnb
listings are located, using a
- Leaflet.js – Used to generate the map, captions, legend, and labels.
- D3.js Used to generate colors and the year slider.
-
- OpenRefine – Used to consolidate zoning variances into arbitrary categories to clean up the
visualization.