URL 상세 정보
통계자료
통계자료 API를 이용하는 요청변수, 출력변수, 샘플데이터를 제공하며 통계표선택(URL 생성) 방법 (분류와 항목정보가 파라메터로 URL에 포함되어 파라메터를 변경해가며 이용 가능)과
자료등록(자료등록 URL 생성) 방법 (자료등록 후 이용하여야 하며 URL 변경 불가) 2가지 방법으로 활용 가능합니다. 출력포맷으로 JSON과 SDMX를 제공합니다.
자료등록 방법
-
요청URL
https://kosis.kr/openapi/statisticsData.do?method=getList
-
요청변수
요청URL로 요청변수, 변수타입, 설명, 비고를 제공합니다 요청변수 변수타입 설명 비고 apiKey String 발급된 인증 key 필수 userStatsId String 사용자 등록 통계표 필수 prdSe String 수록주기 필수 시점기준 startPrdDe String 시작수록시점 선택 (시점기준 또는 최신자료기준 택1)
※설정이 없을경우 최근시점1개 조회endPrdDe String 종료수록시점 최신자료기준 newEstPrdCnt String 최근수록시점 개수 prdInterval String 수록시점 간격
ex) 2019, 2017, 2015 등 2개 시점 간격으로 추출시 [2] 입력format String 결과 유형(json) 필수 content String 헤더 유형(html, json) 선택
통계표선택 방법
-
요청URL
https://kosis.kr/openapi/Param/statisticsParameterData.do?method=getList
-
요청변수
요청URL로 요청변수, 변수타입, 설명, 비고를 제공합니다 요청변수 변수타입 설명 비고 apiKey String 발급된 인증 key 필수 orgId String 기관 ID 필수 tblId String 통계표 ID 필수 objL1 String 분류1(첫번째 분류코드) 필수 objL2 ~ objL8 String 분류2(두번째 분류코드) ~ 분류8(여덟째 분류코드) 선택 itmId String 항목 필수 prdSe String 수록주기 필수 시점기준 startPrdDe String 시작수록시점 선택 (시점기준 또는 최신자료기준 택1)
※설정이 없을경우 최근시점1개 조회endPrdDe String 종료수록시점 최신자료기준 newEstPrdCnt String 최근수록시점 개수 prdInterval String 수록시점 간격
ex) 2019, 2017, 2015 등 2개 시점 간격으로 추출시 [2] 입력format String 결과 유형(json) 필수 outputFields String 응답필드(출력변수 선택) 선택 -
출력결과
출력변수
출력변수로 출력변수,내용,설명을 제공합니다 출력변수 설명 형식 비고 ORG_ID 기관코드 VARCHAR2(40) TBL_ID 통계표ID VARCHAR2(40) TBL_NM 통계표명 VARCHAR2(300) C1 ~ C8 분류값 ID1 ~ 분류값 ID8 VARCHAR2(40) 2~8 분류값은
없을 경우 생략C1_OBJ_NM ~ C8_OBJ_NM 분류명1 ~ 분류명8 VARCHAR2(3000) C1_OBJ_NM_ENG ~ C8_OBJ_NM_ENG 분류 영문명1 ~ 분류 영문명8 VARCHAR2(3000) C1_NM ~ C8_NM 분류값 명1 ~ 분류값 명8 VARCHAR2(3000) C1_NM_ENG ~ C8_NM_ENG 분류값 영문명1 ~ 분류값 영문명8 VARCHAR2(3000) ITM_ID 항목 ID VARCHAR2(40) ITM_NM 항목명 VARCHAR2(3000) ITM_NM_ENG 항목영문명 VARCHAR2(3000) UNIT_ID 단위ID VARCHAR2(40) UNIT_NM 단위명 VARCHAR2(1000) UNIT_NM_ENG 단위영문명 VARCHAR2(1000) PRD_SE 수록주기 VARCHAR2(20) PRD_DE 수록시점 VARCHAR2(8) DT 수치값 VARCHAR2(100) LST_CHN_DE 최종수정일 VARCHAR2(8) -
통계자료 예제
(JSP, R, Python) -
샘플데이터 확인
파라미터(Input)
파라미터(Input)로 필드명,설명,조회조건을 제공합니다 요청변수 설명 조회조건 userStatsId 사용자 등록 통계표 prdSe 수록주기 startPrdDe 시점기준 시작수록시점 endPrdDe 종료수록시점 newEstPrdCnt 최신자료기준 최근수록시점 개수 prdInterval 수록시점 간격 결과(Output)
JSON 결과
주기코드 및 시점
※ 주기에 따른 시점
주기 | 주기변수 (prdSe) |
시점변수 입력형식 (startPrdDe, endPrdDe) |
|
---|---|---|---|
일 | D | YYYYMMDD | ex)20140101 |
월 | D | YYYYMM(MM:01~12) | ex)201401 |
격월 | M | YYYYMM(MM:홀수월) | ex)201401, 201403 |
분기 | Q | YYYYQQ(QQ:01~04) | ex)201401 |
반기 | S | YYYYHH(HH:01,02) | ex)201401 |
년 | Y | YYYY | ex)2014 |
2년 | Y | YYYY | ex)2014, 2016.. |
3년 | Y | YYYY | ex)2014, 2017.. |
4년 | Y | YYYY | ex)2014, 2018.. |
5년 | Y | YYYY | ex)2014, 2019.. |
10년 | Y | YYYY | ex)2014, 2024.. |
부정기 | IR | YYYY, YYYYMM, YYYYMMDD | ex)2014, 20140101.. |
응답필드
응답필드 명 | 응답필드 코드 |
---|---|
ORG_ID | 기관코드 |
TBL_ID | 통계표ID |
TBL_NM | 통계표명 |
OBJ_ID | 분류값ID |
OBJ_NM | 분류명 |
OBJ_NM_ENG | 분류 영문명 |
NM | 분류값 명 |
NM_ENG | 분류값 영문 |
ITM_ID | 항목 ID |
ITM_NM | 항목명 |
ITM_NM_ENG | 항목영문명 |
UNIT_NM | 단위명 |
UNIT_NM_ENG | 단위영문명 |
PRD_SE | 수록주기 |
PRD_DE | 수록시점 |
LST_CHN_DE | 최종수정일 |
주기코드 및 시점
※ 주기에 따른 시점
주기 | 설명 | 입력값 (prdSe) |
출력값 | |
---|---|---|---|---|
JSON (PRD_SE) |
SDMX (FREQ) |
|||
일 | 1일 주기 | D | D | D |
일 | 1개월 주기 | M | M | M |
분기 | 1개월 주기 | Q | Q | Q |
반기 | 3개월 주기 | H | H | H |
년 | 1년 주기 | Y | Y | Y |
2년 | 2년 주기 | Y | Y | Y |
3년 | 3년 주기 | Y | Y | Y |
4년 | 4년 주기 | Y | Y | Y |
5년 | 5년 주기 | Y | Y | Y |
10년 | 10년 주기 | Y | Y | Y |
부정기 | 1회한, 수시 등 | IR | IR | IR |
소스보기
소스
-
<!--
KOSIS OpenAPI를 이용하여 막대차트를 출력하는 예제입니다.
이 소스는 KOSIS API를 사용하는데 참고가 되도록 제공하는 것으로
사용자의 운영환경에 따라 수정작업이 필요합니다
* 유의사항 : Ajax를 활용하여 개발을 진행하실 때에는 CrossDomain으로 인한
통신문제가 발생 할 수 있습니다.
JSON 방식으로 제공받으실 때에는 개발홈페이지에 임의의 jsp를 생성하여
호출함으로써 CrossDomain에 대한 제약을 우회하실 수 있는 개발소스를 제공합니다.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=utf-8" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko">
<head>
<xml:namespace prefix="v"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>통계청 - 공유서비스</title>
<link type="text/css" rel="stylesheet" media="all" href="https://kosis.kr/openapi/ext/style/subCommon.css" />
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide02/js/dojo.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide02/js/json.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide02/js/ajax.js"></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/ext/script/jquery-1.6.1.min.js"></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide02/js/jquery.SimpleChart.js"></script>
<script type="text/javascript" language="JavaScript">
// window onload 되었을때 실행 함수
dojo.addOnLoad ( function() {
getList();
});
/****************************************************
* 통계자료 조회 함수
****************************************************/
function getList() {
// ajax 통신을 위한 파라메터를 변수에 담는다.
var paraObj = {
// 임의의 jsp 페이지를 호출함으로써 cross domain 제약을 우회할 수 있다. (devGuidePop.jsp 소스는 소스 하단에 제공)
url : "http://[개발자 홈페이지 주소]/devGuidePop.jsp?method=getList&key=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&format=json&userStatsId=openapisample/101/DT_1IN1502/2/1/20191106094026_1&prdSe=Y&newEstPrdCnt=3",
sync : true,
load : function(mapData, a, b) {
// 차트에 보여주기위해 값을 담고있을 배열변수를 선언
var aData = new Array();
// 데이터를 배열변수에 적재
for(var i=0;i<mapData.length;i++) {
aData[i] = [mapData[i].DT.replace(/,/gi,''), mapData[i].PRD_DE, 'pink'];
}
// 차트를 그리기위한 옵션을 정의
var options = {'BarSize': '20px', 'BarSpace': '2px', 'type' : 'horizontal', 'Font': '2px'}
// 차트를 화면에 출력
$("#chart2").SimpleChart(aData,options);
},
error : function ( resObj, e ) {
alert(dojo.toJson(resObj));
}
}
// ajax 통신 호출 함수
sendPost( paraObj );
}
</script>
</head>
<body>
<div id="chart2" style="padding-top:30px;"></div>
</body>
</html>
// cross domain 제약을 우회하기 위한 jsp (devGuidePop.jsp)
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:set var="method" ><%out.println(request.getParameter("method") == null ? "" : (request.getParameter("method"))); %></c:set>
<c:set var="key" ><%out.println(request.getParameter("key") == null ? "" : (request.getParameter("key"))); %></c:set>
<c:set var="userStatsId"><%out.println(request.getParameter("userStatsId") == null ? "" : (request.getParameter("userStatsId"))); %></c:set>
<c:set var="newEstPrdCnt"><%out.println(request.getParameter("newEstPrdCnt")== null ? "" : (request.getParameter("newEstPrdCnt"))); %></c:set>
<c:set var="prdSe" ><%out.println(request.getParameter("prdSe") == null ? "" : (request.getParameter("prdSe"))); %></c:set>
<c:set var="format" ><%out.println(request.getParameter("format") == null ? "" : (request.getParameter("format"))); %></c:set>
<c:import url="http://kosis.kr/openapi/Expt/statisticsData.do?method=&apiKey=&format=&userStatsId=&prdSe=&newEstPrdCnt=" charEncoding="utf-8"/> -
library(httr)
library(rvest)
library(jsonlite)
library(ggplot2)
rm(list = ls()) # 모든변수 초기화
# 환경변수에 사용자 key 정의 (환경변수 편집 usethis::edit_r_environ() )
# KOSIS_TOKEN = ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=
v_apiKey = Sys.getenv('KOSIS_TOKEN')
baseurl <- 'https://kosis.kr/openapi/statisticsData.do' # 요청URL
url_page <-
GET(
url = baseurl,
query = list(
method = 'getList',
format = 'json',
jsonVD = 'Y',
apiKey = v_apiKey %>% I(),
userStatsId = 'openapisample/101/DT_1IN1502/2/1/20191106094026_1', # 시계열 조회 키캆
prdSe = 'Y',
newEstPrdCnt = 3, # 최근수록시점 개수
prdInterval = 1 # 수록시점 간격
)
)
url_page %>% content(as = 'text', encoding = 'UTF-8') %>% fromJSON() -> json
df_lists <-
data.frame(
C1_NM = c(json$C1_NM),
ITM_NM = c(json$ITM_NM),
prd_de = c(json$PRD_DE),
dt = c(json$DT)
)
# 바차트
ggplot(df_lists, aes(x = prd_de, y = dt, fill = prd_de)) + xlab("시점") + ylab("") + ggtitle(json$TBL_NM[1]) + geom_bar(stat = "identity")
-
import json
# python 3.x 버전에서 사용 (2.x 버전이라면 from urllib import urlopen)
from urllib.request import urlopen
import matplotlib.pyplot as plt
# 한글 폰트 사용을 위해서 세팅
from matplotlib import font_manager, rc
font_path = "C:/Windows/Fonts/malgun.ttf"
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)
#url을 통해 json 데이터 가져오기
with urlopen("https://kosis.kr/openapi/statisticsData.do?method=getList&apiKey=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&format=json&jsonVD=Y&userStatsId=openapisample/101/DT_1IN1502/2/1/20191106094026_1&prdSe=Y&newEstPrdCnt=3") as url:
json_file = url.read()
py_json = json.loads(json_file.decode('utf-8'))
#변수 지정 및 데이터 저장
xAxis = []
yAxis = []
title = ''
for i, v in enumerate(py_json):
xAxis.append(v['PRD_DE']) #x축에 들어갈 데이터
yAxis.append(int(v['DT'])) #y축에 들어갈 데이터
if i == 0 :
title = v['TBL_NM'] #차트제목
#Bar차트 그리기
plt.bar(xAxis, yAxis)
plt.title(title)
#y축 수치를 안보이게 하는 코드. 필요에 따라 선택하여 사용
plt.gca().axes.yaxis.set_visible(False)
#Bar의 가운데에 text로 수치 표시
for i, v in enumerate(xAxis):
plt.text(v, yAxis[i], yAxis[i],
fontsize = 9,
color='blue',
horizontalalignment='center',
verticalalignment='bottom')
plt.show()
소스보기
소스
-
<!--
KOSIS OpenAPI를 이용하여 파이차트를 출력하는 예제입니다.
이 소스는 KOSIS API를 사용하는데 참고가 되도록 제공하는 것으로
사용자의 운영환경에 따라 수정작업이 필요합니다
* 유의사항 : Ajax를 활용하여 개발을 진행하실 때에는 CrossDomain으로 인한
통신문제가 발생 할 수 있습니다.
JSON 방식으로 제공받으실 때에는 개발홈페이지에 임의의 jsp를 생성하여
호출함으로써 CrossDomain에 대한 제약을 우회하실 수 있는 개발소스를 제공합니다.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=utf-8" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>통계청 - 공유서비스</title>
<link type="text/css" rel="stylesheet" media="all" href="https://kosis.kr/openapi/ext/style/subCommon.css" />
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide02/js/dojo.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide02/js/json.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide02/js/ajax.js"></script>
<script type="text/javascript" language="JavaScript">
var mapData;
// window onload 되었을때 실행 함수
dojo.addOnLoad ( function() {
getList();
});
/****************************************************
* 통계자료 조회 함수
****************************************************/
function getList() {
// ajax 통신을 위한 파라메터를 변수에 담는다.
var paraObj = {
// 임의의 jsp 페이지를 호출함으로써 cross domain 제약을 우회할 수 있다. (devGuidePop.jsp 소스는 소스 하단에 제공)
url : "http://[개발자 홈페이지 주소]/devGuidePop.jsp?method=getList&key=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&format=json&userStatsId=openapisample/101/DT_1IN1502/2/1/20191106094026_1&prdSe=Y&newEstPrdCnt=3",
sync : true,
load : function(resObj, a, b) {
// 차트에 보여주기위해 값을 담고있을 배열변수를 선언
mapData = resObj;
// 차트를 생성하기위한 함수 호출
chartShow();
},
error : function ( resObj, e ) {
alert(dojo.toJson(resObj));
}
}
// ajax 통신 호출 함수
sendPost( paraObj );
}
function chartShow(){
// 차트에 보여주기위해 값을 담고있을 배열변수를 선언
var data = new Array(mapData.length);
// 데이터를 배열변수에 적재
for(var i=0;i<mapData.length;i++) {
data[i] = mapData[i].DT;
}
// 파이차트를 출력하기위한 JavaScript Start
var canvas = document.getElementById("chartcanvas");
var context = canvas.getContext("2d");
var sw = canvas.width;
var sh = canvas.height;
var PADDING=50;
var colors = ["#7cfc00", "#0000ff", "#ff1493", "#66CDAA", "#ff00ff", "#FFD700"];
var center_X=sw/2; //원의 중심 x 좌표
var center_Y=sh/2; //원의 중심 y 좌표
var radius = Math.min(sw-(PADDING*2), sh-(PADDING*2)) / 2;
var angle = 0;
var total = 0;
for (var i in data) { total += Number(data[i]); } //데이터(data)의 총합 계산
for (var i = 0; i < data.length; i++) {
context.fillStyle = colors[i]; //생성되는 부분의 채울 색 설정
context.beginPath();
context.moveTo(center_X, center_Y); //원의 중심으로 이동
context.arc(center_X, center_Y, radius, angle, angle +(Math.PI*2*(data[i]/total)));
context.lineTo(center_X,center_Y);
context.fill();
angle += Math.PI*2*(data[i]/total);
}
// 파이차트를 출력하기위한 JavaScript End
}
</script>
</head>
<body>
<canvas id="chartcanvas" width="500" height="400"></canvas>
</body>
</html>
// cross domain 제약을 우회하기 위한 jsp (devGuidePop.jsp)
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:set var="method" ><%out.println(request.getParameter("method") == null ? "" : (request.getParameter("method"))); %></c:set>
<c:set var="key" ><%out.println(request.getParameter("key") == null ? "" : (request.getParameter("key"))); %></c:set>
<c:set var="userStatsId"><%out.println(request.getParameter("userStatsId") == null ? "" : (request.getParameter("userStatsId"))); %></c:set>
<c:set var="newEstPrdCnt"><%out.println(request.getParameter("newEstPrdCnt")== null ? "" : (request.getParameter("newEstPrdCnt"))); %></c:set>
<c:set var="prdSe" ><%out.println(request.getParameter("prdSe") == null ? "" : (request.getParameter("prdSe"))); %></c:set>
<c:set var="format" ><%out.println(request.getParameter("format") == null ? "" : (request.getParameter("format"))); %></c:set>
<c:import url="http://kosis.kr/openapi/Expt/statisticsData.do?method=&apiKey=&format=&userStatsId=&prdSe=&newEstPrdCnt=" charEncoding="utf-8"/> -
library(httr)
library(rvest)
library(jsonlite)
library(ggplot2)
rm(list = ls()) # 모든변수 초기화
# 환경변수에 사용자 key 정의 (환경변수 편집 usethis::edit_r_environ() )
# KOSIS_TOKEN = ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=
v_apiKey = Sys.getenv('KOSIS_TOKEN')
baseurl <- 'https://kosis.kr/openapi/statisticsData.do' # 요청URL
url_page <-
GET(
url = baseurl,
query = list(
method = 'getList',
format = 'json',
jsonVD = 'Y',
apiKey = v_apiKey %>% I(),
userStatsId = 'openapisample/101/DT_1IN1502/2/1/20191106094026_1', # 시계열 조회 키캆
prdSe = 'Y',
newEstPrdCnt = 3, # 최근수록시점 개수
prdInterval = 1 # 수록시점 간격
)
)
url_page %>% content(as = 'text', encoding = 'UTF-8') %>% fromJSON() -> json
df_lists <-
data.frame(
C1_NM = c(json$C1_NM),
ITM_NM = c(json$ITM_NM),
prd_de = c(json$PRD_DE),
dt = c(json$DT)
)
# 파이차트 비율 라벨 값
pct <-
round(as.numeric(df_lists$dt) / sum(as.numeric(df_lists$dt)) * 100, 1)
df_lists <- data.frame(df_lists, pct = pct)
# 파이차트
ggplot(df_lists, aes(
x = factor(1),
y = '',
fill = factor(prd_de)
)) +
geom_bar(stat = 'identity') +
theme_void() +
ggtitle(json$TBL_NM[1]) +
coord_polar('y', start = 0) +
geom_text(aes(label = paste0(round(pct, 1), '%')),
position = position_stack(vjust = 0.5))
-
import json
# python 3.x 버전에서 사용 (2.x 버전이라면 from urllib import urlopen)
from urllib.request import urlopen
import matplotlib.pyplot as plt
# 한글 폰트 사용을 위해서 세팅
from matplotlib import font_manager, rc
font_path = "C:/Windows/Fonts/malgun.ttf"
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)
#url을 통해 json 데이터 가져오기
with urlopen("https://kosis.kr/openapi/statisticsData.do?method=getList&apiKey=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&format=json&jsonVD=Y&userStatsId=openapisample/101/DT_1IN1502/2/1/20191106094026_1&prdSe=Y&newEstPrdCnt=3") as url:
json_file = url.read()
py_json = json.loads(json_file.decode('utf-8'))
#변수 지정 및 데이터 저장
labels = []
ratio = []
title = ''
for i, v in enumerate(py_json):
labels.append(v['PRD_DE']) #년도 데이터
ratio.append(v['DT']) #값/비율 데이터
if i == 0 :
title = v['TBL_NM'] #차트제목
#Pie차트 그리기
plt.pie(ratio, labels=labels, autopct='%.1f%%')
plt.title(title)
plt.show()
소스보기
소스
-
<!--
KOSIS OpenAPI를 이용하여 통계표를 출력하는 예제입니다.
이 소스는 KOSIS API를 사용하는데 참고가 되도록 제공하는 것으로
사용자의 운영환경에 따라 수정작업이 필요합니다
* 유의사항 : Ajax를 활용하여 개발을 진행하실 때에는 CrossDomain으로 인한
통신문제가 발생 할 수 있습니다.
JSON 방식으로 제공받으실 때에는 개발홈페이지에 임의의 jsp를 생성하여
호출함으로써 CrossDomain에 대한 제약을 우회하실 수 있는 개발소스를 제공합니다.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=utf-8" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>통계청 - 공유서비스</title>
<link type="text/css" rel="stylesheet" media="all" href="https://kosis.kr/openapi/ext/style/subCommon.css" />
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide01/js/dojo.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide01/js/json.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide01/js/ajax.js"></script>
<script type="text/javascript" language="JavaScript">
// window onload 되었을때 실행 함수
dojo.addOnLoad ( function() {
getList();
});
/****************************************************
* 통계자료 조회 함수
****************************************************/
function getList(vwcd, listLev, parentId) {
// ajax 통신을 위한 파라메터를 변수에 담는다. (통계자료)
var paraObj = {
// 임의의 jsp 페이지를 호출함으로써 cross domain 제약을 우회할 수 있다. (devGuidePop.jsp 소스는 소스 하단에 제공)
url : "http:[개발자 홈페이지 주소]/devGuidePop.jsp?method=getList&key=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&format=json&userStatsId=openapisample/101/DT_1IN1502/2/1/20191106094026_1&prdSe=Y&newEstPrdCnt=3",
sync : true,
load : function(mapData, a, b) {
var strTable = "";
// 조회된 결과를 이용하여 통계표 작성
strTable += "<h5>" + mapData[0].TBL_NM + "</h5>";
strTable += "<p style='position:absolute; top:32px; left:450px;'>단위 : " + mapData[0].UNIT_NM + "</p>";
strTable += "<table class='TB02' style='margin-top:15px;width:500px;'>";
strTable += "<thead>";
strTable += "<tr>";
strTable += "<th class='fst al_C' scope='col'>시점</th>";
strTable += "<th scope='col'>" + mapData[0].ITM_NM + "(" + mapData[0].C1_NM + ")" + "</th>";
strTable += "</tr>";
strTable += "</thead>";
strTable += "<tbody>";
for(var i=0;i<mapData.length;i++) {
strTable += "<tr>";
strTable += "<td class='al_C'>" + mapData[i].PRD_DE + "</td>";
strTable += "<td class='al_C'>" + mapData[i].DT.replace(/,/gi,'') + "</td>";
strTable += "</tr>";
}
strTable += "</tbody>";
strTable += "</table>";
document.getElementById("content").innerHTML = strTable;
},
error : function ( resObj, e ) {
alert(dojo.toJson(resObj));
}
}
// ajax 통신 호출 함수
sendPost( paraObj );
// ajax 통신을 위한 파라메터를 변수에 담는다. (출처정보)
var paraObj = {
// 임의의 jsp 페이지를 호출함으로써 cross domain 제약을 우회할 수 있다.
url : "http://kosis.kr/openapi/devGuidePop.jsp?method=getMeta&key=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&type=SOURCE&format=json&orgId=101&tblId=DT_1B01003",
sync : true,
load : function(mapData, a, b) {
var strTable = "";
// 조회된 결과를 이용하여 출처 작성
strTable += "<p style='position:absolute; top:250px; '>출처 : " + mapData[0].JOSA_NM + "</p>";
document.getElementById("content").innerHTML += strTable;
},
error : function ( resObj, e ) {
alert(dojo.toJson(resObj));
}
}
// ajax 통신 호출 함수
sendPost( paraObj );
}
</script>
</head>
<body>
<div id="content" style="padding-top:30px;"></div>
</body>
</html>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:set var="method" ><%out.println(request.getParameter("method") == null ? "" : (request.getParameter("method"))); %></c:set>
<c:set var="key" ><%out.println(request.getParameter("key") == null ? "" : (request.getParameter("key"))); %></c:set>
<c:set var="userStatsId"><%out.println(request.getParameter("userStatsId") == null ? "" : (request.getParameter("userStatsId"))); %></c:set>
<c:set var="newEstPrdCnt"><%out.println(request.getParameter("newEstPrdCnt")== null ? "" : (request.getParameter("newEstPrdCnt"))); %></c:set>
<c:set var="prdSe" ><%out.println(request.getParameter("prdSe") == null ? "" : (request.getParameter("prdSe"))); %></c:set>
<c:set var="format" ><%out.println(request.getParameter("format") == null ? "" : (request.getParameter("format"))); %></c:set>
<c:set var="type" ><%out.println(request.getParameter("type") == null ? "" : (request.getParameter("type"))); %></c:set>
<c:set var="orgId" ><%out.println(request.getParameter("orgId") == null ? "" : (request.getParameter("orgId"))); %></c:set>
<c:set var="tblId" ><%out.println(request.getParameter("tblId") == null ? "" : (request.getParameter("tblId"))); %></c:set>
<c:import url="http://kosis.kr/openapi/Expt/statisticsData.do?method=&apiKey=&format=&userStatsId=&prdSe=&newEstPrdCnt=&tblId=&orgId=&type=" charEncoding="utf-8"/> -
library(httr)
library(rvest)
library(jsonlite)
library(dplyr)
rm(list = ls()) # 모든변수 초기화
v_apiKey = Sys.getenv('KOSIS_TOKEN')
baseurl <- 'https://kosis.kr/openapi/statisticsData.do' # 요청URL
url_page <-
GET(
url = baseurl,
query = list(
method = 'getList',
format = 'json',
jsonVD = 'Y',
apiKey = v_apiKey %>% I(),
userStatsId = 'openapisample/101/DT_1IN1502/2/1/20191106094026_1',
# 시계열 조회 키캆
prdSe = 'Y',
newEstPrdCnt = 3 # 최근수록시점 개수
)
)
url_page %>% content(as = 'text', encoding = 'UTF-8') %>% fromJSON() -> json
df_lists <- data.frame()
df_lists <- cbind(json$PRD_DE)
df_lists <- cbind(df_lists, json$DT)
# 사용자가 선택한 통계 자료의 분류 갯수에 따라 변경
# 샘플소스의 key는 1개분류, 1개 항목 지정됨
colnames(df_lists) <-
c("시점", paste(json$ITM_NM[1], "(", json$C1_NM[1], ")" , sep = ""))
View(df_lists)
-
import json
# python 3.x 버전에서 사용 (2.x 버전이라면 from urllib import urlopen)
from urllib.request import urlopen
import matplotlib.pyplot as plt
# 한글 폰트 사용을 위해서 세팅
from matplotlib import font_manager, rc
font_path = "C:/Windows/Fonts/malgun.ttf"
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)
#url을 통해 json 데이터 가져오기
with urlopen("https://kosis.kr/openapi/statisticsData.do?method=getList&apiKey=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&format=json&jsonVD=Y&userStatsId=openapisample/101/DT_1IN1502/2/1/20191106094026_1&prdSe=Y&newEstPrdCnt=3") as url:
json_file = url.read()
py_json = json.loads(json_file.decode('utf-8'))
#변수 지정 및 데이터 저장
data = []
for i, v in enumerate(py_json):
value = []
value.append(v['PRD_DE'])
value.append(v['DT'])
data.append(value)
#Table 만들기
fig, ax = plt.subplots(1,1)
column_labels=["시점", "총인구(전국)"]
ax.axis('tight')
ax.axis('off')
ax.table(cellText=data,colLabels=column_labels,colColours =["yellow"] * 2, loc="center", cellLoc='center')
plt.show()