230523 화
💡 목표
구별 담배꽁초 쓰레기통 데이터셋에 존재하는 주소에 위경도를 매치하여, 지도 시각화
구글 API 보다 카카오 API의 위경도가 더 정확하게 나온다는 팀원의 정보에 카카오맵 API 활용 예정
❗ 어려움 1 - 강남구 쓰레기통 설치 주소 형태
ex) 압구정로 14길 6(신사동 548-4)
- 도로명 주소 or 지번 주소 하나만 필요하지만, 설치주소 컬럼에 도로명주소(지번주소), 도로명주소가 혼재되어 있음
- 괄호('(')를 기준으로 split 후 0번째 값을 가져오도록 apply와 lambda 활용
- 주소 내 '앞'과 '맞은편'이 포함
- 공백(' ')을 기준으로 split
- 반복문 내 [-1] 인덱스 값이 '맞은편' 또는 '앞'이라면 [:-1]까지만 가져오도록 함.
- 주소 내 시와 구가 포함되어 있지 않음
- '서울특별시 강남구' + 형태로 더해줌
- 전체 주소 길이에 따라 출력되는 형태를 다르게 해 줌
- ex) len(값) == 1인 경우는 '--로 --길'로 끝남. 2이상인 경우 '--로 --길, 7'로 구체적인 주소가 더해져 있음
- 중복된 값
- 인덱스 23번과 24번 값이 동일해서 맵 API 함수를 돌리면 인덱스가 맞지 않다는 에러 발생
- drop_duplicates(ignore_index = True)
❗ 어려움 2 - 처음 사용하는 맵 API
- 입력값(주소)를 넣었을 때, 출력되는 형태 공부
- 참고한 블로그
address = '서울특별시 강남구 압구정로14길 6'
url = "https://dapi.kakao.com/v2/local/search/address.json?query={}".format(address)
headers = {"Authorization": 'KakaoAK 발급받은API'}
results = requests.get(url, headers=headers).json()['documents']
results
- 좌표변환 함수 공부
- 참고한 블로그 : https://blog.naver.com/rmsdbraos21/222426418569
- def GetLatLng(address) 함수
- 함수를 적용할 때는 빈 리스트 생성 > 반복문으로 리스트에 GetLatLng(i)한 값을 append 해줌.
- 도로명 주소가 존재하지 않아 IndexError 발생
- 설치 장소가 '도로 모퉁이'인 경우로, 입력된 도로명주소가 존재하지 않음. ex) 입력 정보 : 92길 28 (실제 주소는 27과 29만 존재)
- 근접한 곳의 위경도로 대체하고 싶으나, 모퉁이가 27번쪽 모퉁이인지, 29번쪽 모퉁이인지 알 수 없음
💬 현재 상황
- 도로명 주소가 존재하지 않은 값의 경우 제외하고 데이터프레임화 해둠
- 강남구, 동작구 완료
- 마포구의 경우 read_csv 부터 ParserError 발생해서 내일 다시 체크해 볼 예정
댓글