반응형
카카오 오픈 API
내가 가진 데이터셋에 위도, 경도가 없었다.
그래서 주소를 바탕으로 위도, 경도 좌표를 찾아주는 카카오 오픈 API(REST API)를 사용했다.
오픈 API(Open Application Programming Interface)
누구나 사용할 수 있도록 공개하고 제공하는 프로그래밍 인터페이스를 의미한다.
이는 특정 기능 구현이나 데이터 접근을 가능하게 한다.
예를 들어, 앱에서 지도를 볼 수 있는 기능을 구현할 때 사용한다.
위 사이트에 접속 후, [회원가입-내 애플리케이션[애플리케이션 추가하기]]를 진행한다.
애플리케이션을 추가하면 [앱 설정-요약 정보-앱 키]에 개인 키 값들이 주어진다.
이 중 REST API 키 값을 사용할 것이다.
주소로 위도, 경도 찾기
참고로 카카오 Dev 사이트에 로컬 API 구현 방법들이 정리되어 있다.
* 위 링크에서 주소 검색하기를 참조하면 된다.
갖고 있는 주소로 위도, 경도를 찾는 코드는 다음과 같다.
이때 위에서 받은 REST API 키 값을 붙여 넣기 해서 사용한다.
# requests 라이브러리 설치
!pip install requests
#라이브러리 import
import json
import requests
# REST API 키 저장
rest_api_key = "카카오에서 받은 자신의 REST API 키 값 붙여넣기"
# 요청 코드
def lat_long(address): # lat_long 함수 정의
url = "https://dapi.kakao.com/v2/local/search/address.json?query=" + address
headers = {"Authorization": "KakaoAK " + rest_api_key}
try:
response = requests.get(url, headers=headers) # url 요청
json_result = response.json() # json 데이터(주소 결과) 파싱
print(json.dumps(json_result, indent = 4, ensure_ascii = False)) # JSON 데이터 문자열 변환, 들여쓰기, 이스케이프 미처리 설정
address_xy = json_result['documents'][0]['address'] # json 파일 내 address 선택
return float(address_xy['x']), float(address_xy['y']) # address에서 경도, 위도 튜플 반환
except Exception as e: # 오류 발생 시 메세지 출력
print(e)
return None, None
위 코드와 아래 코드를 실행하면 다음과 같은 결과가 나온다.
*이를 통해 json_result['document'][0]['address']가 왜 쓰였는지 확실히 알 수 있다.
위도, 경도 값을 파일로 저장하기
lat_long()를 사용한 for문으로 주소만 담긴 csv 파일(address)의 '업소 주소' 컬럼을 끝까지 훑으며 위도, 경도 값을 리스트에 추가한다.
이렇게 값이 추가된 각각의 리스트는 'Lat', 'Long' 컬럼의 데이터로 저장된다.
# 리스트 초기화
latitudes = []
longitudes = []
# 주소 컬럼 csv 파일 불러오기
address = pd.read_csv("저장 경로.csv", encoding="cp949")
# 주소 컬럼 반복 함수
for addr in address['업소 주소']:
lat, long = lat_long(addr)
latitudes.append(lat) # 리스트에 위도 추가
longitudes.append(long) # 리스트에 경도 추가
# 위도, 경도 새 컬럼 추가
address['Lat'] = latitudes
address['Long'] = longitudes
# csv 파일 새로 저장
address.to_csv("저장 경로.csv", encoding="cp949", index=False)
아래는 csv 파일로 새로 저장한 결과이다.
이로써 카카오 오픈 API를 활용한 주소로 위도, 경도 구하기는 끝났다.
이제 열심히 구한 위도, 경도 값으로 folium 라이브러리를 활용한 시각화를 해보자!
반응형
'PYTHON > Python' 카테고리의 다른 글
Python 머신러닝 피처 스케일링과 min-max 정규화 기초 정리 (0) | 2024.03.28 |
---|---|
Python os 모듈 기초 정리 (0) | 2024.03.25 |
Python matplotlib 라이브러리 plt.plot() 기초 정리 (0) | 2024.03.15 |
Python matplotlib 색상표 정리 (0) | 2024.03.14 |
Python 문자열 길이, 자료형 요소 개수 반환 함수 len() 기본 정리 (2) | 2023.12.29 |