추가 데이터는 주소와 위경도를 수집한다. 추가로 데이터를 수집하기 위해 naver map api를 활용한다.
db에 저장해 두었던 데이터를 불러와 기관 이름을 리스트로 저장한 후 api를 활용해 정보를 가져왔다.
#---------- 데이터 불러오기
data_sql = """
SELECT * FROM programinfo;
"""
col_sql = """
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME="programinfo";
"""
result = read_table(data_sql)
cols = read_table(col_sql)
columns = [col[0] for col in cols]
df = pd.DataFrame(result, columns=columns)
print(df.shape)
#---------- naver api
url = "https://openapi.naver.com/v1/search/local.json"
naver_key = open("naver_api_key.txt", "r")
lines = naver_key.readlines()
lines = [line.strip() for line in lines]
naver_id = lines[0]
naver_pw = lines[1]
headers = {
"X-Naver-Client-Id": naver_id,
"X-Naver-Client-Secret": naver_pw
}
print(headers)
org_names = df['orgName'].tolist()
for idx, org_name in enumerate(org_names):
params = {"query": org_name}
res = requests.get(url, params=params, headers=headers)
try:
items = res.json()['items'][0] #dict
print(idx, org_name, items['mapx'], items['mapy'])
sql = """
INSERT INTO orgxy(orgName, address, roadAdress, x, y) VALUES(
'"""+org_name+"""',
'"""+items['address']+"""',
'"""+items['roadAdress']+"""',
"""+str(items['mapx'])+""",
"""+str(items['mapy'])+"""
);
"""
# print(sql)
insert_table(sql)
except:
# addr = ''
# road_addr = ''
print(idx, org_name, '', '')
sql = """
INSERT INTO orgxy(orgName) VALUES(
'"""+org_name+"""'
);
"""
# print(sql)
insert_table(sql)
추가데이터를 수집했으니 tableau prep을 활용해 전처리를 진행한다.
'Data Analysis > 청소년수련활동인증제' 카테고리의 다른 글
공공데이터api_데이터정제 1 - 데이터 하나만 남도록 설정 (0) | 2023.08.09 |
---|---|
공공데이터 api 활용 수집 이후 추가데이터수집 보완 (0) | 2023.08.08 |
데이터 탐색 (0) | 2023.08.02 |
공공데이터 api 활용 데이터 수집 (0) | 2023.08.01 |
청소년수련활동인증제란 (0) | 2023.08.01 |