Know What's In The Air You Breathe In Seoul

Posted on Jul 12, 2020

Photo by Johnathan21 on Shutterstock

GitHub Repository | LinkedIn

Go To Shiny Dashboard


While facial masks are commonly used to protect yourself from COVID-19 nowadays, it was not long ago when people mainly used masks on a daily basis to protect themselves from air pollution in Korea. Some might argue that it is an over-reaction to cover your face due to air pollution, yet one should not take air quality lightly as it may have a considerable impact on one's respiratory health and even quality of life. Therefore, it is important to understand the levels and trends of air pollution in the area you live in.


This interactive data visualization project may particularly be informative to those planning to move to a different neighborhood or those interested in the general patterns of air pollution in Seoul. I used the Air Pollution In Seoul data on Kaggle, which covers 3 years (2017-2019) of pollution data including the levels of 6 pollutants (SO2, NO2, O3, CO, PM10, PM2.5) recorded every hour from 25 air quality monitors in Seoul city. The dashboard can be found here.

Here are some baseline descriptions of the 6 pollutants recorded. In general, these pollutants can cause serious respiratory illness or heart disease. Especially PM10 and PM2.5, which are also known as fine dust, have caused extra concerns as some particles get inhaled into the lungs and even get into the bloodstream.

  • Sulfur Dioxide (SO2): Produced by volcanoes and in various industrial processes. It is a precursor to acid rain.
  • Nitrogen Dioxide (NO2): The result of traffic from motor vehicles and cigarette smoke. It has a sharp odor.
  • Ozone (O3): Formed from NOx. It is a constituent of smog and can cause respiratory illness.
  • Carbon Monoxide (CO): A product of combustion of fuel such as natural gas, coal, or wood. It can cause headaches and nausea.
  • Particulate Matter 10 (PM10): Complex mixture of dust, pollen, soot, smoke, which causes respiratory infections and heart disease.
  • Particulate Matter 2.5 (PM2.5): A subset of PM10, which is thinner than a human hair. It can be inhaled into lung tissue.

With the data I have about 6 pollutants, I covered and tackled the following 3 questions in the dashboard.

  1. Does the fine dust level vary across different neighborhoods in Seoul?
  2. Is there any apparent trend in air pollution levels?
  3. In a given year, how many days were with good air quality?

Varying fine dust levels across the city

In order to answer to the first question whether fine dust level varies across different neighborhoods in Seoul, I created a map where you can explore the levels of PM10 and PM2.5 in different neighborhoods with the timeline you specified. Here we can see that the average PM10 level in Seocho-gu on May 1st, 2017 was 115, which is considered bad. Moreover, the PM10 level fluctuated throughout the day in Seocho-gu ranging from 73 to 163. Hence, we can understand that there are hours when the air quality is normal but also very bad just within the span of one day.

The unit of measurement for the values is 'microgram/m3

The widgets above further show the neighborhoods with the best and worst air quality within the same timeline you specified for the map. As mentioned above, the average air quality in Seocho-gu is bad, and it was selected as the neighborhood with the worst air quality within the timeline specified. For those who do not know Seoul city, I want to point out that Seocho-gu is a densely populated urban area with a lot of skyscrapers and traffic. On the other hand, Gangbuk-gu is a relatively less populated mountainside area. You can explore other neighborhoods as well in the dashboard.

Trend in air pollution levels

The above plot shows a strong seasonal trend in the levels of NO2 and O3. Moreover, it is apparent that these two pollutants are negatively correlated with each other. While NO2 level peaks during winter, O3 level does during summer, and this is largely due to the fact that NO2 is a product of combustion of fuel from vehicles and power plants, and O3 is generated by NO2 when contacted with sunlight.

Here above, we can see the enhancements in the concentration levels of PM10 and PM2.5 at the beginning of winter and the decreasing trend at the end of spring. PM10 and PM2.5 mostly consist of dust, pollen, soot, and smoke, which are trapped in the dense layer of cool air due to winter inversions during winter (Source: Tooele County Health Department).

The overall correlation of each pollutant is also visualized in the above correlation heatmap. We can again confirm the negative correlation O3 has with N02 and other pollutants.

The count of days with good air quality

In the dashboard, you can pick your pollutant of interest and see the count of days aggregated by daily average air quality. Here I presented the count of days with PM10. Based on this bar plot created with the daily average of pollutant level, one might think that the air quality in Seoul is actually normal or even good because it is rare that the daily average is bad or very bad. However, I want to show you the density plot of pollutant levels, in this case with PM10, created below.

We can easily notice that the density plot is very right-skewed meaning that there are hours when pollutant levels are very high. This informs us that perhaps the daily average might not be a good measure of daily air quality. What I would rather be interested in is how bad the air quality gets during its worst hours.

So here is another representation of the count of days with the daily maximum level of PM10. Now, we see a completely different story with the air pollution level. With the daily max level of PM10, there is rarely a week, in any of the years given, that the max level of PM10 was good. Therefore, it is important to understand and be aware of the fluctuating nature of air pollution levels.


In this interactive data visualization project, I visualized and mapped the levels and trends of air pollution in Seoul, South Korea. I showed the different air pollution levels across Seoul city. I also identified the correlations between the pollutants and confirmed the periodic seasonal trends. Lastly, I scrutinized the count of days with good air quality in terms of daily average and daily maximum. With the questions tackled in this project, the users of the dashboard can better understand the air quality of Seoul. Thank you for taking the time to read this blog post!

About Author

Ryan Park

Ryan is a military-trained and detail-oriented data science professional who combines well-honed leadership and research skills with data science techniques to create informative translations of real-world data that generate business value. He currently works at YipitData as a...
View all posts by Ryan Park >

Related Articles

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