python | geopy 라이브러리를 사용하여 두 좌표간 거리 구하기

2023. 5. 19. 17:05·TIL/python

geopy는 여러 지오코딩 웹 서비스를 위한 Python 라이브러리이다.

  • 지오코딩(Geocoding): 고유명칭(주소나 산, 호수의 이름 등)을 가지고 위도와 경도의 좌표값을 얻는 것

 

geopy 라이브러리를 활용하여 다음과 같은 두 좌표(위도, 경도)간의 거리를 구할 것이다.

lat, long은 고객 주소의 위경도, merch_lat, merch_long은 상점의 위경도이다.

 

geopy 라이브러리를 사용하기 위해 먼저 pip를 이용해 설치한다.

pip install geopy

 

geopy 라이브러리에서 거리 계산을 위해 필요한 distance 모듈을 import 해준다.

import geopy.distance

 

distance 모듈은 두 지점에 대한 위도와 경도를 튜플 형태로 받아 거리를 계산한다.

geopy.distance.distance((위도1, 경도1), (위도2, 경도2))

 

직접 위도와 경도를 입력하면 다음과 같이 거리가 출력된다.

geopy.distance.distance((36.0788, -81.1781), (36.011293, -82.048315))

 

위도와 경도가 하나의 변수가 아닌 각각의 변수로 존재하면 zip()을 활용하여 하나의 묶음으로 만들 수 있다.

# 상점 위도, 경도 합치기
data['merch_coord'] = pd.Series(zip(data['merch_lat'], data['merch_long'])) 

# 고객 위도, 경도 합치기
data['cust_coord'] = pd.Series(zip(data['lat'], data['long']))

 

이렇게 위경도 묶음을 Series로 만들고 거리를 계산한 결과를 새로운 컬럼 distance에 저장하는 코드는 다음과 같다.

구하고자 하는 단위를 위경도 뒤에 지정해주면 그에 맞게 거리를 계산한다. 여기서는 km 단위를 사용하였다.

data['distance'] = data.apply(lambda x: geopy.distance.distance(x['merch_coord'], x['cust_coord']).km, axis=1)

apply 함수를 사용해 전체 행에 적용하고 axis=1로 가로 방향 한 행씩 lambda 함수를 실행한다.

 

다음과 같이 data['distance']를 보면 모든 데이터에 대한 거리가 계산되었음을 볼 수 있다.

data['distance']

 

 

더 자세한 정보는 아래 링크에서 확인할 수 있다.

 

Welcome to GeoPy’s documentation! — GeoPy 2.3.0 documentation

Different services have different Terms of Use, quotas, pricing, geodatabases and so on. For example, Nominatim is free, but provides low request limits. If you need to make more queries, consider using another (probably paid) service, such as OpenMapQuest

geopy.readthedocs.io

 

데이터: https://media.githubusercontent.com/media/musthave-ML10/data_source/main/fraud.csv

 

저작자표시 (새창열림)
'TIL/python' 카테고리의 다른 글
  • 네이버 지도 리뷰 크롤링하기 with Selenium, BeautifulSoup
  • python | capitalize(), title() 함수 비교
  • pandas | str.split()을 사용하여 하나의 컬럼을 여러개로 나누기
  • pandas | describe()를 사용하여 object 데이터까지 확인하기
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (46)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
python | geopy 라이브러리를 사용하여 두 좌표간 거리 구하기
상단으로

티스토리툴바