지난 포스팅에서는 R을 활용한 공공데이터 불러오기를 알아보았는데요.
혹시라도 R을 활용한 방법이 궁금하신 분들은 아래 2개의 포스팅 글을 참고하시면 됩니다.
이번에는 파이썬을 이용해서 공공데이터를 추출해 보도록 할게요.
추출하고자 하는 데이터는 R에서 활용한 데이터와 동일한 것으로 실습해 볼게요.
데이터 형식을 확인하기 위한 샘플데이터 확인하기
미리 보기 버튼을 클릭하시면,
아래와 같은 샘플데이터를 볼 수 있어요.
이를 참고해서 원하는 데이터를 추출해 보도록 할게요.
데이터 추출을 위한 파이썬 code(with 패키지)
# 데이터 호출을 위해 필요한 라이브러리 import
from urllib.parse import urlencode, unquote
import requests
import json
import pandas as pd
import math
import numpy as np
# url 입력
url = "http://apis.data.go.kr/1160100/service/GetFnCoBasiInfoService/getFnCoOutl"
# queryString 입력
queryString = "?" + urlencode(
{
"serviceKey": unquote("*****"), # 공공데이터 사이트 가입 시 받은 본인의 서비스 키 입력
"pageNo": 1,
"numOfRows": "10",
"resultType": "json",
"basDt": "20200408"
}
)
# 최종 요청 url 생성
queryURL = url + queryString
# API 호출
response = requests.get(queryURL)
# 딕셔너리 형태로 변환
r_dict = json.loads(response.text) # 우리가 필요한 데이터 부문만 가져와 저장
# 오픈 API 호출 결과 데이터의 개수 확인 및 저장
numOfRows = r_dict["response"]["body"]["numOfRows"]
# 전체 데이터의 개수 확인 및 저장
totCnt = r_dict["response"]["body"]["totalCount"]
# 총 오픈 API 호출 횟수 계산 및 저장
loopCount = math.ceil(totCnt/numOfRows)
# 전체 데이터를 저장할 객체 선언
finalTotalData = pd.DataFrame()
# 오픈 API 호출을 총 오픈 API 호출 횟수만큼 반복 실행
for i in np.arange(loopCount) :
# queryString 입력
queryString = "?" + urlencode(
{
"serviceKey": unquote("*****"),
"pageNo": i+1,
"numOfRows": "10",
"resultType": "json",
"basDt": "20200408"
}
)
# 최종 요청 url 생성
queryURL = url + queryString
# API 호출
response = requests.get(queryURL)
# 딕셔너리 형태로 변환
r_dict = json.loads(response.text)
# 데이터 프레임만 선택하여 doc 객체에 저장
doc = r_dict["response"]["body"]["items"]["item"]
# 추출한 데이터를 전체 데이터를 저장할 변수에 누적 저장
finalTotalData = pd.concat([finalTotalData, pd.DataFrame(doc)], axis = 0, ignore_index = True)
# CSV 파일로 저장하기
finalTotalData.to_csv("금융회사기업개요조회(json)_python.csv", index = False, encoding = "utf-8-sig")
위에 링크되어 있는 이전 포스트(R 활용) 내용의 결과와 비교해 보면,
동일한 데이터가 추출되었음을 확인할 수 있어요!
이상으로 오픈 API를 활용한 공공데이터를 Python을 활용해서 추출하는 방법에 대해서 알아보았습니다.
반응형
'Python > 데이터 다루기' 카테고리의 다른 글
Python에서 JSON을 사용하는 방법(for 초급자) (0) | 2022.05.13 |
---|---|
JSON에 대한 소개 (0) | 2022.05.08 |
데이터 분석을 위한 강력한 Pandas 함수 1 (0) | 2022.05.01 |
pandas를 활용한 데이터 정리 (0) | 2022.04.30 |
파일 입/출력(with 파이썬) (0) | 2022.03.01 |
댓글