본문 바로가기
Data Analysis/Python

[python] 서울시전월세_매물_위도,경도_구하기_GoogleMapAPI

by Hagrid 2023. 1. 6.
반응형

서울시전월세_매물_위도,경도_구하기_GoogleMapAPI

자 구글 드라이브 임포트 해주고

절대 GCP써서 구글드라이브로 불러오는건 아닙니다.

In [3]:
from google.colab import drive
drive.mount('/content/drive')
 
결과 : 
Mounted at /content/drive

구글맵스 깔아주고

In [24]:
 
!pip install googlemaps
OUT
Collecting googlemaps
  Downloading googlemaps-4.6.0.tar.gz (31 kB)
Requirement already satisfied: requests<3.0,>=2.20.0 in /usr/local/lib/python3.7/dist-packages (from googlemaps) (2.23.0)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests<3.0,>=2.20.0->googlemaps) (2021.10.8)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests<3.0,>=2.20.0->googlemaps) (2.10)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests<3.0,>=2.20.0->googlemaps) (1.24.3)
Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests<3.0,>=2.20.0->googlemaps) (3.0.4)
Building wheels for collected packages: googlemaps
  Building wheel for googlemaps (setup.py) ... done
  Created wheel for googlemaps: filename=googlemaps-4.6.0-py3-none-any.whl size=38554 sha256=5bb88261679510d62d1f9fabd192f6da0b177ad7463bdf2587025250fa1adbbf
  Stored in directory: /root/.cache/pip/wheels/80/db/c0/6d958585fa97b20e250bf437acf7e6e715b4809c2dd4e55367
Successfully built googlemaps
Installing collected packages: googlemaps
Successfully installed googlemaps-4.6.0

인증키넣어주고

import googlemaps
import pandas as pd
import numpy as np
import io

googlemaps_key = "인증키"
gmaps = googlemaps.Client(key=googlemaps_key)

 

서울시 읍면동 정보 넣어주고

그전에 구글 드라이브에 데이터 미리 넣어두었습니다.

파일 양식은 shp

import geopandas as gpd

seoul_file = "/content/drive/MyDrive/DATA/EMD_201905/TL_SCCO_EMD.shp"
seoul = gpd.read_file(seoul_file, encoding='euckr')
print(seoul.shape)
seoul.tail()
(5047, 4)

 

Out[7]:
 
컬럼명은 차례대로 
EMD_CD     EMD_ENG_NM     EMD_KOR_NM      geometry    

 

