Data Visualization

Data Visualization - 서울의 각 시의 공기 오염도 분석 및 시각화

electronicprogrammer 2020. 10. 6. 12:15

데이터 출처 : www.kaggle.com/bappekim/air-pollution-in-seoul

 

Air Pollution in Seoul

Air Pollution Measurement Information in Seoul, Korea

www.kaggle.com

 

ipynb file : github.com/sangHa0411/DataScience/blob/main/Seoul_Pollution.ipynb

 

sangHa0411/DataScience

Contribute to sangHa0411/DataScience development by creating an account on GitHub.

github.com

 

이전에는 Basemap을 이용해서 서울의 각 시의 위치를 표기하는 방법을 정리하였습니다.

이번에는 본 목표인 서울의 각 시의 공기 오염도를 그래프로 시각화해볼려고 합니다.

먼저 공기 오염의 원인이 되는 항목들과 경계 값들을 저장한 파일을 불러옵니다.

총 6개의 항목들이 있으며 코드 , 이름, 단위,

좋음 , 평범 , 나쁨, 아주 나쁨의 경계 값에 대한 정보가 저장되어 있음을 확인할 수 있습니다.

 

다음에는 측정 결과가 저장된 데이터를 불러옵니다.

측정 날짜 , 측정 위치의 코드 , 측정. 항목의. 코드. , 측정 값, 그리고 측정 기구의 상태가 있습니다.

여기서 먼저 측정 기구의 상태가 좋지 못한 측정 데이터를 모두 삭제합니다.

 

그 다음 제가 원한는 시 , 분석하고자 하는 항목을 지정하면 그에 관련된 데이터만 불어오는 함수를 만듭니다.

함수를 지정하고 나서 원하는 시의 코드와 측정된 항목의 코드를 입력으로 넣으면 그와 관련된 항목만을 추려서 데이터를 반환합니다

예시로 종로구의 SO2와 관련된 데이터만을 가져와보도록 하겠습니다.

아래는 반환된 데이터 프레임의 구조입니다.

시의 코드가 101이고 측정 항목의 코드가 1인 것만이 저장되어 있음을 확인할 수 있습니다.

이제 위의 데이터를 기반으로 그래프를 그리기 이전에 먼저 xlabel에 mapping 될 리스트를 만듭니다. 그 이유는 2017-01-01 과 같은 항목들이 데이터 갯수 25490개 하나하나 기입되면 텍스트들이 겹쳐서 제대로 보이지 않기 때문입니다.

따라서 각 년도의 1월 1일 4월 1일 7월 1일 10월 1일 만을 xlabel 에 표기하도록 합니다.

그 외 나머지는 '' 을 저장함으로써 데이터 갯수와 갯수를 일치 시켜줍니다.

이제 마지막으로 측정하고자 하는 시 , 그리고 아이템이 저장되어있는 데이터 프레임을 가지고 그래프를 그리는 함수를 만들고자합니다.

아이템의 코드와 시의 코드를 파악해서 아이템의 이름과 시의 이름을 파악합니다

그리고 아이템의 각 좋음, 평범, 나쁨, 매우 나쁨에 대한 경계 값들을 구합니다.

최종적으로 해당 항목에 대한 측정 값들을 그리고 위에서 언급한 4개의 경계값들을 x축과 평행하게 그립니다.

아래에는 그 결과입니다.

종로구의 SO2항목에 대한 측정결과를 시각화 해본 결와 2017-01-01부터 ~ 2019-10-01 그 이후까지 모두 파랑색 경계(좋음) 보다 아래인 것을 확인할 수 있습니다. 따라서 SO2의 오염정도는 매우 낮은 것으로 확인할 수 있습니다.

다음은 강남구의 CO에 대한 측정 결과를 시각화해보고자 합니다.

 

강남구의 CO 항목에 대해서도 2017년도 초부터 2019 말 까지 모두 파랑색(좋음) 경계 값보다 낮은 것을 확인할 수 있습니다.