<jupyter_start><jupyter_text>필요한 모듈들:pandas, urllib, json<jupyter_code>import pandas as pd
import spymaster as spy
import matplotlib.pyplot as plt
import numpy as np
from time import sleep
from datetime import datetime<jupyter_output><empty_output><jupyter_text>먼저 stores_raw.csv 압축 파일을 풀어주세요<jupyter_code>df = pd.read_csv('stores_raw.csv', encoding='utf-8', header=0)
print(df.head())
print(df.shape)<jupyter_output>address    구      년도        업소명    업종명  \
0           서울특별시 은평구 신사동  17번지 11호  2층  은평구  2014.0       2월7일  일반음식점   
1  서울특별시 은평구 수색동  75번지  DMC 자이상가 1층108호  은평구  2014.0      오봉도시락  휴게음식점   
2            서울특별시 은평구 대조동  185번지 16호    은평구  1999.0       명송회집  일반음식점   
3     서울특별시 은평구 갈현동  506번지 9호  103,104호  은평구  2013.0    장충왕족발보쌈  일반음식점   
4            서울특별시 은평구 응암동  72번지 3호  1층  은평구  2016.0  예쁜 뽀들이 함바  일반음식점   

      업태명  영업자시작년도      영업자시작일        폐업일자    폐업년도  
0   호프/통닭   2014.0  20140224.0         NaN     NaN  
1  일반조리판매   2014.0  20141010.0         NaN     NaN  
2      분식   2013.0  20130308.0  20131220.0  2013.0  
3   호프/통닭   2013.0  20130808.0  20141226.0  2014.0  
4      한식   2016.0  20161129.0         NaN     NaN  
(334399, 10)<jupyter_text>Naver Developers에 application 등록[여기](https://developers.naver.com/apps//myapps)들어가셔서 1. 네이버 로그인2. 애플리케이션 등록3. 앱 이름 아무거나, 사용 API는 **지도(웹)** 추가, 비로그인 오픈 API 서비스 환경은 **WEB 설정**4. 웹 서비스 url은 그냥 http://naver.com 로 하셔도 됩니다  크롤링 옵션 입력 agent_rank: 각자 해당되는 숫자를 agent_rank로 지정해주시면 됩니다.    - 진영님: 0 (0 - 69999)    - 다혜님: 1 (70000 - 139999)    - 다현님: 2 (140000- 209999)    - 차차님: 3 (210000 - 279999)    - 예은님: 4 (280000 - 334399)Geocoder: 각자 등록한 네이버 애플리케이션의 클라이언트 ID, Secret을 입력해주시면 됩니다.  - 'Naver-Client-ID', 'Naver-Client-Secret'<jupyter_code>agent_rank = 4
Geocoder = spy.Agent('Naver-Client-ID', 'Naver-Client-Secret')
agent = Geocoder

if agent_rank == 4:
    part_start = 70000*agent_rank
    part_end = part_start + 70000
    df_part = df[part_start:]
else:    
    part_start = 70000*agent_rank
    part_end = part_start + 70000
    df_part = df[part_start:part_end]
    
# 각자 처리해야 할 데이터 인덱스 시작, 끝     
print(df_part.iloc[0].name, df_part.iloc[-1].name,)
def naver_get_coor(agent, row):
    address = row.address
    if row.name % 100 == 0:
        sleep(1.5)
    try:
        coor = spy.get_coor(agent, address)
        return(coor['lat'], coor['lng'])
    except: 
        return np.nan
def save_csv(df_current, progress_start, progress_end):
    fname = "./geocrawls/stores_part_%d_%d.csv" % (progress_start, progress_end)
    df_current.to_csv(fname, encoding='utf-8', index=None)
    print(fname)
progress_quota = df_part.shape[0]
progress = 0

while progress < progress_quota:
    df_current = df_part.iloc[progress:(progress+1000)]
    df_current['coor'] = df_current.apply(lambda row: naver_get_coor(agent, row), axis=1)
    save_csv(df_current, df_current.iloc[0].name, df_current.iloc[-1].name)
    # 파일이 저장된 시간 출력
    print('progress: ', progress-1000, '-', progress, datetime.now())
    sleep(np.random.choice(5, 1))
    progress += 1000<jupyter_output>C:\Users\Delta\AppData\Local\Continuum\anaconda3\lib\site-packages\ipykernel_launcher.py:6: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
{'fraction_non_alphanumeric': 0.10715337062113629, 'fraction_numerical': 0.08507506623491316, 'mean_word_length': 2.9557625145518043, 'pattern_counts': {'":': 0, '<': 12, '<?xml version=': 0, '>': 11, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '117448', 'license': 'MIT', 'n_tokens_mistral': 1830, 'n_tokens_neox': 1968, 'n_words': 328, 'path': 'D/geocoding_pub/geocrawl_Geocoder_pub.ipynb', 'repo_name': 'seoyeongsong/m3', 'size': '3397'}