데이터분석 2025. 2. 19. 17:58
320x100
728x90

geopy 모듈은 지리적 좌표(위도, 경도)를 기반으로 거리 및 위치 정보를 다룰 수 있는 라이브러리로.
특히 위도(latitude), 경도(longitude) 데이터를 활용하여 두 지점 간의 실제 거리(km)를 계산할 때 많이 사용됨.

geopy가 필요한 이유

1. Haversine 공식보다 더 정확한 거리 계산 가능

  • 지구가 완벽한 구체가 아니기 때문에, Haversine 공식은 오차가 발생할 수 있어.
  • geopy.distance.geodesic()은 지구의 타원체 모델(WGS-84)을 사용하여 보다 정확한 거리(km)를 반환해.

2. 위도/경도를 이용한 실시간 거리 계산 가능

  • 고객(lat, long)과 가맹점(merch_lat, merch_long) 간의 거리를 구하는 데 사용 가능.
  • 지도 데이터를 활용하는 머신러닝 및 GIS(지리정보시스템) 분석에서 필수적.

3. 간편한 사용법

  • geopy.distance.geodesic((위도1, 경도1), (위도2, 경도2)).kilometers
  • 한 줄 코드로 두 지점 간 거리(km)를 쉽게 구할 수 있음.

제가 설치후 해보니 몇번은 실행이 되는데 다른 시각화 그래프시도 하다보니 geopy모듈이 작동이 오류가 났습니다.

결국 해결하기 까지 아래 모든 과정을 적었습니다. 원인을 알고보니 아무것도 아니였습니다. ;;

그럼 아나콘다 프롬프트창에서 geopy설치까지 순서대로 적겠습니다.

아나콘다 프롬프트를 실행한다.

다시 확인 : 현재환경출력 확인 및 padas환경 활성화 및 확인 후 geopy 설치 명령 당연히 설치되었다고 메시지가 뜹니다.

conda env list는 현재 가상환경을 출력한다. 현재 활성화되어 있는 환경에 * 표시가 있다

conda activate pandas 명령을 실행하면 추가한 pandas가상환경을 활성화 한다.

그럼 아래 처럼 앞에 (pandas)부분이 표시되어 현재 활성화된 가상환경을 확인할 수 있다.

파이썬 패키지 관리자(pip)를 통해 ipykernel패키지를 pandas 가상환경에 설치한다.

pip install  geopy명령을 입력하고 실행 한번만 해주면됨.
(아래 아나콘다 설치 글 중간에 pip사용 내용이 있으니 참고하세요)

https://nesaram-health-1story.tistory.com/157

 

아나콘다 다운로드 설치

파이썬을 따로 설치 해도 되지만 아나콘다 배포판을 설치하면 판다스와 넘파이 등 데이터 분석에 필요한 필수 라이브러리들이 자동으로 기본 설치된다. 다운로드 하는것을 추천하며 아래는 가

nesaram-health-1story.tistory.com

아래 처럼 명령어 실행후 해당 pandas * 표시 확인후 설치 진행할것

pip install  geopy 으로 실행

이후 아나콘다 네비게이션에서 pandas로 선택하고 JupyterLab실행

#거리 컬럼 생성(고객과 가맹정 거리)
# geopy.distance의 geodesic 함수 임포트
from geopy.distance import geodesic
renew_df["distance"] = renew_df.apply(lambda row: geodesic((row["lat"], row["long"]), (row["merch_lat"], row["merch_long"])).kilometers, axis=1)
renew_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 491134 entries, 0 to 491133
Data columns (total 18 columns):
 #   Column      Non-Null Count   Dtype         
---  ------      --------------   -----         
 0   trans_time  491134 non-null  datetime64[ns]
 1   merchant    491134 non-null  object        
 2   category    491134 non-null  object        
 3   amt         491134 non-null  float64       
 4   gender      491134 non-null  object        
 5   city        491134 non-null  object        
 6   state       491134 non-null  object        
 7   lat         491134 non-null  float64       
 8   long        491134 non-null  float64       
 9   city_pop    491134 non-null  int64         
 10  job         491134 non-null  object        
 11  birthday    491134 non-null  datetime64[ns]
 12  unix_time   491134 non-null  int64         
 13  merch_lat   491134 non-null  float64       
 14  merch_long  491134 non-null  float64       
 15  is_fraud    491134 non-null  int64         
 16  age         491134 non-null  int32         
 17  distance    491134 non-null  float64       
dtypes: datetime64[ns](2), float64(6), int32(1), int64(3), object(6)
memory usage: 65.6+ MB

에러없이 거리 계산 geopy모듈 을 사용하여 새로운 distance 컬럼이 생성된걸 확인할 수 있다.

 

몇번은 실행이 되는데 다른 시각화 그래프시도 하다보니 geopy모듈이 작동이 끊히네요 뭔가 충돌하는거 같습니다.

여전히 JupyterLab에서 실행시 시간이 오래 걸리면서 문제여지가 있습니다.

여전히 오류메시지가 뜨네요.
그래서 다시 확인해 보니 아래 new_df를 잘못표기했습니다. dating_df로 표기했더니 오류가 없어지고 위에 distance라는 컬럼을 생성했다는걸 보여주네요. 코드를 적어내려갈때 왠만하면 순차적으로 하는걸 추천 합니다. 중간에 데이터프레임 명이 바뀌기도 하는데 저의 경우는 dating_df를 나중에 new_df로 수정해준 걸 다시 중간에 로드해서 체크하다 놓친거 같습니다. 결국 geopy 설치해서 실행에는 아무문제가 없었습니다.