crime_station.index
현재 인덱스는 경찰서 이름이다. 구 이름으로 바꾸려면?
https://anaconda.org/conda-forge/googlemaps
구글맵 API에서 경찰서의 위도와 경도, 속한 구 정보를 얻어보자.
import googlemaps
gmaps_key = "인증키"
gmaps = googlemaps.Client(key=gmaps_key)
gmaps.geocode("서울영등포경찰서", language="ko")
필요한 정보는 'formatted_address', 'geometry'이다.
(위도 = latitude, 경도 = longitude)
tmp[0].get("formatted_address").split()[2]
tmp[0].get("geometry")["location"]['lat']
tmp[0].get("geometry")["location"]['lng']
데이터의 행-열/데이터 정보를 "튜플" 형태의 generator 객체로 반환
for idx, rows in crime_station.iterrows():
# '서울영등포경찰서' 처럼 만들어준다.
if idx in ["동작", "용산"]:
station_name = str(idx) + "경찰서"
else:
station_name = "서울" + str(idx) + "경찰서"
tmp = gmaps.geocode(station_name, language="ko")
tmp_gu = tmp[0].get("formatted_address")
lat = tmp[0].get("geometry")["location"]["lat"]
lng = tmp[0].get("geometry")["location"]["lng"]
crime_station.loc[idx, "구별"] = tmp_gu.split()[2]
crime_station.loc[idx, "lat"] = lat
crime_station.loc[idx, "lng"] = lng
왜인지 geocode()에 '서울동작경찰서', '서울용산경찰서'를 넣으면 빈 리스트가 반환된다. if문을 써서 '동작경찰서', '용산경찰서'로 변경했다.
# 컬럼 확인
crime_station.columns
crime_station.columns.get_level_values(0)
len(crime_station.columns.get_level_values(0))
type(crime_station.columns.get_level_values(1)[2]) # str
get_level_values()로 가져온 인덱스 리스트에 들어 있는 값이 문자열인 것을 이용하여 0레벨과 1레벨의 컬럼명을 합쳐준다.
tmp = [
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 = tmp
저장 한 번 하고 다음 단계로!😉
crime_station.to_csv("경로", sep=",", encoding="utf-8")