2024년 소프트중심대학 소프트웨어중점사업단 교양수업에서 본인이 제출한 과제입니다.
2016 - 2019년도에 ‘2차 하수 처리 탱크를 이용한 폐수정화처리’라는 프로젝트를 수행한 적이 있다.
이 프로젝트는 미생물이 가진 효소의 입체구조를 생화학적으로 분석하여 효소의 활성화율을 측정하고,
미생물의 최적 배양환경을 찾아내어 영역별 배치될 2차 하수 처리 탱크를 고안하여 수질을 정화하는 것이다.
이 실험을 하는 도중 할 일 중 하나는 오염도가 높고 부영양화가 심한 지점을 찾는 것이었다.
자연환경에 대한 정보를 얻어야 하는데, 날씨나 주변 환경에 따라 목표 지점의 오염도가 달라지는일이 많아서
오염 지점을 선정하는 데 어려움이 있었다. 또한 평균 오염도가 높은 지점에서 실험하는 것이
실험 결과의 신뢰도를 높이는 방법인데, 순간의 오염도로는 실험의 신뢰성을 담보할 수 없어 애를 먹은 적이 있다.
이 프로젝트와 균주로 후속 실험을 진행하려고 하는데, 마침 과제에 원하는 장기 오염 추세 국가 제공 데이터를
분석할 수 있는 기회가 있어 각 하천의 수질오염도 데이터를 분석하여 후속 실험의 밑거름으로 삼을 수 있도록 한다.
자료는 한국환경연구원의 환경영향평가 수질정보 (2024.01.11.)를 이용하였다.
CSV 데이터 중 실제 실험에서 사용되었던 비교군인 경상남도, 부산광역시, 울산광역시의 자료만을 이용하였다.
코딩 과정은 다음과 같다.
- CSV 파일에서 경상남도, 부산광역시, 울산광역시 관련 데이터를 추출한다.
- 각 지점별 데이터를 한 디렉터리에 분리하여 저장한다.
- 각각의 파일을 읽어 그래프로 나타낼 수 있는 코드를 작성한다.
- HTML 웹 기반으로 각 파일을 선택할 수 있도록 하고, 이를 3.과 연결한다.
CSV 파일의 D행이 지역 정보를 담고 있으므로, D행에 ‘부산광역시’, ‘울산광역시’, ‘경상남도’, ‘부산’, ‘울산’,
‘경남’, ‘부산시’, ‘울산시’, '창원시', '진주시', '통영시', '사천시', '김해시', '밀양시', '거제시',
'양산시', '의령군', '함안군', '창녕군', '고성군', '남해군', '하동군', '산청군', '함양군', '거창군',
'합천군', ‘의창구’, ‘진해구’, ‘성산구’, ‘마산회원구’, ‘마산합포구’, '중구', '서구', '동구', '영도구',
'부산진구', '동래구', ' 남구', '북구', '해운대구', '사하구', '금정구', '강서구', '연제구', '수영구',
'사상구', '기장군', '중구', '남구', ' 동구', '북구', '울주군'이 포함된 열만을 선택한다.
이후 D행의 각 열이 동일한 것끼리 나누어서 저장한다.
이때 G행의 차수가 1~3개밖에 없는 데이터는 수질오염도의 추이를 분석하기 부족하므로 제외한다.
원본 자료를 엑셀의 기본값 설정에 맞게 직접 짠 euckrconverterforwindows.py를 이용하여 euc-kr로 변환하였다.
이후 파일을 저장할 때는 to-csv() 함수의 encoding 요소의 기본값이 UTF-8이라 윈도우 엑셀 환경에서 인코딩이 깨져
원활하게 인식할 수 없으므로 앨리스 실습 때와 동일하게 인코딩 형식을 지정 (euc-kr)하여 해결하였다.
인코딩이 어떻게 되어 있는지 주어진 디렉터리 내의 파일을 열어 리스트에 존재하는 인코딩 방식을 적용해보고,
오류가 생기면 다음에 존재하는 인코딩 방식으로 순차적으로 열어보도록 작성하였다.
이후 엑셀의 기본 설정인 EUC-KR 인코딩으로 파일을 저장하였고,
이 파일의 목적은 파일을 분리하기 전 같은 인코딩 방식으로 통일하는 것이다.
동적으로 이미지가 표현되어야 하나 위의 코드는 정적 코드이기 때문에
새로고침을 하고 다른 데이터를 불러와도 똑같은 이미지가 표현된다.
1번의 데이터 분석 주제의 데이터 분석 선정 이유에 따르면 날씨 또는 주변 환경에 따른 편차가 없어야 하는 조건
첫 번째는 그래프의 데이터 추세가 일정한가 (추세의 편차가 들쭉날쭉하지 않은가)이며,
두 번째는 절대적인 BOD, COD 수치가 실험에서 유의미한 변화를 이끌어낼 수 있을 만큼 높은가였다.
(절대적인 수치가 높지 않으면 깨끗한 물에서 수질정화를 해도 변화가 일어나지 않는다.)
그래프를 분석하니 거제시 하청면 석포리 69번지(폐기물 매립장) 앞의 COD, BOD 데이터가
원하는 데이터에 가장 부합한 것을 알 수 있었다.
데이터 분석하기에 앞서 데이터의 특징이 무엇인지, 데이터의 종류가 무엇인지에 대한 인지가 선행되어야
제대로 된 데이터분석을 진행할 수 있다는 것을 더욱 실감하게 되었다.
그 데이터의 특성을 분석하는 것은 결국 사람이 직접 해야 하는 영역이고 방향성은 사람이 결정해야 하는 것을 알았다.
정부 공공 데이터 포털에서 정보를 다운받았을 때, 여러 속성이 CSV파일 내에 존재하였으나 조사기관이
서로 다른 데이터를 모두 취합한 것에 불과해서 모든 데이터가 정형화되어 존재하지 않았다.
AI를 이용하여 데이터를 분석하기 전 데이터를 가공하는 과정에서 시간이 많이 소모되었는데,
위의 코드를 수정하는 시행착오의 과정에서 하나라도 데이터의 정제 및 취사선택이 진행되지 않으면
이후 데이터가 분석되지 않거나, 이상치가 출력되는 등의 결과가 나타나게 되었다.
데이터의 가공도 중요하지만 데이터를 정제하여 분석에 알맞게 쓸 수 있도록 하는 과정인 데이터 분석도
가공 못지않게 중요하거나 더 중요할 수 있겠다는 생각을 하였다.