50130250 Daejeong-eup 대정읍 MULTIPOLYGON (((881168.350 1472982.219, 881161...
50130253 Namwon-eup 남원읍 MULTIPOLYGON (((910755.915 1486589.634, 910923...
50130259 Seongsan-eup 성산읍 MULTIPOLYGON (((943356.999 1498892.763, 943357...
50130310 Andeok-myeon 안덕면 MULTIPOLYGON (((888981.846 1471424.888, 888979...
50130320 Pyoseon-myeon 표선면 POLYGON ((932601.392 1479746.864, 932586.514 1...

지번주소가 잘 적혀있는 전월세 데이터 작성

 

In [16]:
charter_place = "/content/drive/MyDrive/DATA/서울시 전월세.xlsx"
charter = pd.read_excel(charter_place)
address = charter["지번주소"]
address = list(address)
address[:3]​
['서울특별시 강남구 일원동 741', '서울특별시 서초구 신원동 ', '서울특별시 서초구 내곡동 ']

서울시 강남구 일원동 741의 위치는

In [30]:
gmaps.geocode(charter['지번주소'][0])
Out[30]:
[{'address_components': [{'long_name': 'Irwon-dong',
    'short_name': 'Irwon-dong',
    'types': ['political', 'sublocality', 'sublocality_level_2']},
   {'long_name': 'Gangnam-gu',
    'short_name': 'Gangnam-gu',
    'types': ['political', 'sublocality', 'sublocality_level_1']},
   {'long_name': 'Seoul',
    'short_name': 'Seoul',
    'types': ['administrative_area_level_1', 'political']},
   {'long_name': 'South Korea',
    'short_name': 'KR',
    'types': ['country', 'political']},
   {'long_name': '135-230',
    'short_name': '135-230',
    'types': ['postal_code']}],
  'formatted_address': 'Irwon-dong, Gangnam-gu, Seoul, South Korea',
  'geometry': {'bounds': {'northeast': {'lat': 37.5012337, 'lng': 127.097854},
    'southwest': {'lat': 37.4719065, 'lng': 127.071837}},
   'location': {'lat': 37.4810133, 'lng': 127.0801089},
   'location_type': 'APPROXIMATE',
   'viewport': {'northeast': {'lat': 37.5012337, 'lng': 127.097854},
    'southwest': {'lat': 37.4719065, 'lng': 127.071837}}},
  'place_id': 'ChIJ_-QGG9OlfDURCahgltbY-qU',
  'types': ['political', 'sublocality', 'sublocality_level_2']}]

geometry 안의 'location': {'lat': 37.4810133, 'lng': 127.0801089}, 확인

In [31]:
geo_location = gmaps.geocode(charter['지번주소'][0])[0].get('geometry')

lat = geo_location['location']['lat']
lng = geo_location['location']['lng']

print(lat, lng)
37.4810133 127.0801089

리스트에 넣어서 새로운 데이터 프레임으로 만들기

In [33]:
 
lat, lng = [], []

for i, location in enumerate(charter.지번주소):
    try:
        geo_location = gmaps.geocode(location)[0].get('geometry')
        lat.append(geo_location['location']['lat'])
        lng.append(geo_location['location']['lng'])
    except:
        print(f"{i}번째 {(charter.iloc[i, 3])}의 좌표를 찾을 수 없음")
        lat.append(i)
        lng.append(i)
35번째 2022의 좌표를 찾을 수 없음
215번째 2022의 좌표를 찾을 수 없음
272번째 2022의 좌표를 찾을 수 없음
362번째 2021의 좌표를 찾을 수 없음
368번째 2022의 좌표를 찾을 수 없음
382번째 2022의 좌표를 찾을 수 없음
394번째 2022의 좌표를 찾을 수 없음
403번째 2022의 좌표를 찾을 수 없음
422번째 2022의 좌표를 찾을 수 없음
425번째 2022의 좌표를 찾을 수 없음
441번째 2022의 좌표를 찾을 수 없음
444번째 2022의 좌표를 찾을 수 없음
484번째 2022의 좌표를 찾을 수 없음
535번째 2022의 좌표를 찾을 수 없음
542번째 2022의 좌표를 찾을 수 없음
553번째 2022의 좌표를 찾을 수 없음
697번째 2022의 좌표를 찾을 수 없음
731번째 2022의 좌표를 찾을 수 없음
760번째 2022의 좌표를 찾을 수 없음
773번째 2022의 좌표를 찾을 수 없음
802번째 2022의 좌표를 찾을 수 없음
808번째 2022의 좌표를 찾을 수 없음
905번째 2022의 좌표를 찾을 수 없음
910번째 2022의 좌표를 찾을 수 없음
944번째 2022의 좌표를 찾을 수 없음
976번째 2022의 좌표를 찾을 수 없음
1071번째 2022의 좌표를 찾을 수 없음
1076번째 2022의 좌표를 찾을 수 없음
1126번째 2022의 좌표를 찾을 수 없음
1234번째 2022의 좌표를 찾을 수 없음
1248번째 2022의 좌표를 찾을 수 없음
1472번째 2022의 좌표를 찾을 수 없음
1559번째 2022의 좌표를 찾을 수 없음
1567번째 2022의 좌표를 찾을 수 없음
1584번째 2022의 좌표를 찾을 수 없음
1730번째 2022의 좌표를 찾을 수 없음
1751번째 2022의 좌표를 찾을 수 없음
1758번째 2022의 좌표를 찾을 수 없음
1889번째 2022의 좌표를 찾을 수 없음
2201번째 2022의 좌표를 찾을 수 없음

제발 잘나오게 해주세요

기도 한번 필수 

In [40]:
charter['lat'] = lat charter['lng'] = lng charter.head()
Out[40]:
지번코드기관코드일련번호접수년도자치구코드시자치구명법정동코드법정동명본번...임대면적전월세구분코드전월세구분보증금임대료계약년도계약일자건축년도latlng01234

 

1.168011e+18 3220064 175 2022 11680 서울특별시 강남구 11400 일원동 741 ... 121.71 4 준전세 130000 270 2022 20220115 2018.0 37.481013 127.080109
1.165011e+18 3210057 109 2022 11650 서울특별시 서초구 11100 신원동 0 ... 27.90 1 전세 20900 0 2022 20220226 2018.0 37.444674 127.061421
1.165011e+18 3210057 9000042 2022 11650 서울특별시 서초구 10900 내곡동 0 ... 49.33 3 준월세 1946 42 2022 20220216 2015.0 37.461771 127.051160
1.144011e+18 3130048 467 2022 11440 서울특별시 마포구 11000 노고산동 1 ... 32.34 2 월세 1000 95 2022 20220208 2004.0 37.556221 126.942077
1.144011e+18 3130048 445 2022 11440 서울특별시 마포구 11000 노고산동 1 ... 32.34 3 준월세 5000 70 2021 20211221 2004.0 37.556221 126.942077

5 rows × 26 columns

In [42]:
 
일단 파일 저장 먼저 !! 
charter.to_csv('/content/drive/MyDrive/DATA/서울시전월세.csv')
In [46]:
charter['임대료'].value_counts().plot();
In [47]:
charter['보증금'].value_counts().plot();
 
 
반응형

댓글