American Pollution

Posted on Jul 30, 2018

Air quality drastically impacts human health and quality of life, so it's important that citizens are aware of the state of their local environment. With that in mind, I developed a flexible exploratory web app to provide visualizations of air quality data between 2000 and 2016 across the United States (wherever data were available.)

Because concentrations of pollutants in parts per million or parts per billion are not helpful to the general public, the EPA has developed an Air Quality Index (AQI) to help explain air pollution levels. The AQI takes into account the concentration of a pollutant, how long such a concentration was recorded, and how dangerous that pollutant is to human physiology.

The data available include measurements of four pollutants: NO2 (Nitrogen dioxide), O3 (Ozone), CO (Carbon monoxide), and SO2 (Sulfur dioxide). While their sources and effects are complex, interrelated, and varied, all tend to share the traits of being respiratory irritants harmful to both plants and animals. In addition, NO2 and SO2 cause the formation of acid rain, and so great efforts have been made in recent years to reduce their presence in the atmosphere.

The interactive web app is available here, but some of the most interesting results are shown below.

How do pollution levels vary across the U.S?

The answer varies from year to year and month to month (which will be shown later), so there's no single answer. For example, the map below shows measurements taken in 2016, as it is the most recent year available. Pollution levels change over time, and daily measurements aren't always available for every city. Even for cities where data is available it may be irregular, incomplete, or missing for particular months or years.

In the U.S. map below, the locations where measurements have been taken are represented by blue dots with an area proportional to the population of the city and a color saturation proportional to the Air Quality Index of the city (bluer means more polluted.) This particular map shows that although New York is a much larger city, Phoenix recorded a higher average AQI for NO2 in 2016. This map also shows that the difference between regions of the U.S. plays no obvious role in the pollution of cities in that region.

To explore which cities in the country have the lowest pollution levels, we can refer to the box plots pictured below. This particular box plot summarizes the measurements of NO2 in 2016 for the 10 least- polluted cities across the country. The list shows that none of these cities have recorded the AQI of NO2 above 45, which is considered to be within the "Good" range defined by the EPA.

To explore this question further, navigate to the 'Pollution Maps' tab of the web app (link above) and take a look at the U.S. map. You can select a specific year and a specific pollutant. On a view of the whole U.S., the bottom will display a box plot of the cities with the lowest pollution during that year. If you select a specific state, the box plots will show all cities in that state with data available.

How does city population affect pollution levels?

One of the clearest insights from cross-referencing the original dataset with U.S. Census Bureau population estimates was the correlation between the population of a city and its air quality. As expected, larger cities experience higher average AQI and are, therefore, more polluted. This would clearly follow from the higher number of cars, power production, and industrial activity required to support a larger population. As you soon see, there is a trend that as the population of a city increases, the concentration of NO2 and CO increase. However, this relationship is not so prevalent for O3 or SO2.

In the scatter plot below, cities in California are highlighted in blue to demonstrate how they compare to national averages. From this representation, California's NO2 levels are on-par with similarly-sized cities.



How does the pollution fluctuate? Are there strong long- or short-term trends?

For cities with long and complete measurement histories, several trends are obvious. NO2, CO, and SO2 show periodic seasonal behavior, peaking at the beginning of winter. O3, on the other hand, peaks in the middle of the year- the beginning of summer. This is likely due to the difference in their sources: the former three are byproducts of fossil fuel combustion in both coal-based power plants and the burning of heating gas and oil. The latter, however, is generated photochemically by NO2 upon contact with sunlight, which dips in winter.

Another phenomenon Β that becomes apparent from the data is an exciting long-term trend in New York: the decrease in atmospheric SO2 over the 16 years of measurement. This is likely thanks to increasingly-stringent regulation of vehicle emission standards.


For trends over time, check out the "Local Pollution History" tab of the web app linked above. The top graph shows all the collected data over the years available (2000-2016). Here you can select cities on an individual basis.

Does the increase in one pollutant correspond to the increase in another?

This is a good opportunity to consult the correlation plot. For some cities the correlation is clear: NO2 and CO are positively correlated, while O3 is negatively correlated with these. This does not indicate causation, however. It is most likely the results of the seasonal fluctuations visible in the Time Series plots shown above.

How bad is the pollution in my city?

This is for you to judge, but the widgets below summarize the number of days each city measures levels of each pollutant during the average year. The following is for New York and shows that the pollution levels for most pollutants rarely rises to unsafe levels, even for sensitive groups such as asthmatics or those afflicted with other respiratory problems.

Thank you for exploring my web app and taking an interest in my work!


Where did the data come from?

The data used were obtained from 3 separate sources:

1. Measurements of air pollutant levels for 204 measurement facilities in 105 cities were obtained on Kaggle

2. Population counts from the U.S. Census Bureau for each city, based on 2016 estimates. They require me to use the following disclaimer: "This product uses the Census Bureau Data API but is not endorsed or certified by the Census Bureau."
3. Geographical city locations determined using an API for OpenStreetMaps

About Author

James Budarz

James is an NYC Data Science Academy Fellow with a PhD in Chemistry from Brown with a dissertation on making molecular movies. He continued big science research in Switzerland as a postdoc, and after analyzing over 100 TB...
View all posts by James Budarz >

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 airbnb Alex Baransky alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus API Application artist aws beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep Bundles California Cancer Research capstone Career Career Day citibike clustering Coding Course Demo Course Report D3.js data Data Analyst data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization Deep Learning Demo Day Discount dplyr employer networking feature engineering Finance Financial Data Science Flask gbm Get Hired ggplot2 googleVis Hadoop higgs boson Hiring hiring partner events Hiring Partners Industry Experts Instructor Blog Instructor Interview Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter lasso regression Lead Data Scienctist Lead Data Scientist leaflet linear regression Logistic Regression machine learning Maps matplotlib Medical Research Meet the team meetup Networking neural network Neural networks New Courses nlp NYC NYC Data Science nyc data science academy NYC Open Data NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time Portfolio Development prediction Prework Programming PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn Selenium sentiment analysis Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau team TensorFlow Testimonial tf-idf Top Data Science Bootcamp twitter visualization web scraping Weekend Course What to expect word cloud word2vec XGBoost yelp