이렇게 적혀있는 데이터들을
구글api를 이용하여
주소를 찾아
구 별로 나누어주는 작업을 해보자
우선 검색에 용이하도록
관서명의 데이터에서 왼쪽에는 서울, 오른쪽에는 서 대신 경찰서를 붙이는 작업
df['관서명'] = '서울 ' + df['관서명']
df['관서명'] = df['관서명'].str[ 0 : -1]
df['관서명'] = df['관서명'] + ' 경찰서'
이렇게 서울을 추가하고 서를 지우고 경찰서를 추가해도 좋지만
df['관서명'] = df['관서명'].str[ 0 : -1]
서울 + df['관서명'] + 경찰서
2줄로 끊으면 더욱 깔끔하겠다
pip install googlemaps
우선은 구글맵스 설치를 하고
import googlemaps
gmaps_key = " " # 자신의 key를 사용합니다.
gmaps = googlemaps.Client(key=gmaps_key)
response = gmaps.geocode('서울 중부 경찰서', language='ko')
response[0]
이 순서를 통하여 구글맵스의 키를 입력하여 허가를 받고 구글맵스를 사용한다
서울 중부 경찰서를 검색하여 얻은 결과값을 리스폰스에 저장하고
리스폰스를 열어보면
{'address_components': [{'long_name': '27',
'short_name': '27',
'types': ['premise']},
{'long_name': '수표로',
'short_name': '수표로',
'types': ['political', 'sublocality', 'sublocality_level_4']},
{'long_name': '중구',
'short_name': '중구',
'types': ['political', 'sublocality', 'sublocality_level_1']},
{'long_name': '서울특별시',
'short_name': '서울특별시',
'types': ['administrative_area_level_1', 'political']},
{'long_name': '대한민국', 'short_name': 'KR', 'types': ['country', 'political']},
{'long_name': '100-032', 'short_name': '100-032', 'types': ['postal_code']}],
'formatted_address': '대한민국 서울특별시 중구 수표로 27',
'geometry': {'location': {'lat': 37.56361709999999, 'lng': 126.9896517},
'location_type': 'ROOFTOP',
'viewport': {'northeast': {'lat': 37.5649660802915,
'lng': 126.9910006802915},
'southwest': {'lat': 37.5622681197085, 'lng': 126.9883027197085}}},
'partial_match': True,
'place_id': 'ChIJc-9q5uSifDURLhQmr5wkXmc',
'plus_code': {'compound_code': 'HX7Q+CV 대한민국 서울특별시',
'global_code': '8Q98HX7Q+CV'},
'types': ['establishment', 'point_of_interest']}
이러한 정보가 나오게 되는데
우리가 필요한건 '중구'라는 구 의 데이터
그리하여
response[0]['formatted_address']
'대한민국 서울특별시 중구 수표로 27'
중간에 'formatted_address' 로 전체 주소를 얻어내고
response[0]['formatted_address'].split()
['대한민국', '서울특별시', '중구', '수표로', '27']
스플릿으로 쪼개준 뒤에
response[0]['formatted_address'].split()[2]
'중구'
'중구' 만을 가져온다
근데 이 작업을 데이터가 3천개 있다고 했을때
3천번 순수 노가다로 언제 할 수 있을까?
그러니
def get_gu_name(name):
import googlemaps
gmaps_key = " " # 자신의 key를 사용합니다.
gmaps = googlemaps.Client(key=gmaps_key)
response = gmaps.geocode(name , language='ko')
gu_name = response[0]['formatted_address'].split()[2]
return gu_name
함수를 만들어준다
그 후에는
df['구이름'] = df['관서명'].apply(get_gu_name)
apply로 함수를 언급하여 전부 주소를 찾고 '구이름' 이라는 콜럼을 생성하여주자
컴퓨터가 알아서 잘 찾아와서 저장해주었다
'Python > MachineLearning' 카테고리의 다른 글
Regression - Data Preprocessing (3) - StandardScaler(), MinMaxScaler(), train_test_split() (0) | 2024.04.13 |
---|---|
Regression - Data Preprocessing (2) 문자열의 데이터처리( Label Encoding, One Hot Encoding) (0) | 2024.04.13 |
Regression - Data Preprocessing (1) - Nan처리, X와y의 데이터 분류 (0) | 2024.04.12 |
머신 러닝이란? - 기초 개념 (0) | 2024.04.12 |
피처스케일링 - 표준화(Standard), 정규화(MinMax) (0) | 2024.04.11 |