(EDA강의)Google Maps API 사용

지며리·2022년 11월 26일
0

<1차 가공데이터> - 경찰서 기준으로 분류된 데이터

<2차 가공데이터> - 행정구역 기준으로 분류된 데이터

Google Maps API를 사용하여 경찰서 기준으로 분류된 데이터를 행정구역 기준으로 분류된 데이터로 가공하자

# 특정 키워드를 검색하면 주소를 반환하는 gmaps를 만들어 보자.
import googlemaps

gmaps_key = "******개인이 구글계정으로 할당 받은 key값********"

gmaps = googlemaps.Client(key = gmaps_key)

연관 포스팅
구글맵 API 키 할당 받는 방법

상단에서 형성한 gmaps 객체의 geocode 메소드는 특정 키워드를 parameter로 넣어주면 딕셔너리 형태로 주소값을 반환한다.

gmaps.geocode("서울영등포경찰서", language = "ko")

tmp = gmaps.geocode("서울영등포경찰서", language = "ko")
tmp[0].get("formatted_address").split()

  1. 서울+str(경찰서 이름)+경찰서로 키워드를 형성해서 gmaps의 geocode 메소드 parameter에 넣어준다.

  2. 해당 리스트 내의 딕셔너리 key중 "formatted_address" 값으로 반환된 주소(value)를 공백으로 쪼갠 리스트를 받는다.(split())

  3. 리스트 중 "구"에 해당하는 item(인덱스=2)만 추출한다.

# "서울영등포경찰서" 키워드를 통해 "영등포구" 데이터 추출하기
tmp = gmaps.geocode("서울영등포경찰서", language = "ko")
tmp[0].get("formatted_address").split()[2]

이제 "구별"로 된 column을 생성한 뒤, 이 column에 경찰서별 행정구역을 표기하도록 데이터프레임을 확장하자.

 crime_station["구별"]= np.nan #컬럼 생성, 일단 NaN값으로 채움
 
 for idx, rows in crime_station.iterrows():
 	# for문에서 데이터프레임.iterrows()의 기능
 	# list의 enumerate처럼 data frame의 idx, rows를 순차적으로 반환
 
 	station_name = "서울" + str(idx) +"경찰서" #키워드 형성
    tmp = gmaps.geocode(station_name, language="ko") #키워드 검색
    
    temp_gu = tmp[0].get("formatted_address") # 주소 추출
    crime_station.loc[idx,"구별"] = temp_gu.split()[2] #행정구역만 추출

crime_station.head()

# column 명이 두 개로 나누어져 있는데 합치기
# 강도->검거, 강도-> 발생으로 column이 2개인데
# 강도검거, 강도발생으로 column이 1개가 되도록
# for문을 이용해서 대체할 column 리스트 생성
temp_list =[
    crime_station.columns.get_level_values(0)[n]\
    + crime_station.columns.get_level_values(1)[n]
	for n in range(0, len(crime_station.columns.get_level_values(0)))
]

crime_station.columns = temp_list

crime_station.head()

#가공한 데이터 중간 저장!
crime_station.to_csv(
	"../data/02. crime_in_Seoul_raw.csv", 
    sep =",", 
    encoding = "utf-8")
profile
쉽고 유익하게 널리널리

0개의 댓글