기말 과제

nxxxn·2022년 12월 3일
0

자료구조실습

목록 보기
9/9

문제 소개

저번 중간 발표에서 수행하고자 하는 주제는 '자연분해가 오래되는 쓰레기가 많은 지역부터 순서대로 출력'하는 것이었다
https://velog.io/@nxxxn/%EC%A4%91%EA%B0%84-%EA%B3%BC%EC%A0%9C
여기에 주제에 대한 설명과 구현 방법에 대해 간단히 설명해 놓았다

구현 방법 소개

이번 과제는 파이썬으로 진행하려고 한다
vscode를 이용하여 코드를 작성하였다

먼저 주제를 해결하기 위해서는
1. 각각의 사진에서 각각의 항목에 할당된 값을 모두 더한 합을 구해야한다
2. 합이 가장 높은 순으로 경도와 위도를 표현한다
2-1. 만약 같은 위치의 사진이 중복되어 있다면 사진들의 합을 더한 후 하나로 출력되게한다
로 구현되어야한다

사용한 데이터

화, 수 분반에서 모인 59개의 csv 파일 중에서 에러가 나는 파일들을 제외한 52개의 파일을 사용하였다
https://github.com/dapin1490/waste-complain-system/blob/main/Prepare%20data/processed%20data/outlier_processed_data.csv
여기에서 도움을 받아 파일을 이용하였다

위 링크의 데이터를 다운받아 내 컴퓨터의 엑셀파일에 다시 넣어서 사용할 것이다

구현

위 그림과 같이 총 5052개의 테이터를 이용하였다

사용한 결과 따로 중복되는 값이 없어 그냥 쓰레기의 합이 큰 순서대로만 출력하면 될 것이라 생각하였다

내가 필요한 값들을 제외한 Number,Name,Widths,Hights는 지웠고 각각의 할당값을 곱한 뒤 각 열의 합을 sum이라는 항목으로 추가해 표현하였다

위 사진처럼 sum의 중복값이 너무 많아 할당값을 조금 바꾸기로 하였다
일반쓰레기: 5, 플라스틱: 7, 유리: 11, 캔: 3, 종이: 1로 하였다

df = pd.DataFrame(file)
df1=df[['Latitude','Longitude','Rubbish','Plastics','Glass','Cans','Papers']]
df1['sum'] =df1['Rubbish']*5 +df1['Plastics']*7+df1['Glass']*11+df1['Cans']*3+df1['Papers']*1

이렇게 해도 중복되는 값은 아예 없앨 수는 없었지만 아까보다는 줄어 이대로 진행하기로 했다

불러낸 csv파일에는 위치 정보와 sum이 있는데 여기서 sum을 변수로 하는 우선순위큐를 만들었다
데이터프레임으로는 우선순위큐를 만들 수 없어 리스트로 구현하고 heapify를 사용하여 sum을 정렬하였다
리스트의 순서는 sum, Latitude,Longitude순으로 바꿔서 정렬하였고 이후에 보기 쉽게 엑셀파일 형식으로 바꾸었다

그리고 heappop을 이용하여 큰 숫자가 먼저 나오도록 하였고 이를 다시 엑셀 파일로 변환하였을 때

이런식으로 보여지게 하였다

이렇게 보면 heap의 형식으로 이루어졌으나 파이썬 모듈을 이용한 다른 방법으로도 표현해보았다

바로 내림차순 정리인데


위 사진은 sum의 값이 높은 순서대로 내림차순 정렬을 하였다

그리고 중복되는 위치의 값들이 있어 중복되는 값들을 삭제해주었다

마지막으로 정렬된 데이터 프레임에서의 sum 값과 위치 정보를 띄웠다

결과 및 효과

결과적으로 자연 분해가 오래되는 쓰레기가 많은 지역부터 순서대로 볼 수 있어 관리하는데 편리할 것이다
또한 시간을 효율적으로 사용할 수 있는데, 여기서 시간을 효율적으로 사용한다는 것은 자연분해가 되지 않는 쓰레기가 많은 지역부터 우선 순위대로 수거를 할 수 있어 수거가 필요한 곳부터 빠르게 일을 진행할 수 있는 것이다

두 번째로 비용적 문제를 해결할 수 있다
어느 한 곳을 가서 사진을 찍어오면 해당 쓰레기를 수거하기 전까지 다시 그 곳으로 가서 쓰레기의 양을 확인 할 필요가 없기 때문에 같은 곳을 두 번이상 방문하지 않아 이동하는데 드는 비용을 절감할 수 있다
또한 수거 후에도 한 번정도 방문하여 사진으로 남겨놓으면 다시 방문하지 않고도 그 지역의 쓰레기 정도를 확인할 수 있다

위 두가지 효과로 전 후 차이를 사진으로 비교하고 쓰레기의 종류를 업데이트하면서 지속적인 관리를 할 수 있다
각각의 항목에 다른 값들을 적용하였기 때문에 우선순위가 달라지고 수거를 진행한 후 다시 쓰레기가 늘어도 항목의 값만 바꿔주기 때문에 지속적인 관리에 용이하다

profile
배운 내용 적어보는 중

0개의 댓글