[Python] 공공데이터 포털의 OPEN API 사용 방법(2)
[Python] 공공데이터 포털의 OPEN API 사용 방법의 2부 지금 시작하도록 하겠습니다.
저번에는 공공데이터 포털의 open API 신청 방법 및 파이썬 코드 확인방법까지 알아보았습니다.
오늘은 파이썬으로 어떻게 하면 open API를 사용해 데이터를 불러올 수 있는지 알아보도록 합시다.
step1. 공공데이터 포털 접속 API 확인
공공데이터 포털 사이트: https://www.data.go.kr
위의 사이트에 접속 후 로그인을 해 줍니다.
마이페이지 > 오픈API > 개발계정
접속 후 1부에서 신청한 전국CCTV 표준데이터를 클릭해줍니다.
여기서 확인을 클릭해 주고
미리보기를 클릭해주면,
위와 같이 미리보기 창이 뜹니다. 거기서 빨간색 박스 표시를 한 url을 복사해줍니다.
그러면 아래와 같이 url이 나타납니다.
http://api.data.go.kr/openapi/tn_pubr_public_cctv_api?serviceKey=인증키&pageNo=1&numOfRows=100&type=xml
여기서 본인의 인증키를 입력하고 페이지시작(pageNo), 한번에 출력되는 행 갯수(numOfRows), json또는xml타입(type)을 원하는 대로 입력하면 됩니다.
이 url을 이용하여 파이썬으로 데이터를 불러와 보겠습니다.
저는 numOfRows = 10 , type =json 으로 설정하여 url을 사용하겠습니다.
http://api.data.go.kr/openapi/tn_pubr_public_cctv_api?serviceKey=인증키&pageNo=1&numOfRows=10&type=json
step2. 라이브러리 import 및 url입력
# 라이브러리 import
import requests
import pprint
import json
# url 입력
url = 'http://api.data.go.kr/openapi/tn_pubr_public_cctv_api?serviceKey=개인인증키입력&pageNo=1&numOfRows=10&type=json'
# url 불러오기
response = requests.get(url)
#데이터 값 출력해보기
contents = response.text
url을 불러오고 데이터 값을 출력해 보면
이렇게 출력이 됩니다. 한 눈에 보기 어려우니 예쁘게 출력해주는 pprint 라이브러리를 사용하여 출력해 봅시다.
# 데이터 결과값 예쁘게 출력해주는 코드
pp = pprint.PrettyPrinter(indent=4)
print(pp.pprint(contents))
그럼 위와 같이 예쁘게 출력이 됩니다.
step3. 문자열을 json으로 변경하기
여기서 위의 문자열을 json으로 변경해 줍시다.
#문자열을 json으로 변경
json_ob = json.loads(contents)
print(json_ob)
print(type(json_ob)) #json타입 확인
이제 json으로변경이 됐고 dict 타입임을 확인할 수 있습니다.
step4. 필요한 내용만 남기기
위를 보면 데이터의 내용에서 response 키 값의 body, body 속에 items 가 있고 우리가 원하는 정보가 거기 모두 들어있음을 확인할 수 있습니다. 이를 확인 후 아래와 같이 items내용만 꺼내보도록 합시다.
# 필요한 내용만 꺼내기
body = json_ob['response']['body']['items']
print(body)
그럼 이렇게 items의 내용만 출력이 됩니다.
step5. Dataframe으로 변환하기
이제 마지막 단계입니다. 위에서 작성한 body 변수에 저장된 내용을 pandas를 활용하여 Dataframe으로 만들어 줍니다.
# pandas import
import pandas as pd
# Dataframe으로 만들기
dataframe = pd.json_normalize(body)
print(dataframe)
그럼 이렇게 깔끔하게 DataFrame으로 저장된 것을 확인할 수 있습니다.
이것을 토대로 분석을 진행하시면 됩니다^o^
전체코드
#라이브러리 import
import requests
import pprint
import json
# url 입력
url = 'http://api.data.go.kr/openapi/tn_pubr_public_cctv_api?serviceKey=개인인증키입력&pageNo=1&numOfRows=10&type=json'
response = requests.get(url)
contents = response.text
# 데이터 결과값 예쁘게 출력해주는 코드
pp = pprint.PrettyPrinter(indent=4)
print(pp.pprint(contents))
## json을 DataFrame으로 변환하기 ##
#문자열을 json으로 변경
json_ob = json.loads(contents)
print(type(json_ob)) #json타입 확인
# 필요한 내용만 꺼내기
body = json_ob['response']['body']['items']
print(body)
# pandas import
import pandas as pd
# Dataframe으로 만들기
dataframe = pd.json_normalize(body)
print(dataframe)
마무리
1부에 이어 2부에서는 파이썬 코드로 어떻게 데이터를 불러오는지 알아보았습니다.
다른 자료들도 위의 방법을 적용하여 즐겁게 분석 하시길 바랍니다. ;-)
+10/14 json->dataframe으로 변환하는 코드 수정